DRCP總結

studywell發表於2016-03-10
DRCP總結
參考總結http://blog.itpub.net/17203031/viewspace-717989/

Database Resident Connection Pooling(DRCP)是Oracle 11g中的新特性。藉助DRCP,一些高併發、短會話應用可以獲得資料庫層面的高效連線池。
 
檢視連線池資訊;
select * from dba_cpool_info i;
預設連線池的狀態預設是沒有啟動的;需要啟動;
需要已sysdba身份啟動關閉;
exec dbms_connection_pool.start_pool();
exec dbms_connection_pool.stop_pool();

連線串設定
19211drcp =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.206.11)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = POOLED)
      (sid = orcl)
      )
  )

conn system/oracle@19211drcp

檢視本機會話對應sid及系統上程式號;
select s.sid,s.SERIAL#,s.PADDR,p.PID,p.SPID
from v$session s, v$process p
where s.sid=(select sid from v$mystat where rownum<2) and  p.addr=s.PADDR;

檢視設定連線池
select * from dba_cpool_info i;
在DRCP連線池中,最常用的幾個引數是minsize、maxsize和inactivity_timeout。
Minsize是說明DRCP連線池初始連線程式數量,如果請求數量超過這個minsize值,就會進行自動擴充。每次進行擴充的程式個數是incrsize引數。
Maxsize表示DRCP最大的擴充程式數量。當已經達到這個數量之後,DRCP連線池就不會獲取到連線,被hange住。預設會保留一個程式用來身份許可權認證;
DRCP對應的應用需求是“短會話、高併發”的應用場景。所以DRCP服務的連線必然是短時間互動。Inactivity_timeout引數就是設定這個timeout值。如果會話連線到這個連線之後,超過一定時間沒有inactive互動,Oracle會自動將其斷開。Server Process被釋放回連線池。

 設定連線池引數的方法:
 exec dbms_connection_pool.configure_pool(minsize => 1,maxsize =>3,incrsize => 1,inactivity_timeout =>60);
重置連線池引數
 exec dbms_connection_pool.restore_defaults;

檢視當前透過drcp連線的會話
select * from v$session s where s.SERVER='POOLED';
下面的查詢結果是系統程式還未釋放drcp會話;
select * from v$process p where p.PNAME like 'L0%';

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2055086/,如需轉載,請註明出處,否則將追究法律責任。