造成OracleOraDb10g_home1TNSListener服務無法啟動可能有三種情況:
無法啟動彈出的信息框顯示信息:“本地計算機上的OracleOraDb10g_home1TNSListener服務啟動後停止。某些服務在未由其他服務或程序使用時將自動停止。”
因listener.ora文件配置有錯誤導致無法啟動的解決思路:檢查是否修改過計算機名,如果是HOST修改成電腦正確的計算機名;配置文件的HOST是否設置為動態IP,如果是修改成電腦的計算機名或127.0.0.1;直接修改listener.ora文件,或通過net Manager工具重新創建監聽。 下面是我個人listener.ora文件配置,可參考下:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = E:\oracle\product\10.2.0\db_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = E:\oracle\product\10.2.0\db_1) (SID_NAME = ORCL) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = 自己的計算機名稱)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) )
如果通過上面步驟還是無法啟動,請檢查注冊表配置:
先運行regedit 啟動注冊表編輯器
在HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/下的Services和CurrentControlSet/Services下找到OracleOraDb10g_home1TNSListener項,查看是否存在ImagePath 項,如果沒有就創建一個,數值設置: 自己的安裝目錄\db_1\BIN\TNSLSNR;如果還是無法啟動,嘗試修改成:自己的安裝目錄\db_1\BIN\TNSLSNR.exe 試試,有些網友說是因這個設置的值後面有空格,沒加.exe引起的。 如圖:
如果通過上面還無法啟動OracleOraDb10g_home1TNSListener服務,我的建議是在允許的情況下重裝oracle ,做冷備份恢復數據庫。
本人就是因在公司的服務器裡(原已經存在10g的服務端),安裝了一個11g的客戶端,然後要用它自帶的卸載工具卸載後,導致OracleOraDb10g_home1TNSListener服務異常無法啟動。然後折騰了一天還是啟動不了,然後才實施重新安裝oracle,因為公司有50g 的數據在那個服務器,沒方法才刪除oracle重新安裝,也就是在我卸載時才發現已經沒有oracle 產品卸載,才恍然大悟。
如果你oracle有數據庫,需要恢復,那你就要在重新安裝前做好相關准備,如備份好原數據庫文件,控件文件等,一般時存在 oracle\product\10.2.0\oradata
比如:你原來是安裝在E:\oracle, 先完美刪除oracle 後,把E:\oracle 修改成 E:\oracle_old; 然後重啟電腦後安裝oracle,路徑按照原來的安裝目錄去安裝,安裝成功後,把E:\oracle_old目錄下的\product\10.2.0\oradata的文件夾orcl 全部復制到新的安裝目錄,基本就實現冷備份恢復了。
詳細完美刪除及冷備份恢復操作,請百度參考其他網友的教程。