程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> 數據庫管理Oracle 連接池信息的修改

數據庫管理Oracle 連接池信息的修改

編輯:關於Oracle數據庫

           最近項目中用到的Oracle數據庫在服務器上是建了多個表空間供不同系統使用,兩個系統同時在使用過程中,正在開發的一個項目在測試運行時,時不時就出現連接池滿了,連接不上的問題,為此查了下怎麼修改Oracle連接池配置的修改方式,特記錄下來備查。

      目前Oracle只支持一個連接池,pool name為“SYS_DEFAULT_CONNECTION_POOL”,管理連接池信息的也就一個包“DBMS_CONNECTION_POOL”。

      先看看包的相關說明:

      SQL> desc DBMS_CONNECTION_POOL

    Element Type

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

    ALTER_PARAM PROCEDURE

    CONFIGURE_POOL PROCEDURE

    RESTORE_DEFAULTS PROCEDURE

    START_POOL PROCEDURE

    STOP_POOL PROCEDURE

       

      包裡面有5個存儲過程。默認Oracle是包含一個缺省的連接池SYS_DEFAULT_CONNECTION_POOL,但是並沒有被打開,需要顯示的開啟連接池,第一步當然就是開啟連接池:

      exec DBMS_CONNECTION_POOL.START_POOL('SYS_DEFAULT_CONNECTION_POOL');  

      這個操作只需要做一次,下次數據庫重啟了之後連接池會自動開啟的。

      打開了連接池之後可以通過系統視圖dba_cpool_info進行查詢:

      SQL> select connection_pool,status from dba_cpool_info;

    CONNECTION_POOL STATUS-------------------------------------------------------------------------------- ----------------

    SYS_DEFAULT_CONNECTION_POOL ACTIVE
       

      當連接池啟動了之後,可以通過DBMS_CONNECTION_POOL.CONFIGURE_POOL來查看連接池的相關配置項。

      SQL> desc DBMS_CONNECTION_POOL.CONFIGURE_POOL

    Parameter Type Mode Default?

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

    POOL_NAME VARCHAR2 IN Y

    MINSIZE BINARY_INTEGER IN Y

    MAXSIZE BINARY_INTEGER IN Y

    INCRSIZE BINARY_INTEGER IN Y

    SESSION_CACHED_CURSORS BINARY_INTEGER IN Y

    INACTIVITY_TIMEOUT BINARY_INTEGER IN Y

    MAX_THINK_TIME BINARY_INTEGER IN Y

    MAX_USE_SESSION BINARY_INTEGER IN Y

    MAX_LIFETIME_SESSION BINARY_INTEGER IN Y

       

      參數說明:

    參數                         說明

    MINSIZE        在pool中最小數量的pooled servers,缺省為4。
    MAXSIZE       在pool中最大數量的pooled servers,缺省為40。
    INCRSIZE     這個參數是在一個客戶端應用需要連接的時候,當pooled servers不可用的狀態時候,每次pool增加pooled servers的數目。
     

    SESSION_CACHED_CURSORS     緩存在每個pooled servers上的會話游標的數目,缺省為20。
    INACTIVITY_TIMEOUT         pooled server處於idle狀態的最大時間,單位秒, 超過這個時間,the server將被停止。缺省為300.
     

    MAX_THINK_TIME   在一個客戶端從pool中獲得一個pooled server之後,如 果在MAX_THINK_TIME時間之內沒有提交數據庫調用的話,這個pooled server將被釋放,客戶端連接將被停止。缺省為30,單位秒。

    MAX_USE_SESSION             pooled server能夠在pool上taken和釋放的次數,缺省為5000。
    MAX_LIFETIME_SESSION      The time, in seconds, to live for a pooled server in the pool. Thedefault value is 3600.一個pooled server在pool中的生命值。

      注:在pooled server數目不能低於MINSIZE。

      可以使用DBMS_CONNECTION_POOL.CONFIGURE_POOL或DBMS_CONNECTION_POOL.ALTER_PARAM對連接池的設置進行修改。

      先來看看參數信息:

      SQL> desc DBMS_CONNECTION_POOL.ALTER_PARAM

    Parameter Type Mode Default?

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

    POOL_NAME VARCHAR2 IN Y

    PARAM_NAME VARCHAR2 IN

    PARAM_VALUE VARCHAR2 IN

       

     

      SQL> exec DBMS_CONNECTION_POOL.ALTER_PARAM ('','minsize','10');

    PL/SQL procedure successfully completed

    SQL> exec DBMS_CONNECTION_POOL.ALTER_PARAM ('','maxsize','100');

    PL/SQL procedure successfully completed

     

      由於只有一個連接池,第一個參數的值可以省略。

      系統中有幾個系統視圖比較有用:

      DBA_CPOOL_INFO 這個視圖包含著連接池的狀態

      V$CPOOL_STATS 這個視圖包含著連接池的統計信息

      V$CPOOL_CC_STATS 這個視圖包含著池的連接類型級別統計

      修改成功了之後可以查詢下連接池信息:

      SQL> select CONNECTION_POOL, STATUS,MINSIZE,MAXSIZE from DBA_CPOOL_INFO;

    CONNECTION_POOL STATUS MINSIZE MAXSIZE

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

    SYS_DEFAULT_CONNECTION_POOL ACTIVE 10 100

       

      到此,連接池的設置和相關修改已經完成。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved