周五了,原本以為可以早早下班回家打游戲;誰知道突然一個電話過來告訴我有一個數據庫掛了,除了本地能登陸,其他所有的方式都無法連接上去;錯誤代碼提示:TNS-12541:無監聽程序。
最初的思路是檢查監聽服務以及配置文件,一路檢查下來就發現服務正常,配置文件也沒問題。這就老火了,到底是哪里出問題了呢,迷茫...
隨后去查看了alert_jxjg.log,發下大量如下錯誤:
Fatal NI connect error 12537, connecting to: (LOCAL=NO) VERSION INFORMATION: TNS for 64-bit Windows: Version 11.2.0.1.0 - Production Oracle Bequeath NT Protocol Adapter for 64-bit Windows: Version 11.2.0.1.0 - Production Windows NT TCP/IP NT Protocol Adapter for 64-bit Windows: Version 11.2.0.1.0 - Production Time: 24-8月 -2018 15:23:34 Tracing not turned on. Tns error struct: ns main err code: 12537 TNS-12537: TNS: 連接關閉 ns secondary err code: 12560 nt main err code: 0 nt secondary err code: 0 nt OS err code: 0 opiodr aborting process unknown ospid (12972) as a result of ORA-609 Fri Aug 24 15:23:44 2018
看這個日志然后思路又跑到監聽配置啊,服務,上面去了。
好吧,就把原來的監聽刪除了重新建(在這過程我發現netmanager這個東西出奇的卡,卡的不要不要的,當時就很郁悶),弄好之后,再次去看日志發現還是一毛一樣的錯誤;人都要開始崩潰了。這時候開始做最壞的打算,從本地登陸吧數據庫備份出來,到另外一個平台去還原。就在准備換去做准備的工作的時候,去看了一下監聽服務狀態,不看不知道,一看嚇一跳,錯誤提示如下:
C:\Users\Administrator>lsnrctl status LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 24-08月-2018 20:1 8:32 Copyright (c) 1991, 2008, Oracle. All rights reserved. 正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.136.7.66)(PORT=1521))) TNS-12541: TNS: 無監聽程序 TNS-12560: TNS: 協議適配器錯誤 TNS-00511: 無監聽程序 64-bit Windows Error: 61: Unknown error 正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
看到這個提示后,拿着死馬當活馬醫的心態,上網找資料。在一篇博客里面找到了這個錯誤的相關資料:
大致的意思就是該錯誤是由於windows平台的一個Bug導致的,只需將監聽服務停掉,然后刪除Listener.log日志文件,再重啟監聽服務就可以正常連接到數據了。
按照資料給的解決方法,最后是成功的。
原文地址,最后:治標的辦法就是關閉監聽日志寫入
LSNRCTL>set current_listener <listener_name>
LSNRCTL>set log_status OFF
LSNRCTL>save_config