Windows 環境下 Oracle 11g 監聽器服務 (OracleOraDb11g_home1TNSListener) 啟動後隨即停止,事件檢視器提示「某些服務在未由其他服務或程序使用時將自動停止」。根因通常為註冊表可執行檔路徑缺少 .exe 後綴,以及系統環境變數 ORACLE_HOME 未設定。本文提供精確修復步驟。
services.msc) 中啟動 OracleOraDb11g_home1TNSListener → 狀態顯示「正在啟動」 → 秒後變為「已停止」。lsnrctl status 報錯 TNS-01106: Listener using listener name LISTENER has already been started 或 TNS-12541: TNS:no listener。Service OracleOraDb11g_home1TNSListener terminated unexpectedly。...BIN\TNSLSNR (無副檔名),Windows 服務控制管理器 (SCM) 無法正確識別可執行檔類型,導致進程啟動後立即被終止。%ORACLE_HOME% 定位 network/admin/listener.ora、sqlnet.ora,變數缺失導致配置讀取失敗,進程異常退出。路徑: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraDb11g_home1TNSListener 值名: ImagePath 原值: D:\oracle_11g\product\11.1.0\db_1\BIN\TNSLSNR 新值: D:\oracle_11g\product\11.1.0\db_1\BIN\TNSLSNR.EXE -- 關鍵:補上 .EXE 後綴 (不分大小寫)
操作:
regedit→ 定位路徑 → 雙擊ImagePath→ 在路徑末尾加.EXE→ 確定。
變數名: ORACLE_HOME 變數值: D:\oracle_11g\product\11.1.0\db_1 -- 指向 Oracle Home 根目錄 (含 BIN、NETWORK、DBS 等子目錄)
操作:
Win+Pause → Advanced system settings → Environment Variables → System variables → New(或編輯現有) → 輸入上述值 → 確定 → 重啟 cmd/PowerShell 使生效。
檢查項 正確配置 異常徵兆 註冊表 ImagePath 完整路徑 + .EXE服務啟動即停、事件 7000/7023 系統環境變數 ORACLE_HOME 指向有效 Oracle Home lsnrctl 報 TNS-01106、listener.ora 讀取失敗 系統環境變數 PATH 包含 %ORACLE_HOME%\BIN命令列找不到 lsnrctl、sqlplus listener.ora 存在性 %ORACLE_HOME%\network\admin\listener.ora監聽器啟動但無端點、服務未註冊 防火牆 1521 埠 入站規則允許 本機連得遠端連不上 五、原文出處致謝
本解決方案整理自:https://blog.csdn.net/hujunsong/article/details/5539669
核心心法:Windows 服務依賴 註冊表精確指向可執行檔 與 進程環境變數正確解析配置路徑 兩大支柱。任何 Oracle 服務異常 (Listener, DBInstance, DBConsole, VSS Writer),優先檢查這兩項,解決 90% 以上啟動即停問題。