1、錯誤描述php
登錄PL/SQL Developer登錄本地數據庫時先報沒有監聽程序,查看服務發現Oracle監聽服務沒有啓動。右擊啓動監聽程序,報錯:數據庫
錯誤描述:本地計算機上的OracleOraDb11g_home1TNSListener服務啓動後又中止了。一些服務自動中止,若是它們沒有什麼可作的,例如 "性能日誌和警報 "服務。網絡
2、緣由分析oracle
你安裝oracle的時候是連網的,那麼listener.ora文件裏的HOST=網絡給你分配的IP地址,而在你斷網的時候就會出現這樣的狀況。性能
3、解決辦法ui
方法一:監聽器spa
經過listener.ora或者Net Manager修改監聽器配置。將原來本地字符串127.0.0.1或者localhost改成主機名。3d
首先查閱你的**\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纔可正常登陸進去,不然無監聽程序。如:blog
上面這裏是"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沒有)。