CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

Oracle 11g新技术-数据库常驻连接池

作者: cyw,  出处:IT专家网, 责任编辑: 李书琴, 
2007-10-22 10:22
  当Oracle数据库需要处理大量的(数以万计)多主机、多进程客户端连接时,数据库驻留连接池Database Resident Connection Pooling (DRCP)将是一个理想的解决方案……

  【IT专家网独家】前言

  Web层和中间层应用软件通常具有多个执行线程,这些线程交替使用关系数据库管理系统(RDBMS)的资源。时下,多线程应用软件能够有效地共享与数据库之间的连接,成就了中间层的高可扩性。从Oracle 11g开始,应用程序开发人员、管理员以及DBA们就能够利用数据库驻留连接池,通过在多进程之间以及能够跨越中间层系统的多线程应用软件之间共享连接来达到上述的可扩性。

  对Oracle数据库而言,其连接资源指的是数据库服务器进程、会话以及相关的内存。要令数据库资源消耗最小化,并使终端用户能同时并发访问,应用程序通常能提供多种资源池解决方案。Oracle已经为包括OCI、OCCI、JDBC和ODP.NET等在内的所有数据访问驱动器提供了连接池解决方案。这些解决方案利用了一个应用程序进程中的多线程能够共享资源的能力。

  然而,有很多中间层部署是面向进程的,也有很多线程之间的资源共享不够充分。这些部署可以归结为两大主要类群:

  1、 单线程应用软件,如大多数的PHP应用软件。

  2、 多线程应用软件,能够得益于跨进程甚至跨系统之间的共享,常负载大量的闲置连接,例如冗余进程。

  当需要应付大量用户的请求时,这些应用软件往往能够保持数据库的永久连接,避免了同时完成多个任务时,连接的创建和终止的架空。中间层进程往往被设置成处理终端用户并发请求,终端用户并发请求比要后端数据库并发访问更高级。如果所有的中间层进程都与数据库进行雇用就连接,那么由于数据库资源的约束,中间层的可扩性就会受到限制。

  Oracle共享服务器模式通过把Oracle服务器进程集中在能够被多连接共享的数据库端,在一定程度上解决了这个问题。但是会话资源是不能够共享的。当客户需要长期保持会话(例如长线交易),而事实上只有少量客户在某些时间点会进行数据库活动时,这个模式很有用。 然而,在数据库活动需要会话,并且多请求的数据库活动并不依赖于会话状态的情况下,通过使用数据库驻留连接池,应用软件能达到更高的可扩性。

  数据库常驻连接池

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

  当池服务器处在使用当中时,相当于一台专用服务器。对于来自常驻通道中的客户端连接请求,连接代理会为其选择一个合适的池服务器,并把客户端请求交给该池服务器处理,不再干涉。此后客户通过和该池服务器的直接对话来完成所有的数据库活动。当客户完成请求任务释放池服务器后,连接代理将重新接管该池服务器。

  数据库常驻连接池的使用

  数据层

  激活和配置连接池:数据库驻留连接池附有一个简单易用的数据库管理应用程序接口(API)。每个11g的数据库内存结构和后台进程中都有一个默认连接池。DBA可以使用如下PLSQL包“DBMS_CONNECTION_POOL”来配置和管理连接池。  

SQL>execute dbms connection pool. configure pool(null, minsize=>10,
  maxsize=>100,
  inactivity timeout=>300,
  max_think_time=>600, …);

  上述脚本是一个可选项,在需要更改默认设置时使用。

  必须在客户端发出连接请求前启动连接池。下面的命令可以调出连接代理,代理会通过数据库监听器进行自注册。

  SQL> execute dbms_connection_pool.start_pool;

  一旦通过这个方式激活,连接池将随着数据库后台进程的重启而自动重启,直到使用“dbms_connection_pool.stop_pool”命令关闭连接池。

共2页。 1 2 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i