Oracle 客戶端與伺服器的網路連線,核心在於**監聽器**與**本地服務名稱**的正確配置。本文採用「圖形化工具優先、命令列驗證」的實戰路徑,手把手教您完成伺服器端監聽部署、客戶端 TNS 配置與連線測試,並解決常見連線失敗陷阱。
tnsnames.ora 條目,包含協議、主機、Port、Service Name/SID。開始 > 程式集 > Oracle - OraHome > Configuration and Migration Tools > Net Manager;Linux/Unix 執行 netmgr。LISTENER(可自訂)。TCP/IP → 主機填 **IP 位址**(跨網段必填 IP) → Port 1521(或自訂)。myORACLE.192.168.1.5,含域名確保唯一)→ Oracle Home 可留空 → SID(如 myOracle)。$ORACLE_HOME/network/admin/listener.ora。# listener.ora 範例
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = myORACLE.192.168.1.5)
(ORACLE_HOME = /u01/app/oracle/product/19c)
(SID_NAME = myOracle)
)
)
MYDB_TNS,前勿加空格)→ 協議 TCP/IP → 主機填伺服器 IP → Port 1521 → 服務名稱填伺服器端 GLOBAL_DBNAME 或 SID。$ORACLE_HOME/network/admin/tnsnames.ora。MYDB_TNS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = myORACLE.192.168.1.5)
)
)
# 啟動監聽器
$ lsnrctl start # 預設 LISTENER
$ lsnrctl start aListener # 自訂名稱
# 啟動資料庫實例
SQL> conn sys@MYDB_TNS as sysdba
SQL> startup
# 或本機 OS 驗證
SQL> conn / as sysdba
SQL> startup
C:\> lsnrctl start
C:\> oradim -startup -sid myOracle # 啟動實例服務
C:\> oradim -shutdown -sid myOracle # 關閉實例服務
注意:監聽器與資料庫實例**必須同時啟動**,客戶端才能成功連線。
| 現象 | 排查方向 |
|---|---|
| ORA-12541: TNS:no listener | 監聽器未啟動、Port 錯誤、防火牆攔截 |
| ORA-12514: Listener does not know service | listener.ora 缺 SID_LIST、服務名稱拼寫錯誤、資料庫未向監聽器註冊 (PMON) |
| ORA-12154: TNS could not resolve | tnsnames.ora 路徑錯、服務名稱拼寫錯、TNS_ADMIN 環境變數未設定 |
| ORA-01017: invalid username/password | 帳號鎖定、密碼過期、大小寫敏感 (11g+ SEC_CASE_SENSITIVE_LOGON) |
lsnrctl start LISTENER_APP。sqlplus user/pwd@192.168.1.10:1521/myORACLE。掌握監聽器與 TNSNAMES 的配置邏輯,是 Oracle DBA 與開發人員的必修基本功。建議優先使用 Net Manager 圖形化操作,再以命令列驗證,養成「配置即驗證」的習慣。