ORA-12520: TNS: 監聽程式無法為請求的伺服器型別找到可用的處理程式

不一樣的天空w發表於2017-08-04
ORA-12520: TNS: 監聽程式無法為請求的伺服器型別找到可用的處理程式

監聽日誌太大;記憶體耗盡;os程式耗盡;CPU過忙;連線風暴;共享池記憶體收縮...都會導致這種情況
根據網上資料:
當你碰到ORA-12520錯誤時,如下所示:

英文:
ORA-12520: TNS:listener could not find available handler for requested type of server
中文:
ORA-12520: TNS: 監聽程式無法為請求的伺服器型別找到可用的處理程式

一般你應該從下面兩個方面考慮:
1:資料庫是專用伺服器,但是在tnsname.ora配置檔案中設定的連線方式是shared,這種情況需要修改tnsname.ora配置檔案,這種錯誤情況一般發生在第一次連線資料庫伺服器。

如下所示,將資料庫伺服器關閉共享伺服器配置後,然後用PL/SQL Developer連線資料庫,就會出現ORA-12520錯誤。
alter system set shared_servers=0 scope=both;
 
System altered.


2:執行正常的資料庫伺服器,突然報ORA-12520錯誤,一般是因為process不夠引起的。需要增大processes引數的值。


然而進過檢查伺服器、客戶端都是dedicated模式,且process引數足夠。。

接著檢視監聽日誌發現達到4g,現象是從1號開始的,而監聽日誌不寫東西是從上個月31號,現象基本符合,可能是由於監聽日誌過大引起的

解決:
oracle 監聽器日誌檔案過大導致該檔案無法更新
解決操作步驟 :

lsnrctl set log_status off ### 先把日誌狀態停掉,這樣就不會寫監聽器日誌
現在就可以把 監聽器日誌檔案備份mv 或是 刪掉rm
lsnrctl set log_status on ### 重新開啟日誌,開始記錄監聽器日誌。該檔案會自動建立

可以執行 lsnrctl status ,檢查監聽器日誌檔案

切記 : 不能直接 cat /dev/null > listener_testdb1.log 除非在監聽器關閉的情況下。
否則,即便檔案已經被清空,監聽器還是無法執行寫入日誌的。

另外也可以指定監聽器日誌檔案的名字,而不需要系統生成的檔名:

==========================
如何確定oracle資料庫的連線模式是專用,還是共享模式

這個問題既與引數shared_servers、dispatchers有關,還與伺服器、客戶端的TNSname.ora檔案有關係。

在DB端的shared_servers引數控制server是否能接受share server連線,但是,client可以透過在TNSname.ora 來設定強制使用DEDICATED

如下,4種情況:

DB shared_servers = 0 , TNSname.ora server=shared或者不設定 ==> DEDICATED連線

DB shared_servers = 0 , TNSname.ora server=DEDICATED ==> DEDICATED連線

DB shared_servers > 0 , TNSname.ora server=DEDICATED ==> DEDICATED連線

DB shared_servers > 0 , TNSname.ora server=shared或者不設定 ==> Shared連線



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

相關文章