ORA-12516: TNS: 監聽程序無法找到匹配協議棧的可用句柄

使用PL/SQL Developer 數據庫遠程客戶端連接程序連接數據庫:
錯誤信息:
ORA-12516: TNS: 監聽程序無法找到匹配協議棧的可用句柄.
TNS-12516 TNS:listener could not find available handler with matching protocol stack

導致原因可能為:
1.一般是由于數據庫的當前會話數不滿足造成的,相關的參數有兩個:processes和sessions
(1)首先查看當前這兩個參數的值
sql>conn / as sysdba
sql>select count(*) from v$session;  從這里可以看出當前的session數
sql>show parameter processes;    從輸出的信息可以看到當前數據庫中參數processes的值
sql>show parameter sessions;     從輸出的信息可以看到當前數據庫中參數sessions的值
這二者的關系是:sessions=(1.1*processes+5)
(2)修改這兩個參數
alter system set processes=300 scope=spfile;
alter system set sessions=335 scope=spfile;
(3)重新啟動數據庫服務,使這兩個參數生效。
(4)如果數據庫服務無法正常啟動,則可能是solaris10系統參數seminfo_semmns設置的偏小,因為每個process會占用一個semmns,semmns調整后需要重新啟動操作系統。
semmns的計算公式為:   SEMMNS>processes+instance_processes+system
processes=數據庫參數processes的值   instance_processes=5(smon,pmon,dbwr,lgwr,arch)

2.可能是tnsnames.ora文件中的配置的 "SERVICE_NAME ="和 對應值(數據庫名稱) 中間多了個空格,需要去掉 之間的空格,好像有沒有空格沒有影響,已驗證(可能有時候是這樣引發ORA-12516)

3.如果做以上操作仍無法排除ORA-12516 ,需要做最后嘗試 :單獨重啟啟動 databasenameSeverice (databasename:是要連接目標數據庫而引發ORA-12516 錯誤的目標數據庫名稱)
已嘗試:有效

(4) listener.log日志太大引發的,listener.log日志記錄了通過listener處理的網絡請求信息,它包含客戶端請求的時間,連接方式(專用或共享),連接程序,網絡協議,主機名,網絡端口號等信息,listener.log的文件內容沒有太大意義,可以不讓listener寫日志。
 操作時:#在listener.ora文件最后加入一行: logging_listener=off
 本文由用戶 JenMin2012 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!