天天看點

ORACLE ORA-12520 : TNS:listener could not find available handler for requested type of server

    我們在用戶端通過監聽連接配接連接配接資料庫的時候常常會遇到下面兩個錯誤,特别在新搭建的環境中 

ORA-12520: TNS:listener could not find available handler for requested type of server 

or 

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor 

    這種情況的原因很多,也包括有很BUG會導緻,下面介紹遇得最多的三種情況。

  1,10g rac環境

    在10g rac環境中,預設建立的資料庫(不管是dbca還是指令方式建立的),預設local_listener沒有配置在vip上面,是以會遇到上面的錯誤,這個錯誤在客戶那裡遇到過幾次了。不過在11G後建立資料庫會自己配置LOCAL_LISTENER到VIP位址上面。

    手動修改local_listener到vip位址就可以了。

節點1: 

SQL>Alter system set LOCAL_LISTENER="(address=(protocol=tcp)(host=192.168.100.50)(port=1521))" scope=both sid='power1';  

節點2: 

SQL>Alter system set LOCAL_LISTENER="(address=(protocol=tcp)(host=192.168.100.50)(port=1521))" scope=both sid='power2';  

  2,process

     預設建立資料庫的process值是150,一般我們在建立資料庫的時候都會修改這個值的大小,但是有些工程師常常忘記修改這個值,這樣當process達到149時,後面的連接配接就會報上面的錯誤,我們通過下面的視圖來檢視v$resource_limit.

SQL> set lines 170 

SQL> select * from gv$resource_limit where rownum <3; 

   INST_ID RESOURCE_NAME                  CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION   LIMIT_VALUE 

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

         1 processes                                       50              58        150                  150 

         1 sessions                                        62              72        247                  247 

     如果processes的值達到149後,我們可以通過下面的指令來修改。

SQL> alter system set processes=1000 scope=spfile sid='*'; 

System altered. 

    不過很悲劇,這個參數是靜态參數,修改後要重新開機instance才會生效。

 3,pmon程序出問題

   我們現在的監聽一般都是配置的動态監聽,由pmon這個程序來負責監聽的注冊與管理,如果當pmon出現hang的時候,也就意思差監聽可能出問題了。

     本文轉自7343696 51CTO部落格,原文連結:http://blog.51cto.com/luoping/1062670,如需轉載請自行聯系原作者