oracle數據庫DB_NAME、DBID、DB_UNIQUE_NAME等的區別
目錄
- 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等的區別