一、錯誤描述
登陸PL/SQL Developer登陸本地數據庫時先報沒有監聽程序,查看服務發現Oracle監聽服務沒有啟動。右擊啟動監聽程序,報錯:
錯誤描述:本地計算機上的OracleOraDb11g_home1TNSListener服務啟動后又停止了。一些服務自動停止,如果它們沒有什么可做的,例如 "性能日志和警報 "服務。
二、原因分析
你安裝oracle的時候是連網的,那么listener.ora文件里的HOST=網絡給你分配的IP地址,而在你斷網的時候就會出現這樣的情況。
三、解決辦法
方法一:監聽器
通過listener.ora或者Net Manager修改監聽器配置。將原來本地字符串127.0.0.1或者localhost改為主機名。
首先查閱你的**\product\11.2.0\dbhome_1\NETWORK\ADMIN目錄下的"tnsnames.ora"和"listener.ora"這兩個文件,然后看看里面的"HOST"信息,看看是不是你當前的ip地址,如果不是嘗試着把這個2個文件改成你的ip地址,或直接就改成127.0.0.1(或計算機名字):
注意:此時的監聽配置文件"listener.ora"里面的HOST=的內容(IP或者主機名)必須和,服務配置文件"tnsnames.ora"里面,你想要鏈接的服務的HOST=的內容完全一致。意思就是說要么都是IP地址,要么都是主機名。如果有多個服務(Net Manager中配置的網絡服務)那么查看"tnsnames.ora"文件中與監聽HOST內容一致的PL/SQL才可正常登錄進去,否則無監聽程序。如:
上面這里是"listener.ora"里面的HOST,我的是主機名。
上面這里是"tnsnames.ora"的配置信息,由於我的機子上面裝了兩個數據庫DB1,DB2。分別建立了連接服務也叫做DB1,DB2。(不知道什么情況,建好后tnsnames.ora里一個HOST是IP地址,另一個是我的主機名。)結果導致DB1的PL/SQL正常連接進入(因為是IP地址和listener.ora的HOST地址完全匹配),而DB2的PL/SQL卻提示沒有監聽程序。(什么情況,DB1不是都正常進入了么咋還沒有監聽呢。我去~~)后來網上找教程說是【修改"listener.ora"的HOST地址,如果是IP則改成主機名】於是照搬。運行PL/SQL,DB2登陸成功,爽啊。結果DB1沒有監聽程序(什么情況啊)。后來查看"listener.ora"發現此問題,說明兩個文件的HOST的內容需要完全匹配才行,全部改成主機名,兩個數據庫登陸都成功,搞定!
方法二:環境變量
環境變量中ORACLE_HOME改為:***(你自己的安裝路徑)\product\11.2.0\dbhome_1
有的情況,裝貌似安裝客戶端被自動改為**:\Ora11InstantClient了
方法三:注冊表
KEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/OracleOraDb11g_home1TNSListener
中的ImagePath改為:D:\oracle\product\10.2.0\db_1/BIN/TNSLSNR.EXE(之前后面的.EXE沒有)。