tnsping
│
├─ 失敗 ORA-12541 → 檢查 Listener 服務/進程
├─ 成功但連線失敗 ORA-12500/12560 → 檢查 DB 例程服務
└─ 成功且連線正常 → 應用層問題 (連線字串、防火牆、權限)
原因:監聽器未啟動或損壞
解決:
services.msc → 啟動 Oracle*TNSListenerlsnrctl start / lsnrctl statusNet Configuration Assistant → Listener Configuration → 刪除舊監聽器 → 新增 → 一路預設完成共同原因:資料庫例程服務未啟動
解決:
services.msc → 啟動 OracleService(如 OracleServiceORCL)net start OracleServiceORCL原因:登錄檔服務參數損壞
終極修復:
REM 以系統管理員身分執行 CMD
ORADIM -DELETE -SID ORCL
ORADIM -NEW -SID ORCL -STARTMODE AUTO -PFILE "C:\Oracle\admin\ORCL\pfile\init.ora"
REM 若報錯,重開機後再執行一次
原因:tnsnames.ora 缺少服務名定義、路徑錯誤、語法錯誤
解決:
Net Configuration Assistant → Local Net Service Name Configuration → 新增/修正TNS_ADMIN 環境變數指向正確目錄tnsping 原因:服務已啟動但資料庫處於 MOUNT/NOMOUNT 狀態,未 OPEN
解決:
sqlplus / as sysdba
SQL> STARTUP;
-- 或
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE OPEN;
終極大絕招:
oracle.exe, oradim.exe 所有進程ora_startup.bat:@echo off
net start OracleOraHome92TNSListener
net start OracleServiceORCL
REM 若資料庫未 OPEN,加入下列兩行
REM sqlplus / as sysdba @startup.sql
REM startup.sql 內容:STARTUP;
ora_startup.bat| 服務名稱 | 對應功能 | 關鍵埠 |
|---|---|---|
| Oracle*TNSListener | 網路監聽 | 1521 |
| OracleService | 資料庫例程 | — |
| Oracle*HTTPServer | iAS/Apache | 7777/7778 |
| Oracle*ManagementServer | OMS | 7771 |
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% 的連線問題。