[20160513]重温11g DRCP.txt

[20160513]重温11g DRCP.txt

--以前做过一次测试,再也没有使用过.
[20130730]11G的DRCP特性.txt => http://blog.itpub.net/267265/viewspace-767493/

http://www.oracle-base.com/articles/11g/DatabaseResidentConnectionPool_11gR1.php

Database Resident Connection Pool (DRCP) in Oracle Database 11g Release 1

The database resident connection pool (DRCP) reduces the resource requirements of applications that currently don't
support connection pooling, either because it is not supported by the application infrastructure, or it has not been
implemented. The pool is managed using the DBMS_CONNECTION_POOL package. Although the package appears to support
multiple connection pools, the document states that it currently only supports the default pool name
(SYS_DEFAULT_CONNECTION_POOL).

The DRCP is started and stopped using the START_POOL and STOP_POOL procedures respectively.

DRCP对应的应用需求是"短会话、高并发"的应用场景。所以DRCP服务的连接必然是短时间交互。Inactivity_timeout参数就是设置这个
timeout值。如果会话连接到这个连接之后,超过一定时间没有inactive交互,Oracle会自动将其断开。Server Process被释放回连接池。

配置connection pool,我们可以使用dbms_connection_pool方法configure_pool。
也可以使用dbms_connection_pool的方法alter_param.

-- 感觉我们现在的一些应用使用php连接数据库,应该使用这种模式.而且我们会话就是读取数据,不存在dml语句,感觉比较合适.

1.重复测试环境:
SYS@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SYS@book> select * from dba_cpool_info;
CONNECTION_POOL             STATUS   MINSIZE    MAXSIZE   INCRSIZE SESSION_CACHED_CURSORS INACTIVITY_TIMEOUT MAX_THINK_TIME MAX_USE_SESSION MAX_LIFETIME_SESSION  NUM_CBROK MAXCONN_CBROK
--------------------------- -------- ------- ---------- ---------- ---------------------- ------------------ -------------- --------------- -------------------- ---------- -------------
SYS_DEFAULT_CONNECTION_POOL INACTIVE       4         40          2                     20                300            120          500000                86400          1         40000

--当前没有激活!访问这个视图dba_cpool_info本质是查询sys.cpool$.

SYS@book> exec dbms_connection_pool.start_pool;
PL/SQL procedure successfully completed.

$ ps -ef | grep ora_[nl]0
oracle   21436     1  0 09:06 ?        00:00:00 ora_n000_book
oracle   21516     1  0 09:20 ?        00:00:00 ora_l000_book
oracle   21518     1  0 09:20 ?        00:00:00 ora_l001_book
oracle   21520     1  0 09:20 ?        00:00:00 ora_l002_book
oracle   21522     1  0 09:20 ?        00:00:00 ora_l003_book

--可以发现同时启动了一些进程.
ora_n000_XXX => Connection Broker Process
ora_l000_XXX => Pooled Server Process(Handles client requests in Database Resident Connection Pooling)

2.测试:

--启动2个会话,使用ezconnect模式:
$ rlsql scott/book@192.168.100.78:1521/book:pooled
SQL*Plus: Release 11.2.0.4.0 Production on Fri May 13 09:23:30 2016
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SCOTT@192.168.100.78:1521/book:pooled> @ &r/spid

       SID    SERIAL# SPID       PID  P_SERIAL# C50
---------- ---------- ------ ------- ---------- --------------------------------------------------
       123        429 21518       35        199 alter system kill session '123,429' immediate;

$ rlsql scott/book@192.168.100.78:1521/book:pooled
SQL*Plus: Release 11.2.0.4.0 Production on Fri May 13 09:24:17 2016
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SCOTT@192.168.100.78:1521/book:pooled> @ &r/spid

       SID    SERIAL# SPID       PID  P_SERIAL# C50
---------- ---------- ------ ------- ---------- --------------------------------------------------
       112       2511 21516       34        132 alter system kill session '112,2511' immediate;

--再启动多个会话:

]$ ps -ef | grep ora_[ln]0
oracle   21436     1  0 09:06 ?        00:00:00 ora_n000_book
oracle   21516     1  0 09:20 ?        00:00:00 ora_l000_book
oracle   21518     1  0 09:20 ?        00:00:00 ora_l001_book
oracle   21520     1  0 09:20 ?        00:00:00 ora_l002_book
oracle   21522     1  0 09:20 ?        00:00:00 ora_l003_book
oracle   21608     1  0 09:25 ?        00:00:00 ora_l004_book
oracle   21610     1  0 09:25 ?        00:00:00 ora_l005_book
oracle   21612     1  0 09:25 ?        00:00:00 ora_l006_book

--可以发现ora_l00?的进程数量再增加.退出后等一会:
--实际上如果等INACTIVITY_TIMEOUT=300秒,没有操作.自动退出.

SYS@book> exec dbms_connection_pool.configure_pool(minsize => 1,maxsize =>3,incrsize => 1,inactivity_timeout =>60);
PL/SQL procedure successfully completed.

SYS@book> select * from dba_cpool_info;
CONNECTION_POOL                STATUS              MINSIZE    MAXSIZE   INCRSIZE SESSION_CACHED_CURSORS INACTIVITY_TIMEOUT MAX_THINK_TIME MAX_USE_SESSION MAX_LIFETIME_SESSION  NUM_CBROK MAXCONN_CBROK
------------------------------ ---------------- ---------- ---------- ---------- ---------------------- ------------------ -------------- --------------- -------------------- ---------- -------------
SYS_DEFAULT_CONNECTION_POOL    ACTIVE                    1          3          1                     20                 60            120          500000                86400          1         40000

--这样开启3个会话,第3个会话会挂起.除非其中1个会话退出,第3个会话才能进入.

--使用如下命令还原:

SYS@book> exec dbms_connection_pool.RESTORE_DEFAULTS;
PL/SQL procedure successfully completed.

SYS@book> select * from dba_cpool_info;
CONNECTION_POOL                STATUS              MINSIZE    MAXSIZE   INCRSIZE SESSION_CACHED_CURSORS INACTIVITY_TIMEOUT MAX_THINK_TIME MAX_USE_SESSION MAX_LIFETIME_SESSION  NUM_CBROK MAXCONN_CBROK
------------------------------ ---------------- ---------- ---------- ---------- ---------------------- ------------------ -------------- --------------- -------------------- ---------- -------------
SYS_DEFAULT_CONNECTION_POOL    ACTIVE                    4         40          2                     20                300            120          500000                86400          1         40000

--生产系统应该根据自己的需要调整这些参数,例子:
exec dbms_connection_pool.configure_pool(minsize => 10,maxsize =>80,incrsize => 4);

--停止DRCP:
SYS@book> exec dbms_connection_pool.stop_pool;
PL/SQL procedure successfully completed.

$ ps -ef | grep ora_[ln]0
oracle   21436     1  0 09:06 ?        00:00:00 ora_n000_book

--ora_n000还存在,等一会消失.我的测试等3分钟上下.

--注意client端也要11g才行!否则无法使用drcp的特性.

时间: 2024-10-10 04:26:15

[20160513]重温11g DRCP.txt的相关文章

[20151007]关于11G密码.txt

[20151007]关于11G密码.txt --从11G开始密码开始区分大小写的,通过参数SEC_CASE_SENSITIVE_LOGON参数来控制的.该参数默认设置为true. --我自己曾遇到升级后出现用户程序不区分大小写,导致在反复尝试后出现library cache lock,我记得当时自己也是手忙脚乱的,因为 --以前没遇到过,好在当时开发及时发现问题. -- http://blog.itpub.net/267265/viewspace-1479718/ --正好放假期间,别人的系统升

[20151109]提升scn号11g测试.txt

[20151109]提升scn号11g测试.txt --以前的测试都在10g下进行的,在11.2.0.4下重复测试. 1.测试环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- ------------------------------------------------------------

[20161115]11G pre-allocation.txt

[20161115]11G pre-allocation.txt --11GR2有1个pre-allocation的新特性,通过SMCO进程swap出Wnnn进程,来对空间进行预分配. --在windows下遇到1次ora-00445,当然不一定是这个问题,可能数据库其他问题死机,导致无法建立后台进程. --链接: http://blog.itpub.net/267265/viewspace-2120811/ 在这里有2个隐含参数: 1. _enable_space_preallocation

[20140920]oracle cluster index (11g)(2)

[20140920]oracle cluster index (11g)(补充).txt --上个星期简单研究了一下cluster表. --应用中除了堆表,很少使用cluser表,也就仅仅在生产系统使用IOT索引组织表. --实际上系统表中许多都是cluster表.比如SYS.TAB$,SYS.COL$等都建立在cluster中. --没事,简单研究一下其存储结构. 1.建立测试环境: 链接 http://blog.itpub.net/267265/viewspace-1266411/ SCOT

FLASHBACK_TRANSACTION_QUERY 11G R2. UNDO_SQL为NULL的问题

[20111212]FLASHBACK_TRANSACTION_QUERY 11G R2.txt 1.建立测试表:create table t1 as select rownum id,'test' from dual connect by leveldelete from t1 where mod(id,2)=0;commit; 2.查询:SELECT   versions_starttime, versions_endtime, versions_xid, versions_operatio

将前缀和后缀相同的文件移动到同一个目录的算法设计及C代码实现

一.需求描述 在Linux系统的某几个目录下有一些前缀和后缀相同的文件,编写程序将它们移动到同一个目录下. 例如,有三个源目录FileDir1.FileDir2和FileDir3,里面分别存放有文件File_1.txt.File_2.txt和File_3.txt.由于它们有相同的前缀(File_)和后缀(txt),所以要将这三个文件移动到同一个结果目录(假设为GatherDir)中. 二.算法设计 基于需求,可以采用如图1所示的程序流程: 图1 程序总体流程 三.特殊流程考虑 在编写程序的过程中

马云和阿里系有“新商业文明”吗?

马云,这个名字曾经代表过中国式互联网的成功,也曾经代表了新一代http://www.aliyun.com/zixun/aggregation/18043.html">企业家群体,更曾是很多人心目中的偶像. 当然,马云也是很多人心目中的导师.马云以及阿里巴巴集团确实在电子商务领域有着很重要的作用,更在电子商务普及的过程中起到了至关重要的作用. 恩,近期马云和阿里更牛的是为广泛的受众普及了一些专业领域的名词:VIE协议和robots.txt. VIE协议,支付宝控股风波后被广泛关注的专业名词早

060611G _optimizer_null_aware_antijoin

[20170606]11G _optimizer_null_aware_antijoin.txt --//上午测试_optimizer_null_aware_antijoin,发现自己不经意间又犯了一个低级错误,做1个记录. 1.环境: SYS@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- ----------

[20170825]11G备库启用DRCP连接3.txt

[20170825]11G备库启用DRCP连接3.txt --//昨天测试了11G备库启用DRCP连接,要设置alter system set audit_trail=none scope=spfile ; --//参考链接http://blog.itpub.net/267265/viewspace-2144036/. --//在测试过程中我遇到1个奇怪问题,就是如果主库没有打开drcp,备库执行exec dbms_connection_pool.start_pool();失败. --//今天分