在 Windows 執行 exp/imp 或 sqlplus 時出現 ORA-12560: TNS:protocol adapter error,雖然監聽器與實例均已啟動。本文記錄真實排查過程,證實根因為 **Windows 環境變數 ORACLE_SID 未設定或錯誤**,而非註冊表或監聽器問題。
EXP-00056: 遇到 ORACLE 錯誤 12560
ORA-12560: TNS: 協議適配器錯誤
EXP-00000: 導出終止失敗
lsnrctl status 正常、實例 sqlplus / as sysdba 可連線HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_<Home>\ORACLE_SID 值正確 (orc)ORACLE_SID 連線,Windows 同理SET ORACLE_SID=orc 後 exp 立即正常SET ORACLE_SID=orcs 再現錯誤,改回即恢復Windows 下 Oracle 客戶端工具 (exp/imp/sqlplus) **優先讀取進程環境變數ORACLE_SID**,若未設定則嘗試讀取註冊表。若兩者不一致或皆缺失,即拋出 ORA-12560。
ORACLE_SID = 您的實例名 (如 orc)路徑:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_\ORACLE_SID
值:實例名 (需與資料庫實際 SID 一致)
-- CMD 中檢查當前生效 SID
ECHO %ORACLE_SID%
-- tnsping 測試連線
TNSPING <服務名>
-- 實際測試 exp/imp
EXP user/pass@服務名 FILE=test.dmp FULL=Y
SET ORACLE_SID=xxx 切換實例SET ORACLE_SID=...LOCAL 環境變數 (TNS_ADMIN 別名),優先級高於 ORACLE_SID核心觀念:ORA-12560 在本機連線場景 90% 以上為 ORACLE_SID 未正確傳遞給 Oracle 客戶端庫,而非網路/監聽器故障。