Oracle 網路架構類似 OSI 分層,但有自有協定堆疊。保障連通性的核心三要素:**全域資料庫名、監聽程式、網路服務名**。
借鑑 DNS 域名倒樹結構:資料庫名.子域.頂級域 (如 ORAL.NINGBO.DTM)。確保分散式環境下名稱全域唯一。
NAMES.DEFAULT_DOMAIN 簡化同域連線。即使目前單機,也請依全域命名規則定名,為未來擴充鋪路。
接收遠端連線請求,根據服務名轉交給專用/共用伺服器進程。本地連線 (IPC/Bequeath) 不經 Listener。
listener.ora:定義監聽協定/埠/主機、服務實例 (SID/GLOBAL_DBNAME/ORACLE_HOME)。lsnrctl start|stop|status|services客戶端專用,將簡易別名 (如 ORCL) 解析為 (DESCRIPTION=(ADDRESS=...)(CONNECT_DATA=(SERVICE_NAME=...)))。
sqlnet.ora 中 NAMES.DIRECTORY_PATH 確定解析順序 (預設 TNSNAMES)。tnsnames.ora 取得主機/埠/服務名。| 語法 | 認證方式 | 需 Listener | 適用場景 |
|---|---|---|---|
| sqlplus / as sysdba | OS 認證 | 否 | 本地 DBA 維護 |
| sqlplus user/pass | 資料庫認證 | 否 | 本地應用 |
| sqlplus user/pass@tns_alias | 資料庫認證 | 是 | 遠端應用 (最常用) |
lsnrctl status:確認服務已註冊、狀態 READY。tnsping alias:驗證客戶端解析路徑、Listener 可達。SQL> SHOW PARAMETER SERVICE_NAMES / SELECT OPEN_MODE FROM V$DATABASE:確認實例狀態。在 listener.ora 設定 GLOBAL_DBNAME,sqlnet.ora 加入 HOSTNAME 解析路徑,客戶端直連 user/pass@hostname,適合大量客戶端、IP 變動頻繁環境。
全域名解決「是誰」,Listener 解決「在哪聽」,服務名解決「怎麼連」。三者缺一不可,配置規範是穩定連通的前提。