首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 網路連通三駕馬車:全域資料庫名、監聽程式、網路服務名

     編輯:Oracle 資料庫基礎

Oracle 網路架構基礎

Oracle 是典型的網路資料庫,其通訊協議結構類似 OSI 參考模型,擁有自有分層機制。透過網路實現:資料共享、完整性控制、安全傳輸、跨平台互操作(Linux/Windows、多硬體平台)。

保障 Oracle 網路連通的三大核心要素:
1. 全域資料庫名 | 2. 監聽程式 | 3. 網路服務名

第一駕馬車:全域資料庫名

域名命名規則借鑒

如同網域名 www.chinaitlab.com 由右至左層層遞歸:

  • .cn → 地理頂級域
  • .com → 二級域
  • chinaitlab → 實體域名

Oracle 採用相同層級結構命名分散部署的資料庫:

全域資料庫名 = 資料庫名 + 域名

企業分散部署範例

某企業總部在杭州,分支機構在寧波、舟山:

節點資料庫名域名全域資料庫名
杭州總部ORALDTMORAL.DTM
寧波分公司ORALNINGBO.DTMORAL.NINGBO.DTM
舟山分公司ORALZHOUZHAN.DTMORAL.ZHOUZHAN.DTM

兩大核心效益

  1. 擴充彈性:單資料庫起步,後續擴展分散式環境**無需更改既有資料庫名稱**
  2. 連線便利:應用程式透過完整全域名精準指定目標資料庫,切換極為簡單

建議

即使目前僅單一資料庫,**也應依全域命名規則命名**,為未來擴充與維護鋪路。

第二駕馬車:網路服務名

定義與角色

  • 連線指令中的 @ 後字串:conn system/passwd @tsh → tsh 即網路服務名
  • 資料庫伺服器在**客戶端**的別名
  • 一個資料庫可對應多個網路服務名
  • 核心功能:將連線識別符解析為連線描述符(含服務名、路由資訊/監聽器網路位址)

設定儲存位置

客戶端 TNSNAMES.ORA 檔案

常見故障與防範對策

故障現象可能原因解決建議
非正常關機後無法連線,提示服務名錯誤TNSNAMES.ORA 損毀/遺失**獨立備份**此檔案,故障時直接還原
手工修改 TNSNAMES.ORA 導致格式錯誤語法錯誤、編碼問題**禁止手工編輯**,使用 Net Configuration Assistant / Net Manager 圖形工具管理
無法解析全域資料庫名DNS/主機檔解析失敗嘗試將 TNSNAMES.ORA 中 HOST 改為 **IP 位址** 繞過解析
防火牆阻擋連線Linux 預設開啟防火牆學習環境暫時關閉防火牆;生產環境開放 1521 埠及監聽器動態埠範圍

最佳實踐建議

  1. 定期備份 TNSNAMES.ORA、LISTENER.ORA、SQLNET.ORA
  2. 統一使用 Oracle 官方圖形工具管理網路設定
  3. 建立標準化命名規範:__ (如 ORCL_PROD_APP)

第三駕馬車:監聽程式

核心職責

  • 運行於**伺服器端**的獨立服務進程
  • 監聽埠(預設 1521),接收客戶端連線請求
  • 驗證客戶端連線資訊(協定、埠、服務名等)與 LISTENER.ORA 設定是否匹配
  • 匹配 → 授權建立伺服器進程/線程處理連線
    不匹配 → 拒絕連線
  • 管理客戶端-伺服器間網路通訊流量

形象比喻

監聽程式 = 飯店門口保安
客戶端請求 = 客人到訪
驗證通過 = 開門放行
驗證失敗 = 攔截拒絕

關鍵故障點

伺服器端監聽程式未啟動 → 所有網路連線全部失敗(本地連線 BEQ 協定除外)

監聽器核心管理指令

-- 狀態檢查
lsnrctl status

-- 啟動/停止
lsnrctl start
lsnrctl stop

-- 重新載入設定 (不中斷現有連線)
lsnrctl reload

-- 查看支援的服務
lsnrctl services

三駕馬車協同運作流程

客戶端應用程式
    │
    ▼ (1) 讀取 TNSNAMES.ORA 解析「網路服務名」
    │     取得:服務名(全域資料庫名) + 監聽器位址(IP:PORT)
    ▼
發起 TCP 連線至 監聽器 IP:PORT
    │
    ▼ (2) 監聽器接收請求,驗證服務名是否在 LISTENER.ORA 註冊
    │
    ├─ 驗證通過 → 啟動專用/共享伺服器進程 → 移交連線
    │
    └─ 驗證失敗 → 返回錯誤 (ORA-12514, ORA-12505 等)
    │
    ▼ (3) 伺服器進程連接資料庫執行個體 (SGA+背景進程)
    │
    ▼ (4) 執行個體掛載/開啟目標資料庫 (控制檔→資料檔)
    │
    ▼ 完成連線,開始 SQL 交互

總結

三駕馬車缺一不可:

  • 全域資料庫名 提供全域唯一身分識別,支援分散式擴充
  • 網路服務名 提供客戶端友善別名與路由解析
  • 監聽程式 提供伺服器端連線閘道與安全驗證

掌握三者交互機制與常見故障排查,是 Oracle DBA 必備核心技能。

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