Windows 環境下 Oracle Listener 服務啟動失敗、錯誤代碼 3 (路徑不存在)、TNS-01103 協定配接器錯誤,多數源於註冊表 ImagePath 遺失或損毀。本文提供 7 步驟標準排解流程,從症狀確認到註冊表修復、服務驗證、Listener 啟動全記錄。
C:\> lsnrctl start
啟動 tnslsnr:請稍候...
Failed to start service, error 3.
TNS-12536: TNS:作業可能會被阻礙
TNS-12560: TNS:協定配接器錯誤
TNS-00506: 作業可能阻塞
# 服務管理員 (services.msc)
啟動 OracleOraHome81TNSListener 失敗
錯誤 3:系統找不到指定的路徑
服務可執行檔路徑為空白
dir %ORACLE_HOME%\bin\tnslsnr.exe
# 例:F:\Oracle\Ora81\bin\tnslsnr.exe
regedit → 導航至:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraHome81TNSListener
(服務名稱依安裝 Home 而異,如 OracleOraHome92TNSListener、OracleOraDb11g_home1TNSListener)
ImagePath (資料類型 REG_EXPAND_SZ 可展開字串值)。常見問題:值遺失、或路徑錯誤、或引號缺失。ImagePath。F:\Oracle\Ora81\bin\tnslsnr
# 或
"C:\Program Files\Oracle\product\19.0.0\dbhome_1\bin\tnslsnr"
services.msc → 找到同名服務 → 啟動 → 應顯示「正在執行」。C:\> lsnrctl start
TNS-01106: 使用名稱 LISTENER 的監聽器已經啟動
C:\> lsnrctl status
連接至 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=...)(PORT=1521)))
LISTENER 的 STATUS
...
服務摘要...
PLSExtProc 具有 1 個服務處理程序
orcl 具有 1 個服務處理程序
命令執行成功
SVRMGR> connect internal/sys@orcl
連接成功。
ImagePath 被誤刪或未正確寫入。ORACLE_HOME 並存時,服務名稱衝突導致錯誤 Home 的路徑被寫入。srvctl (RAC) 或 oradim 管理服務,避免手動編輯註冊表。# listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) -- 0.0.0.0 監聽所有介面
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl) # 服務名
(ORACLE_HOME = F:\Oracle\Ora81)
(SID_NAME = orcl) # 實例名
)
)
ADMIN_RESTRICTIONS_LISTENER = ON # 防止遠程修改 Listener 設定
Listener 是資料庫對外服務的大門,服務啟動失敗直接導致所有遠程連線中斷。掌握註冊表 ImagePath 修復技巧,能在 5 分鐘內恢復服務,避免長時間業務中斷。