Oracle 11g DRCP配置與使用(下)
上篇中,我們探討了基本配置DRCP的方法和使用細節。本篇我們繼續來探討配置引數細節和各方面指標內容。
4、配置DRCP關鍵引數
在dba_cpool_info檢視中,我們可以檢視到相應的引數資訊。
SQL> desc dba_cpool_info;
Name Type Nullable Default Comments
---------------------- ------------- -------- ------- ------------------------------------------------------------
CONNECTION_POOL VARCHAR2(128) Y Connection pool name
STATUS VARCHAR2(16) Y connection pool status
MINSIZE NUMBER Y Minimum number of connections
MAXSIZE NUMBER Y Maximum number of connections
INCRSIZE NUMBER Y Increment number of connections
SESSION_CACHED_CURSORS NUMBER Y Session cached cursors
INACTIVITY_TIMEOUT NUMBER Y Timeout for an idle session
MAX_THINK_TIME NUMBER Y Max time for client to start activity on an acquired session
MAX_USE_SESSION NUMBER Y Maximum life of a session based on usage
MAX_LIFETIME_SESSION NUMBER Y Maximum life of a session based on time
NUM_CBROK NUMBER Y
MAXCONN_CBROK NUMBER Y
在DRCP連線池中,最常用的幾個引數是minsize、maxsize和inactivity_timeout。
Minsize是說明DRCP連線池初始連線程式數量,如果請求數量超過這個minsize值,就會進行自動擴充。每次進行擴充的程式個數是incrsize引數。
Maxsize表示DRCP最大的擴充程式數量。當已經達到這個數量之後,DRCP連線池就不會獲取到連線,被hange住。
DRCP對應的應用需求是“短會話、高併發”的應用場景。所以DRCP服務的連線必然是短時間互動。Inactivity_timeout引數就是設定這個timeout值。如果會話連線到這個連線之後,超過一定時間沒有inactive互動,Oracle會自動將其斷開。Server Process被釋放回連線池。
配置connection pool,我們可以使用dbms_connection_pool方法configure_pool。
SQL> exec dbms_connection_pool.configure_pool(minsize => 1,maxsize =>3,incrsize => 1,inactivity_timeout =>60);
PL/SQL procedure successfully completed
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 1 3 60
--啟動連線池;
SQL> exec dbms_connection_pool.start_pool;
PL/SQL procedure successfully completed
--後臺程式情況;
[oracle@oracle11g ~]$ ps -ef | grep ora_n
oracle 6035 1 3 05:22 ? 00:00:00 ora_n000_wilson
oracle 6039 5931 0 05:23 pts/1 00:00:00 grep ora_n
[oracle@oracle11g ~]$ ps -ef | grep ora_l
oracle 5689 1 0 05:02 ? 00:00:00 ora_lgwr_wilson
oracle 6037 1 0 05:22 ? 00:00:00 ora_l000_wilson
oracle 6041 5931 0 05:23 pts/1 00:00:00 grep ora_l
5、maxsize值突破實驗
我們實驗一下,當突破maxsize值的時候,會出現什麼現象。我們啟用sqlplus連線。
--第一會話
SQL> conn scott/tiger@wilsondrcp
Connected.
SQL> set time on;
05:23:45 SQL> select sid from v$mystat where rownum<2;
SID
----------
14
--第二會話
SQL> conn scott/tiger@wilsondrcp
Connected.
SQL> set time on
05:24:26 SQL> select sid from v$mystat where rownum<2;
SID
----------
22
啟動了兩個連線,此時連線池程式情況如下:
[oracle@oracle11g ~]$ ps -ef | grep ora_l
oracle 5689 1 0 05:03 ? 00:00:00 ora_lgwr_wilson
oracle 6037 1 0 05:22 ? 00:00:00 ora_l000_wilson
oracle 6052 1 0 05:23 ? 00:00:00 ora_l001_wilson
oracle 6054 1 0 05:23 ? 00:00:00 ora_l002_wilson
oracle 6118 5931 0 05:24 pts/1 00:00:00 grep ora_l
擴充到三個連線程式。但是,此時如果我們進行第三個連線連入,就不允許了。
SQL*Plus: Release 11.2.0.1.0 Production on Thu Mar 1 05:25:16 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn scott/tiger@wilsondrcp
(資料庫連線動作hange住)
這裡,我們需要注意一個細節:連線池中存在三個server process,但是為什麼第三個連線不能連入。注意:在DRCP連線池中,Oracle是要保留一個連線作為身份許可權驗證等操作使用的。不能將其分配出去。Maxsize我們設定為3,所以自然沒有連線。
第三個連線hange住一段時間後,自動連入。
Connected.
SQL> select sid from v$mystat where rownum<2;
SID
----------
14
第三個會話連入。此時第一個和第二個會話是被強制斷開。
--第一會話
05:24:37 SQL> select sid from v$mystat where rownum<2;
select sid from v$mystat where rownum<2
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 6052
Session ID: 14 Serial number: 5
--第二會話
05:24:47 SQL> select sid from v$mystat where rownum<2;
select sid from v$mystat where rownum<2
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 6054
Session ID: 22 Serial number: 17
此時,後臺程式狀態有釋放連線。
[oracle@oracle11g ~]$ ps -ef | grep ora_l
oracle 5689 1 0 05:03 ? 00:00:00 ora_lgwr_wilson
oracle 6037 1 0 05:22 ? 00:00:00 ora_l000_wilson
oracle 6052 1 0 05:23 ? 00:00:00 ora_l001_wilson
oracle 6202 5931 0 05:28 pts/1 00:00:00 grep ora_l
附帶,dbms_connection_pool的restore_defaults方法,可以將設定值置回。
SQL> exec dbms_connection_pool.stop_pool;
PL/SQL procedure successfully completed
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 1 3 60
SQL> exec dbms_connection_pool.restore_defaults;
PL/SQL procedure successfully completed
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
6、結論
DRCP是Oracle 11g中的新特性。藉助DRCP,一些高併發、短會話應用可以獲得資料庫層面的高效連線池。筆者猜測Shared Server模式就是DRCP的一種早期雛形。在現代企業級應用系統中,連線池是中介軟體的一個重要元件。當一些應用,如PHP不能提供有效連線池的時候,DRCP也許是不錯的選擇。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2055063/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g DRCP配置與使用(上)Oracle
- Oracle 11g DRCP連線跟蹤配置Oracle
- Oracle 11g 新特性之DRCPOracle
- Oracle 11g DRCP連線方式——基本原理Oracle
- 在oracle 11g下安裝配置scheduler agentOracle
- Oracle 11g RAC One node 安裝與配置Oracle
- Windows下Weblogic 11G叢集安裝與配置WindowsWeb
- oracle 11G dataguard配置Oracle
- 水煮oracle 20——redhat6下的oracle 11g r2的靜默安裝與配置OracleRedhat
- [20130730]11G的DRCP特性.txt
- [zt] Oracle 11g DataGuard 配置Oracle
- 【OGG】Oracle GoldenGate 11g (二) GoldenGate 11g 單向同步配置 下OracleGo
- DRCP總結
- 非OMF管理下ORACLE 11G R2 Data Guard配置Oracle
- Windows下Scoop安裝、配置與使用WindowsOOP
- [20170824]11G備庫啟用DRCP連線.txt
- oracle 11g Oracle Database Vault 的配置方法OracleDatabase
- 【Services】Oracle 11g RAC使用Manual和Policy Managed方法配置和使用ServicesOracle
- oracle 11g streams 配置詳解Oracle
- ORACLE 11g dataguard配置練習Oracle
- SQL Query Result Cache的使用和配置--Oracle 11G新特性SQLOracle
- Oracle 11g提供下載Oracle
- MSCS下Oracle 11g R2群集配置完整版Oracle
- Oracle在Linux下使用非同步IO配置OracleLinux非同步
- ORACLE 11g RAC EM手動配置Oracle
- oracle 11g tns和監聽配置Oracle
- [20170825]11G備庫啟用DRCP連線3.txt
- OEL6下靜默安裝Oracle 11g,靜默配置監聽Oracle
- oracle 11g adrci使用Oracle
- Oracle 11g新引數USE_LARGE_PAGES與AMM使用Oracle
- oracle 11g dg broker開啟和配置Oracle
- Oracle 11g dataguard 配置簡約步驟Oracle
- Oracle 11G RAC ntp時間同步配置Oracle
- Oracle 11g RAC 配置單例項 DataGuardOracle單例
- oracle goldengate 10g--->11g配置OracleGo
- linux下安裝oracle 11gLinuxOracle
- 刪除AIX下的ORACLE 11gAIOracle
- Oracle 11g Advanced Compression(下)Oracle