ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle 11g DRCP配置与使用(上)

Oracle 11g DRCP配置与使用(上)

原创 Linux操作系统 作者:realkid4 时间:2012-03-05 19:56:35 0 删除 编辑

 

Oracle 11g推出了驻留连接池(Database Resident Connection Pool)特性,提供了数据库层面上的连接池管理机制,为应对高并发、短会话前端应用进行有益的尝试。

 

DRCP的配置很简单,本篇中让我们一起来配置一个11g环境上的DRCP,分析其工作特性。

 

1、Database Level Configuration

 

配置DRCP是分为两个步骤:database level configuration和application level configuration。首先在Database Server层面创建连接池对象。我们使用Oracle 11g进行试验。

 

 

SQL> select * from v$version;

BANNER

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

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

PL/SQL Release 11.2.0.1.0 - Production

CORE    11.2.0.1.0    Production

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 Production

 

 

在默认情况下,Oracle 11g中是有一个默认的连接池对象。在视图dba_cpool_info中,可以看到连接池信息。

 

 

SQL> select connection_pool, status, minsize, maxsize, INACTIVITY_TIMEOUT from dba_cpool_info;

 

CONNECTION_POOL                STATUS              MINSIZE    MAXSIZE INACTIVITY_TIMEOUT

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

SYS_DEFAULT_CONNECTION_POOL    INACTIVE                  4         40                300

 

 

连接池sys_default_connection_pool就是默认连接池,状态是inactive。使用dbms_connection_pool包,可以方便的对其进行管理。

 

 

SQL> exec dbms_connection_pool.start_pool();

PL/SQL procedure successfully completed

 

 

使用start_pool方法,可以对默认池进行开启。注意:该方法还有参数pool_name,如果指定了名称,就可以创建出一个自定义的连接池,也可以同时管理多个连接池情况。如果不指定名称,就针对默认连接池进行管理。

 

Start_pool之后,dba_cpool_info视图中可以看到连接池状态。

 

 

SQL> select connection_pool, status from dba_cpool_info;

 

CONNECTION_POOL                STATUS               MINSIZE   

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

SYS_DEFAULT_CONNECTION_POOL    ACTIVE                    4    

 

 

注意,此时没有连接,但是我们观察后台进程,发现新增加了连接池Server Process对象。

 

 

[oracle@oracle11g ~]$ ps -ef | grep ora_n

oracle    5800     1  1 05:07 ?        00:00:00 ora_n000_wilson

oracle    5816  5584  0 05:07 pts/0    00:00:00 grep ora_n

[oracle@oracle11g ~]$ ps -ef | grep ora_l

oracle    5689     1  0 05:03 ?        00:00:00 ora_lgwr_wilson

oracle    5802     1  0 05:07 ?        00:00:00 ora_l000_wilson

oracle    5804     1  0 05:07 ?        00:00:00 ora_l001_wilson

oracle    5806     1  0 05:07 ?        00:00:00 ora_l002_wilson

oracle    5808     1  0 05:07 ?        00:00:00 ora_l003_wilson

oracle    5818  5584  0 05:07 pts/0    00:00:00 grep ora_l

 

 

其中ora_n000进程是对应的Connection Broker对象,负责连接管理。Ora_lxxx进程就是连接池中的连接对象。当没有连接的时候,连接池维持minsize大小,与配置minsize=4相匹配。

 

下面进行application level configuration。

 

2、Application Level Configuration

 

在应用层面,可以从连接字符串或者本地服务名上进行配置。本篇主要从本地服务名上进行配置。

 

tnsnames.ora中,我们可以进行本地命名配置。为了保证正确性,笔者倾向使用Oracle提供的netca工具来进行基础配置。

 

 

--开启X Windows Passive模式

[oracle@oracle11g ~]$ export DISPLAY=192.168.0.1:0.0

[oracle@oracle11g ~]$ netca

 

Oracle Net Services Configuration:

Default local naming configuration complete.

    Created net service name: wilsondrcp

Oracle Net Services configuration successful. The exit code is 0

 

 

之后,修改tnsname.ora文件的相关内容。

 

 

WILSONDRCP =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVER = POOLED) --新增加到其中,表明连接使用连接池;

      (SERVICE_NAME = wilson)

    )

  )

 

 

可以使用tnsping方法进行验证。

 

 

[oracle@oracle11g ~]$ tnsping wilsondrcp

 

TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 01-MAR-2012 05:10:46

 

Copyright (c) 1997, 2009, Oracle.  All rights reserved.

 

Used parameter files:

/u01/oracle/network/admin/sqlnet.ora

 

 

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.88)(PORT = 1521))) (CONNECT_DATA = (SERVER = POOLED) (SERVICE_NAME = wilson)))

OK (0 msec)

 

 

配置了wilsondrcp名称之后,就可以使用sqlplus等工具进行连接。

 

 

[oracle@oracle11g ~]$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.1.0 Production on Thu Mar 1 05:11:47 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

SQL> conn scott/tiger@wilsondrcp

Connected.

SQL> select sid from v$mystat where rownum<2;

       SID

----------

       146

 

 

 

此时,会话(sid=146)已经连接。此时,我们可以查看后台进程情况。

 

 

--标记LOCAL的本地连接进程不存在;

[oracle@oracle11g ~]$ ps -ef | grep LOCAL

oracle    5963  5931  0 05:14 pts/1    00:00:00 grep LOCAL

 

 

那么,我们连接的会话进程究竟是哪一个呢?

 

 

SQL> select paddr from v$session where sid=146;

PADDR

--------

38BCD994

 

SQL> select pid, spid from v$process where addr='38BCD994';

       PID SPID

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

        31 5806 OS Level的进程编号;

 

[oracle@oracle11g ~]$ ps -ef | grep 5806

oracle    5806     1  0 05:07 ?        00:00:00 ora_l002_wilson

oracle    5975  5931  0 05:15 pts/1    00:00:00 grep 5806

 

 

对应的ora_l002_wilson进程就是我们刚刚看到的连接池进程。说明:我们使用sqlplus连接使用的连接池对象是通过DRCP。

 

sqlplus退出之后,l002进程依然存在,只是被释放回连接池。

 

 

SQL> quit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

[oracle@oracle11g ~]$ ps -ef | grep 5806

oracle    5806     1  0 05:07 ?        00:00:00 ora_l002_wilson

oracle    5981  5931  0 05:15 pts/1    00:00:00 grep 5806

[oracle@oracle11g ~]$

 

 

3、连接池关闭

 

DRCP连接池是可以关闭的,同样使用dbms_connection_pool的stop_pool方法。

 

 

--关闭connection pool

SQL> exec dbms_connection_pool.stop_pool;

PL/SQL procedure successfully completed

 

[oracle@oracle11g ~]$ ps -ef | grep ora_n

oracle    5800     1  0 05:07 ?        00:00:00 ora_n000_wilson

oracle    6008  5931  0 05:18 pts/1    00:00:00 grep ora_n

[oracle@oracle11g ~]$ ps -ef | grep ora_l

oracle    5689     1  0 05:03 ?        00:00:00 ora_lgwr_wilson

oracle    6010  5931  0 05:18 pts/1    00:00:00 grep ora_l

 

 

关闭连接池后,连接池中连接lxxx立即被销毁释放。Connection Broker进程暂时存在。但是,过一会之后,该进程消失。

 

 

[oracle@oracle11g ~]$ ps -ef | grep ora_n

oracle    6027  5931  0 05:22 pts/1    00:00:00 grep ora_n

 

 

 

本篇中,我们一起进行了Oracle DRCP启动关闭,以及对应的后台Server Process情况。下篇中,我们一起来分析如何进行配置DRCP各种参数。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17203031/viewspace-717754/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
求道~

注册时间:2010-11-30

  • 博文量
    545
  • 访问量
    7569162