我們在用戶端通過監聽連接配接連接配接資料庫的時候常常會遇到下面兩個錯誤,特别在新搭建的環境中
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,如需轉載請自行聯系原作者