linux 自动运行drcp,11g新特性:常驻连接池DRCP(转)

11g新特性:常驻连接池DRCP之一

在oracle中,进程的频繁创建是一个比较消耗资源的开消,在11g之前,oracle提供专用器进程与共享服务器进程供用户选择适合自己的进程机制,在11g中,oracle又推出DRCP(database resident connection pool),类似于sqlrelay那种轻量级中间件的进程机制为客户服务,DRCP适用于web application(比如php/apache),可以提供成千上万的连接,使用DRCP可以共享主机资源。

一 什么时间使用DRCP

1 使用较小内存的、大量的客户端连接

2 客户端应用是相似的,可以共享或重用会话

3 客户端占用数据库连接的周期相当短

4 会话不需要跨客户请求

5 客户端有众多的主机与进程

二 Dedicated Servers,Shared Servers与DRCP的区别

resserver.php?blogId=96&resource=drcp.GIF

三Dedicated Servers,Shared Servers与DRCP的内存需求

一般情况下,由于每个会话需要消耗400k的内存,每个进程需要消耗4m的内存,现在我们以DRCP的pool size是100,shared server的shared server进程是100为例,假如有5000个客户端连接到这些环境,则这些主机的内存分配如下:

A Dedicated Server

Memory used = 5000 X (400 KB + 4 MB) = 22 GB

B Shared Server

Memory used = 5000 X 400 KB + 100 X 4 MB = 2.5 GB

Out of the 2.5 GB, 2 GB is allocated from the SGA.

C Database Resident Connection Pooling

Memory used = 100 X (400 KB + 4 MB) + (5000 X 35KB)= 615 MB

四 使用DRCP时,当实例有活动pooled server,有以下限制:

1 不能shutdown database;

2 不能停掉DRCP;

3 不能用database link连接到不同实例的DRCP;

4 不能使用Advanced Security Option (ASO),比如encryption等

五 如何在DB中配置DRCP?

在11g中,系统默认包含了一个连接池:SYS_DEFAULT_CONNECTION_POOL,这个池默认被创建,但默认该池是不启动的,如果要启动默认的连接池,必须显式地执行启动DRCP的命令,oracle提供dbms_connection_pool package来执行这个工作,如果连接池被显式地启动,必须显式地被停掉,当实例宕掉时,如果DRCP是活动的,则实例启动时,DRCP也将自动实动。

启动DRCP需要以下步骤:

A 用sysdba权限连接到sqlplus

B 执行exec dbms_connection_pool.start_pool();

C 查看DRCP的状态

六 客户端如何连接到DRCP?

如果是专用服务器连接,则SERVER=DEDICATED,如果是DRCP连接,则SEVER=POOLED。如果在tnsnames.ora中指定了SERVER=POOLED,但并没有在实例中启动DRCP,则当客户请求连接时,DB会报ORA-12520错误。如果要指定客户端请求到DRCP,则客户端的tnsnames.ora中的连接字符串必须指定连接类型是POOLED,配置方式如下所示:

dhcp11g =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.5.26)(PORT = 1521))

(CONNECT_DATA =

(SERVER = POOLED)

(SERVICE_NAME = dbtest)

)

)

说明:11g的客户端才可以使用DRCP,如果10g的客户端在tnsnames.ora中指定了SERVER=POOLED,则连接时报ORA-56606。

六 如何在DB中掉停DRCP

A 用sysdba权限连接到sqlplus

B 执行exec dbms_connection_pool.stop_pool();

七 如何调整DRCP的配置?

DRCP启动时使用的是默认配置参数,如果要调整DRCP的配置参数,需要调用dbms_connection_pool包的configure_pool过程去调整DHCP的高级选项,也可以调用dbms_connection_pool包的alter_param过程只仅改指定的参数而不影响其它的参数,DRCP可调整的参数可以查看dba_cpool_info表,每个参数的具体含义请自己查阅administrator guide手册的p128/129页,具体的语法如下所示:

SQL> exec print_table('select * from dba_cpool_info');

CONNECTION_POOL : SYS_DEFAULT_CONNECTION_POOL

STATUS : ACTIVE

MINSIZE : 4

MAXSIZE : 40

INCRSIZE : 2

SESSION_CACHED_CURSORS : 20

INACTIVITY_TIMEOUT : 300

MAX_THINK_TIME : 120

MAX_USE_SESSION : 500000

MAX_LIFETIME_SESSION : 86400

-----------------

SQL> exec dbms_connection_pool.alter_param ('','minsize','10');

PL/SQL procedure successfully completed.

SQL> exec print_table('select * from dba_cpool_info');

CONNECTION_POOL : SYS_DEFAULT_CONNECTION_POOL

STATUS : ACTIVE

MINSIZE : 10

MAXSIZE : 40

INCRSIZE : 2

SESSION_CACHED_CURSORS : 20

INACTIVITY_TIMEOUT : 300

MAX_THINK_TIME : 120

MAX_USE_SESSION : 500000

MAX_LIFETIME_SESSION : 86400

-----------------

PL/SQL procedure successfully completed.

八 如何恢复DHCP的默认选项

A 用sysdba权限连接到sqlplus

B 执行exec dbms_connection_pool.restore_defaults;

九 关于DHCP相关的字典

dba_cpool_info

v$cpool_stats

v$cpool_cc_stats

十 测试DHCP的总结

在实际的使用,如果要使用DHCP,则需要注意在tnsnames.ora中创建两个TNS连接字符串,将前台短的连接都指向DHCP连接,把后台长的连接则向DEDICATED SERVER连接,这样就可以满足一般轻量权的web application.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值