首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 資料庫命名體系完整解析:DB_NAME、DB_DOMAIN、GLOBAL_NAME、SERVICE_NAME、NET SERVICE NAME

     編輯:Oracle 資料庫相關知識

Oracle 提供多層次命名機制,支援單機到分散式環境。本文系統梳理五大核心名稱的定義、關係、預設值與常見配置錯誤 (ORA-12154)。

五大名稱對照

名稱定義與用途組成/預設值修改方式
DB_NAME資料庫唯一標識 (8 字元內,字母/數字/_/#/$)建庫時指定重建資料庫或 NID 工具
DB_DOMAIN邏輯網域名稱,供分散式管理區分同名資料庫,無關 DNS參數 db_domain修改參數檔 + 重啟
GLOBAL_NAMEDB_NAME.DB_DOMAIN,全域唯一標識,建議作為資料庫正式名稱預設 = DB_NAME.DB_DOMAINALTER DATABASE RENAME GLOBAL_NAME TO new_name
SERVICE_NAME8i 新增,對應一個資料庫 (非實例),支援 RAC 多實例單一服務名,預設 = GLOBAL_NAME參數 service_names (可多值)動態修改 ALTER SYSTEM SET SERVICE_NAMES
NET SERVICE NAME客戶端連線別名 (TNS Alias),屏蔽連線細節,記錄於 tnsnames.ora自訂字串編輯 tnsnames.ora

關鍵關係圖

DB_NAME + DB_DOMAIN → GLOBAL_NAME (預設)
GLOBAL_NAME → SERVICE_NAME (預設,可多對一)
NET SERVICE NAME → (DESCRIPTION → ADDRESS + CONNECT_DATA (SERVICE_NAME|SID))

經典錯誤:ORA-12154 (TNS:could not resolve the connect identifier specified)

場景

-- tnsnames.ora
HZUAT = (DESCRIPTION = (ADDRESS = (PROTOCOL=TCP)(HOST=10.18.1.102)(PORT=1521))
          (CONNECT_DATA = (SERVICE_NAME=hzuat)))

-- sqlnet.ora
NAMES.DEFAULT_DOMAIN = staff.ebao.com

客戶端執行 sqlplus user/pwd@HZUAT 報 ORA-12154。

原因

sqlplus 讀取 sqlnet.ora 的 NAMES.DEFAULT_DOMAIN,自動將 HZUAT 擴展為 HZUAT.staff.ebao.com,導致在 tnsnames.ora 找不到對應條目。

解決

  1. 刪除或註解 sqlnet.ora 的 NAMES.DEFAULT_DOMAIN。
  2. 或在 tnsnames.ora 中將條目命名為 HZUAT.staff.ebao.com (含網域)。

理解命名體系,能快速診斷連線問題,並在 RAC/Data Guard/分散式環境中正確規劃服務名與別名。

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