[20160513]重温11g DRCP.txt

简介: [20160513]重温11g DRCP.txt --以前做过一次测试,再也没有使用过. [20130730]11G的DRCP特性.txt => http://blog.

[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的特性.

目录
相关文章
|
15天前
|
数据安全/隐私保护 Python
Python文件与目录操作:面试中的高频考点
【4月更文挑战第15天】本文介绍了Python文件和目录操作的面试重点,包括文件的读写、目录遍历及权限管理。强调了文件关闭、异常处理、特殊文件判断以及权限位和权限字符串的理解。提供了代码示例,如读写文件、遍历目录和更改文件权限,帮助读者在面试中表现出色。掌握这些技能将对编程求职之路大有裨益。
18 0
|
4月前
|
Shell Linux Perl
Shell基础学习---3、Read读取控制台输入、函数、综合应用案例:归档文件、正则表达式入门(第二天学习)
Shell基础学习---3、Read读取控制台输入、函数、综合应用案例:归档文件、正则表达式入门
|
7月前
|
存储 算法 Linux
输入和输出 文件读写 知识点总结 C++程序设计与算法笔记总结(六) 北京大学 郭炜
输入和输出 文件读写 知识点总结 C++程序设计与算法笔记总结(六) 北京大学 郭炜
39 1
|
12月前
|
存储
万字【文件操作讲解】(知识点全面有序,带你一篇文章学懂什么是文件操作)2
万字【文件操作讲解】(知识点全面有序,带你一篇文章学懂什么是文件操作)
|
12月前
|
存储 缓存
万字【文件操作讲解】(知识点全面有序,带你一篇文章学懂什么是文件操作)1
什么是文件和什么是文件操作 一、文件的基本知识和原理 1.首先我们应该要知道什么是文件: 2.什么是文件名 3.什么是文件类型 4.数据在内存中的存储形式 5.什么是文件缓冲区 6.对输入输出缓冲区的理解: 7.缓冲区的三种类型(全缓冲、行缓冲、无缓冲) 8.什么是文件指针 二、文件的操作 1.如何打开文件 2.文件的打开方式(最全表格) 三、文件读写的函数使用 1.首先fputc和fgetc函数的使用(字符操作) 2.什么是标准输入设备,什么是标准输出设备 3.fgets 和 fputs 函数的使用(文本语句操作) 4.fprintf 和 fscanf 格式化函数的使用
|
12月前
|
存储 Java Shell
学习系统编程No.9【文件操作】
学习系统编程No.9【文件操作】
开心档-软件开发入门之Python File(文件) 方法
本文主要讲解Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
开心档-软件开发入门之Python File(文件) 方法
|
XML JSON 移动开发
小伙伴解析Json解的66的,但是老板甩给他了一个txt,那么就看如何用Unity解析txt文档
小伙伴跟我说,自从看了我这篇【Unity3D日常】Unity写Json数据,以及在Unity读取、解析Json数据,潜心学习,解析Json那解析的66的,没啥压力,但是领导给了他一个txt不知道怎么解析。 我说,那你把文档发给我,我整理一篇文章,让小伙们下次遇到这个问题知道总体流程了。
小伙伴解析Json解的66的,但是老板甩给他了一个txt,那么就看如何用Unity解析txt文档
|
存储 Python
一分钟学Python| 文件操作处理 (上)
一分钟学Python| 文件操作处理 (上)
137 0
|
设计模式 数据采集 存储
[Python从零到壹] 三.语法基础之文件操作、CSV文件读写及面向对象
欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家。本文主要介绍文件操作、CSV文件读写及面向对象基础知识。
229 1
[Python从零到壹] 三.语法基础之文件操作、CSV文件读写及面向对象