Oracle Client (Instant Client / Full Client) 安裝後,需配置 tnsnames.ora、sqlnet.ora 才能連線遠端資料庫。本文以圖文並茂方式說明通訊架構、Listener 配置、Client 端設定全流程。
Client App → OCI/ODP.NET/JDBC → tnsnames.ora (解析 TNS 別名)
↓
TCP/IP + Oracle Net Protocol
↓
Server Listener (port 1521) → listener.ora (驗證 SID/Service)
↓
Database Instance
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db-server)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl.example.com)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
(SID_NAME = orcl)
)
)
啟動:lsnrctl start;驗證:lsnrctl status。
ORCL_REMOTE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.example.com)
)
)
HOST:資料庫伺服器 IP 或主機名 (需可解析)。SERVICE_NAME:對應 Server GLOBAL_DBNAME 或 SERVICE_NAMES 參數。SID (舊寫法):對應 SID_NAME,單實例可用。NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)
SQLNET.EXPIRE_TIME = 10 # 偵測死連線 (分鐘)
TCP.CONNECT_TIMEOUT = 60 # 連線逾時 (秒)
TRACE_LEVEL_CLIENT = OFF # 關閉 Trace 提升效能
tnsping ORCL_REMOTE
sqlplus user/pass@ORCL_REMOTE
instantclient-basic-linux.x64-19.x.x.x.x.zip + sqlplus + odbc 等套件。/opt/oracle/instantclient_19_3。export ORACLE_HOME=/opt/oracle/instantclient_19_3export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATHexport PATH=$ORACLE_HOME:$PATHexport TNS_ADMIN=$ORACLE_HOME/network/admin (放置 tnsnames.ora)network/admin 目錄放入 tnsnames.ora、sqlnet.ora。| 錯誤 | 原因 | 解決 |
|---|---|---|
| ORA-12154 | TNS 別名解析失敗 | 檢查 tnsnames.ora 格式、TNS_ADMIN 路徑 |
| ORA-12541 | Listener 未啟動 | Server 執行 lsnrctl start |
| ORA-12514 | Listener 不認得 SID/Service | 對應 listener.ora GLOBAL_DBNAME / SERVICE_NAMES |
| ORA-12560 | 32/64 位元不匹配 | Client 與 App 位元數一致 |
照著架構圖 → Server Listener → Client tnsnames → 驗證,遠端連線零失誤。