命令列執行 tnsping 服務名 檢查網路層面連通性,依錯誤代碼進一步排查。
最常見原因:防火牆攔截。優先關閉或在防火牆開放 1521 埠(或自訂埠)。
次要檢查: tnsnames.ora 設定中 HOST 是否正確(IP vs 主機名)、PORT 是否一致、SID/SERVICE_NAME 是否匹配。
# 正確範例
ORCL =
(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = orcl.dbse.lamost))
)
監聽器未啟動。命令列執行:
lsnrctl start
若仍失敗,檢查 listener.ora 設定、埠號衝突、主機名解析。
| 錯誤代碼 | 典型原因 | 快速檢查動作 |
|---|---|---|
| ORA-12514 | 監聽器不知道請求的 SID/Service | 檢查 listener.ora SID_LIST 或動態註冊狀態 (lsnrctl services) |
| ORA-12505 | 類似 12514,Service Name 不匹配 | 確認 tnsnames.ora SERVICE_NAME 與資料庫 service_names 參數一致 |
| ORA-12170 | 連線逾時(客戶端等待) | 防火牆、網路延遲、sqlnet.ora SQLNET.OUTBOUND_CONNECT_TIMEOUT |
| ORA-01017 | 帳號/密碼錯誤 | 確認大小寫、密碼檔、sec_case_sensitive_logon |
| ORA-12560 | 協定介面卡錯誤(Windows 常見) | OracleService |
SERVICE_NAME 而非 SID,支援 RAC/Data Guard 切換。sqlnet.ora 設定 NAMES.DIRECTORY_PATH=(TNSNAMES, EZCONNECT) 簡化連線字串。ADMIN_RESTRICTIONS=ON 防止遠程非授權管理。tnsnames.ora, listener.ora, sqlnet.ora 至版控系統。