天萃荷净

分享一篇关于应用程序与Oracle数据库连接的连接方法介绍,数据库常驻连接池(Database Resident Connection Pool)案例介绍

一.介绍常驻连接池(Database Resident Connection Pool,Oracle DRCP)

数据库驻留连接池是Oracle Database 11g的一个新特性,专门为了解决在需要支持大量连接的环境对可扩性的迫切需求而设计的。数据库驻留连接池把数据库服务器进程和对话汇合起来(这样的组合称之为池服务器),通过从单主机或不同主机发出的多个应用软件进程的连接进行共享。由一个连接代理(Connection Broker)进程控制着数据库后台进程中的池服务器。连接代理会持续的连接客户并对客户进行验证。当需要进行某种数据库活动时,客户将请求连接代理提供池服务器,使用完毕后再将它们释放以供其他客户重新使用。当池服务器处在使用当中时,相当于一台专用服务器。对于来自常驻通道中的客户端连接请求,连接代理会为其选择一个合适的池服务器,并把客户端请求交给该池服务器处理,不再干涉。此后客户通过和该池服务器的直接对话来完成所有的数据库活动。当客户完成请求任务释放池服务器后,连接代理将重新接管该池服务器。

二.什么时间使用DRCP

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

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

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

4 会话不需要跨客户请求

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

三.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等

五.客户端如何连接到DRCP

如果是专用服务器连接,则SERVER=DEDICATED,如果是DRCP连接,则SEVER=POOLED。如果要指定客户端请求到DRCP,则客户端的tnsnames.ora中的连接字符串必须指定连接类型是POOLED,配置方式如下所示:

ORA11G_P =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SERVER=POOLED) --注意

(SERVICE_NAME = ora11g)

)

)

说明:

1)如果在tnsnames.ora中指定了SERVER=POOLED,但并没有在实例中启动DRCP,则当客户请求连接时,DB会报ORA-12520错误。

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

六.DRCP配置/查询

1.DRCP启动/关闭

--查看当前DRCP状态

SQL> select CONNECTION_POOL,status from dba_cpool_info;

CONNECTION_POOL STATUS

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

SYS_DEFAULT_CONNECTION_POOL INACTIVE

--启动DRCP

SQL> execute dbms_connection_pool.start_pool;

PL/SQL procedure successfully completed.

SQL> select CONNECTION_POOL,status from dba_cpool_info;

CONNECTION_POOL STATUS

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

SYS_DEFAULT_CONNECTION_POOL ACTIVE

--关闭DRCP

SQL> exec dbms_connection_pool.stop_pool

PL/SQL procedure successfully completed.

SQL> select CONNECTION_POOL,status from dba_cpool_info;

CONNECTION_POOL STATUS

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

SYS_DEFAULT_CONNECTION_POOL INACTIVE

2.修改DRCP参数

--dbms_connection_pool.configure_pool

exec dbms_connection_pool.configure_pool(

POOL_NAME=>'SYS_DEFAULT_CONNECTION_POOL',

minsize=>10,

maxsize=>100,

INCRSIZE=>10,

SESSION_CACHED_CURSORS=>50,

inactivity_timeout=>3000,

max_think_time=>100,

MAX_USE_SESSION=>10000,

MAX_LIFETIME_SESSION=>36000

);

--dbms_connection_pool.alter_param

exec dbms_connection_pool.alter_param(

POOL_NAME=>'SYS_DEFAULT_CONNECTION_POOL',

PARAM_NAME=>'MINSIZE',

PARAM_VALUE=>'2');

3.DRCP视图

DBA_CPOOL_INFO

displays configuration information about all Database Resident Connection Pools in the database.

V$CPOOL_STATS

displays information about the Database Resident Connection Pool statistics for an instance

V$CPOOL_CC_STATS

displays information about the connection class level statistics for

the Database Resident Connection Pool per instance.

V$CPOOL_CONN_INFO

displays connection information about each connection to the connection broker.

V$CPOOL_CC_INFO

displays information about the pool-to-connection class mapping for

the Database Resident Connection Pool per instance.

七.DRCP相关进程

oracle 11715 1 0 21:38 00:00:00 ora_n000_ora11g

oracle 11719 1 0 21:38 00:00:00 ora_l000_ora11g

oracle 11723 1 0 21:38 00:00:00 ora_l001_ora11g

oracle 11727 1 0 21:38 00:00:00 ora_l002_ora11g

oracle 11731 1 0 21:38 00:00:02 ora_l003_ora11g

oracle 12490 1 0 21:57 00:00:00 ora_l004_ora11g

oracle 12494 1 0 21:57 00:00:00 ora_l005_ora11g

oracle 12498 1 0 21:57 00:00:00 ora_l006_ora11g

oracle 12502 1 0 21:57 00:00:00 ora_l007_ora11g

oracle 12506 1 0 21:57 00:00:00 ora_l008_ora11g

oracle 12510 1 0 21:57 00:00:00 ora_l009_ora11g

oracle 12514 1 0 21:57 00:00:01 ora_l010_ora11g

oracle 12518 1 0 21:57 00:00:00 ora_l011_ora11g

oracle 12522 1 0 21:57 00:00:00 ora_l012_ora11g

oracle 12526 1 0 21:57 00:00:00 ora_l013_ora11g

oracle 12530 1 0 21:57 00:00:00 ora_l014_ora11g

oracle 12534 1 0 21:57 00:00:00 ora_l015_ora11g

oracle 12538 1 0 21:57 00:00:00 ora_l016_ora11g

oracle 12542 1 0 21:57 00:00:00 ora_l017_ora11g

oracle 12546 1 0 21:57 00:00:00 ora_l018_ora11g

oracle 12550 1 0 21:57 00:00:00 ora_l019_ora11g

ora_n000_ora11g

Connection Broker Process

ora_l000_ora11g

Pooled Server Process(Handles client requests in Database Resident Connection Pooling)

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【学习笔记】Oracle连接池 数据库常驻连接池(Database Resident Connection Pool)案例介绍

mysql连接池永驻_【学习笔记】Oracle连接池 数据库常驻连接池(Database Resident Connection Pool)案例介绍...相关推荐

  1. oracle强制拉库跳过recovery,学习笔记:Oracle坏块 数据库recover恢复时遇到坏块的解决思路案例...

    天萃荷净 recover遇到坏块处理本质探讨,记录一次在Oracle数据库recover恢复过程中,遇到数据库坏块无法恢复的解决思路案例 如果在还原出来的数据文件中有坏块,而归档日志和联机日志是正常的 ...

  2. oracle 最大值及其_学习笔记:Oracle优化 SQL查询最大值 最小值时的优化方法案例...

    天萃荷净 select max(id),min(id) from table优化,分享开发DBA需求,在SQL语句查询最大值.最小值数据时的优化方式案例 1.查看数据库版本 SQL> selec ...

  3. oracle拆分分区语法详解大全_学习笔记:Oracle分区表 添加 删除 合并 删除 交换 拆分等分区表的操作案例...

    天萃荷净 Oracle分区表管理,记录关于Oracle分区表的管理案例:创建.删除.合并.拆分.交换.更改分区表的操作方法 1.添加创建分区表 1.1)增加分区(add partition) 语法是: ...

  4. oracle如何往dg加盘_学习笔记:Oracle DG系统 主备库中表空间和数据文件增加删除等管...

    天萃荷净 Oracle Data Guard表空间和数据文件管理汇总 汇总日常工作中操作,在Oracle DG结构系统中,如何删除备库表空间和数据文件,如何管理主库与备库之间的文件系统,详见文章内容. ...

  5. mysql之触发器详解_学习笔记之MySQL触发器详解

    触发器是由事件来触发某个操作,这些事件包括INSERT语句,UPDATE语句和DELETE语句 创建触发器 创建只有一个执行语句的触发器 CREATE TRIGGER 触发器名 BEFORE|AFTE ...

  6. [Spring Data MongoDB]学习笔记--建立数据库的连接

    1. 有了上一篇的Mongo后,连接数据库我们还需要更多的信息,比如数据库名字,用户名和密码等. 我们可以继续来配置MongoDbFactory的实例. public interface MongoD ...

  7. mysql入门很简单系列视频-学习笔记

    mysql入门很简单系列视频-学习笔记 视频链接:mysql入门很简单系列视频 https://www.bilibili.com/video/av14920200/ 以前主要就了解DDL.DML.DC ...

  8. DHCP服务_学习笔记

    DHCP服务_学习笔记 DHCP(Dynamic Host Configuration Protocol):动态主机配置协议 Lease:租约    续租时间需要是租期时间的一半 UDP协议: Ser ...

  9. db4o_8.0对象数据库官方文档翻译_学习笔记三

    紧接上篇:db4o_8.0对象数据库官方文档翻译_学习笔记二 3. Object Manager Enterprise Overview(OME视图)即OME插件的使用 If you did not  ...

最新文章

  1. kd树 python实现_Python KD树实现+简单的KNN实现
  2. 设置图片垂直居中line-height和vertical-align的区别
  3. 字符串科技:Palindrome Series
  4. SVT-AV1:开源编解码最新进展
  5. Error message Exception raised without specific error
  6. 『软件测试5』测开岗只要求会黑白盒测试?NO!还要学会性能测试!
  7. Powershell访问数组
  8. 智能文档分析:NLP和OCR的融合技术
  9. 关键2招提升软件开发项目的利润
  10. chrome中文本框样式问题
  11. iPhoneiPad越狱后的操作
  12. 个人的尚学堂数据库oracle笔记(3)
  13. STM32F103时钟系统
  14. 自动开机和自动关机设定方法(包括linux和windows)
  15. HDU 2188 JAVA
  16. ArcGIS中做一张新闻1+1演播厅背景图(附世界矢量地图.shp下载)
  17. PS磨皮滤镜插件:Portraiture 3 for Mac破解版永久激活方法
  18. 使用ts-node去支持TS的Node运行环境
  19. 相机精度与像素的关系
  20. TMI4054锂电池充电管理IC

热门文章

  1. TOEFL 备考资料网站
  2. 变形金刚4 高清完整版强势来袭 走起!
  3. UDP实现多人聊天室
  4. Linux基础命令二
  5. MongoDB中$redact操作符的使用
  6. 从魔术师到统计学家 2
  7. 泰克sigmastek蓄电池技术
  8. css设置内外边框距离
  9. 利用画布canvas,实现图片编辑马赛克效果。canvas.putImageData()实现不一样的马赛克
  10. 简述计算机辅助船舶制造的技术特点,01234计算机辅助船舶制造.doc