1. 程式人生 > >oracle數據庫DB_NAME、DBID、DB_UNIQUE_NAME等的區別

oracle數據庫DB_NAME、DBID、DB_UNIQUE_NAME等的區別

環境 例子 監聽 網絡 連接 names tro oracle 等於

目錄

  • DB_NAME
  • DBID
  • DB_UNIQUE_NAME:
  • INSTANCE_NAME:
  • SID:
  • SERVICE_NAME
  • GLOBAL_DATABASE_NAME:

DB_NAME

①是數據庫名,長度不能超過8個字符,記錄在datafile、redolog和control file中

②在DataGuard環境中DB_NAME相同而DB_UNIQUE_NAME不同

③在RAC環境中,各個節點的DB_NAME 都相同,但是INSTANCE_NAME不同

④DB_NAME還在動態註冊監聽的時候起作用,無論是否定義了SERVICE_NAME,PMON進程都會使用DB_NAME動態註冊監聽

DBID

①DBID可以看做是DB_NAME在數據庫內部的表示,它是在數據庫創建的時候用DB_NAME結合算法計算出來的

②它存在於datafile和control file中,用來表示數據文件的歸屬,所以DBID是唯一的,對於不同的數據庫,DB_NAME可以是相同的,但是DBID一定是唯一的,例如在DataGuard中,主備庫的DB_NAME相同,但是DBID一定不同(看過一個很形象的例子,就是可以有同名的人,但是身份證號碼一定不同)

DB_UNIQUE_NAME:

①在DataGuard中,主備庫擁有相同的DB_NAME,為了區別,就必須有不同的DB_UNIQUE_NAME

②DB_UNIQUE_NAME在DG中會影響動態註冊的SERVICE_NAME,即如果采用的是動態註冊,則註冊的SERVICE_NAME為DB_UNIQUE_NAME,但是實例還是INSTANCE_NAME,即SID

INSTANCE_NAME:

①數據庫實例的名稱,INSTANCE_NAME默認值是SID,一般情況下和數據庫名稱(DB_NAME)相同,也可不同

②initSID.ora 和orapwSID 文件要與INSTANCE_NAME保持一致

③INSTANCE_NAME會影響進程的名稱

SID:

①是操作系統中的環境變量,和ORACLE_HOME,ORACLE_BASE用法相同

②在操作系統中要想得到實例名,就必須使用ORACLE_SID。且ORACLE_SID必須與INSTANCE_NAME的值一致

SERVICE_NAME

①數據庫和客戶端相連是使用的服務名

②在DataGuard中,如果采用動態註冊,建議在主備庫使用相同的service_names

③在DataGuard中,如果采用靜態註冊,建議在主備庫上的listener中輸入相同的服務名(service_name)

④如果采監聽采用了靜態註冊,那麽SERVICE_NAME就等於Listener.ora文件中的GLOBAL_DATABASE_NAME的值

GLOBAL_DATABASE_NAME:

①GLOBAL_DATABASE_NAME 是listener配置的對外網絡連接名稱,可以是任意值

②在客戶端配置監聽的tnsnames.ora 文件中的service_name與這個GLOBAL_DBNAME 保持一致就可以了

③配置靜態監聽註冊時,需要輸入SID和GLOBAL_NAME

本文摘自於地址:http://www.itpux.com/thread-236-1-1.html

oracle數據庫DB_NAME、DBID、DB_UNIQUE_NAME等的區別