首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

解決 ORA-12560: TNS:協議適配器錯誤:正確設定 ORACLE_SID 登入資料庫

     編輯:Oracle 資料庫相關知識

Windows 環境下使用 sqlplus /nolog 或直接 sqlplus user/pass 時常遇到 ORA-12560: TNS:protocol adapter error。根因通常是作業系統層面未設定 ORACLE_SID 環境變數,導致無法識別本地實例。本文提供最快修復步驟與原理解析。

一、錯誤現象

C:\> sqlplus scott/tiger
SQL*Plus: Release 11.2.0.4.0 Production
ERROR:
ORA-12560: TNS:protocol adapter error

二、根因分析

  • Oracle Windows 依賴環境變數 ORACLE_SID 定位本地實例 (Bequeath 協議)
  • 未設定時,sqlplus 嘗試走 TNS Listener (TCP/IPC),但 Listener 未啟動或服務未註冊
  • 預設實例名通常為 orcl (安裝時指定)

三、修復步驟 (命令列臨時生效)

C:\> SET ORACLE_SID=orcl
C:\> sqlplus scott/tiger
SQL*Plus: Release 11.2.0.4.0 Production
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SQL>

關鍵點:orcl 為實例名 (SID),而非 TNS 服務名、連線名或用戶名。可透過 services.msc 查看 OracleService 服務名確認。

四、永久生效設定

  1. 系統環境變數:Win+Pause → 進階系統設定 → 環境變數 → 系統變數 → 新增 ORACLE_SID=orcl
  2. 註冊表:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_\ORACLE_SID
  3. 腳本自動化:在登入腳本或啟動項加入 SET ORACLE_SID=orcl

五、進階排查 (設定 SID 仍失敗)

現象可能原因對策
ORA-12514 / ORA-12541Listener 未啟動或服務未註冊lsnrctl start、檢查 listener.ora、tnsnames.ora
ORA-01031 / ORA-01017認證失敗 (密碼錯、權限不足)確認用戶/密碼、REMOTE_LOGIN_PASSWORDFILE
ORA-27101 / ORA-01034實例未啟動sqlplus / as sysdba → STARTUP
多實例環境SID 設錯用 SET ORACLE_SID=正確SID

六、Linux/Unix 環境對比

# Linux 通常透過 .bash_profile 設定
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH

# 登入後直接生效,無 ORA-12560 (Bequeath 協議在 Unix 原生支援良好)

設定 ORACLE_SID 是 Windows 連接本地 Oracle 的第一步,解決 90% 的 ORA-12560 問題。養成「先設 SID,再連線」的操作習慣,避免無謂排查。

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