首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

解決 Oracle「無監聽器」與連線失敗的完整排查手冊

     編輯:Oracle 資料庫基礎

快速診斷流程圖

tnsping 
  │
  ├─ 失敗 ORA-12541 → 檢查 Listener 服務/進程
  ├─ 成功但連線失敗 ORA-12500/12560 → 檢查 DB 例程服務
  └─ 成功且連線正常 → 應用層問題 (連線字串、防火牆、權限)

錯誤代碼對照與解決方案

1. ORA-12541: TNS: no listener

原因:監聽器未啟動或損壞

解決:

  1. services.msc → 啟動 Oracle*TNSListener
  2. 命令列:lsnrctl start / lsnrctl status
  3. 若服務啟動失敗:Net Configuration Assistant → Listener Configuration → 刪除舊監聽器 → 新增 → 一路預設完成

2. ORA-12500: TNS: listener failed to start dedicated server process

3. ORA-12560: TNS: protocol adapter error

共同原因:資料庫例程服務未啟動

解決:

  1. services.msc → 啟動 OracleService(如 OracleServiceORCL)
  2. 命令列:net start OracleServiceORCL

4. 例程服務啟動失敗(卡在「正在啟動」或立即停止)

原因:登錄檔服務參數損壞

終極修復:

REM 以系統管理員身分執行 CMD
ORADIM -DELETE -SID ORCL
ORADIM -NEW -SID ORCL -STARTMODE AUTO -PFILE "C:\Oracle\admin\ORCL\pfile\init.ora"
REM 若報錯,重開機後再執行一次

5. ORA-12154: TNS: could not resolve the connect identifier specified

原因:tnsnames.ora 缺少服務名定義、路徑錯誤、語法錯誤

解決:

  1. Net Configuration Assistant → Local Net Service Name Configuration → 新增/修正
  2. 確認 TNS_ADMIN 環境變數指向正確目錄
  3. 測試:tnsping

6. ORA-1034: ORACLE not available

原因:服務已啟動但資料庫處於 MOUNT/NOMOUNT 狀態,未 OPEN

解決:

sqlplus / as sysdba
SQL> STARTUP;
-- 或
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE OPEN;

7. 頑固型 ORA-12560 / 連線閃退

終極大絕招:

  1. 工作管理員 → 結束 oracle.exe, oradim.exe 所有進程
  2. 建立 ora_startup.bat:
@echo off
net start OracleOraHome92TNSListener
net start OracleServiceORCL
REM 若資料庫未 OPEN,加入下列兩行
REM sqlplus / as sysdba @startup.sql
REM startup.sql 內容:STARTUP;
  1. 以系統管理員身分執行 ora_startup.bat

對應關係對照表

服務名稱對應功能關鍵埠
Oracle*TNSListener網路監聽1521
OracleService資料庫例程—
Oracle*HTTPServeriAS/Apache7777/7778
Oracle*ManagementServerOMS7771

預防性維護建議

  • 建立 ora_startup.bat / ora_shutdown.bat 標準化啟關機流程
  • 設定服務為「自動 (延遲啟動)」,避免開機競爭資源導致啟動失敗
  • 定期檢查 listener.log、alert.log 異常訊息
  • 備份 tnsnames.ora, listener.ora, sqlnet.ora 至版控系統

結語

「無監聽器」與連線失敗的核心邏輯只有三條線:**Listener 啟動 → 例程啟動 → 服務名解析**。掌握 lsnrctl, tnsping, ORADIM, sqlplus / as sysdba 四大工具,按圖索驥即可在 5 分鐘內定位並解決 95% 的連線問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved