DB_NAME&TANCE_NAME&DB_UNIQUE_NAME&ORACLE_SID&GLOBAL_NAME&DB_DOMAIN&SERVICE_NAME

Michael_DD發表於2014-10-30
DB_NAME && INSTANCE_NAME && DB_UNIQUE_NAME && ORACLE_SID && GLOBAL_NAME && DB_DOMAIN && SERVICE_NAME概述

============================================================
DB_NAME與INSTANCE_NAME
============================================================
DB_NAME 資料庫名稱,也就是資料庫的名字標示。這裡,資料庫裡可能
有多個例項,比如RAC裡的多節點,這多個節點是不同的例項,但是卻
有相同的名字,他們的 DB_NAME是相同的,但是Instance_name是不同的。
DB_NAME會保持在資料檔案頭裡,所以更改DB_NAME不能僅僅修改parameter,
還需要用nid來進行更改,並且更改後還需要手工做些工作,使其生效,
一般情況下不建議修改。

============================================================
DB_NAME與DB_UNIQUE_NAME
============================================================
DB_UNIQUE_NAME
這在另一個HA的應用,Dataguard會經常提及的,和DB_NAME
不一樣的作用,在DG裡,要求物理DG,主從庫都有一樣的DB_NAME,雖然他們
和RAC不一樣,並不是同一個庫。這裡是資料庫的唯一名字。但是他們的
DB_UNIQUE_NAME是不一樣的,用以進行不同的標示。DB_UNQUIE_NAME的會影
響到Service_names,也會影響到動態監聽的時候的service_name。
 
DB_NAME
db_name是資料庫的名字,oracle本身可能是比較有用的,對我們而言沒有什麼
太多的用處,db_name記錄在controlfile,datafile_header,redo中。在建庫
時,db_name被限制為最長8個字元。db_name還有一個非常重要的作用就是動態
註冊監聽,不管是否指定了service_name,或者說service_name的值是什麼,
pmon都會使用db_name動態註冊監聽的。

ORACLE_SID
sid為在host上用sid來標示例項的共享記憶體的,儘管v$instance中欄位
instance_name看起來是例項名,但是實際上儲存的是sid,在win下sid不能重複,
在unix/linux下只要不同版本的oracle安裝在不同的oracle_home下就可以建立相
同sid的例項,但是win下不可以,主要是受到windows服務的限制,在服務中不能
存在服務名相同的oracle服務(OracleServiceSID)。dataguard中建議大家在
primary,standby上使用相同的service_names,這樣可能便於儘可能的實現透明
切換。

===========================================================
DB_DOMAIN與GLOBAL_NAME
===========================================================
db_domain的作用主要是用在分散式資料庫中,分散式事務的各個資料庫應該有
db_domain global_name是由db_name.db_domain構成的,global_name的作用主
要也是用在Distributed Database中。配置靜態監聽註冊時,需要輸入的全域性
資料庫名(GLOBAL_DBNAME )輸入什麼都可以,只要保證listerner.ora中的
GLOBAL_DBNAME和tnsnames.ora中的SERVICE_NAME保持一致就可以。

DB_UNIQUE_NAME
DB_UNIQUE_NAME是10g的引數,在配置dataguard環境時必須為處於dg環境中每個
db設定一個唯一值,在沒有DB_UNIQUE_NAME引數之前,在同一臺機器上搭建dg時
必須使用引數LOCK_NAME_SPACE在standby引數檔案中,10g有了引數
db_unique_name,LOCK_NAME_SPACE已經被廢棄。

在配置檔案中的情況:
在init.ora中有db_name,instance_name,service_name
db_name是資料庫的名稱,在db安裝時就已經設定了,它決定了資料庫安裝檔案的
位置。 instance_name是例項名,是資料庫執行中名稱,預設和db_name是一樣的
service_name應該是指資料庫網路連線時的名稱,在listener配置中會有所考慮的。
這個值也是可以隨意改動的,並且還可以有多個值。
*************************************************************** 
在listener.ora中有SID_NAME,GLOBAL_DBNAME
這裡SID_NAME指資料庫的執行的例項名,應該是和instance_name一致
而對於GLOBAL_DBNAME是listener配置的對外網路連線名稱,我們在配置
tnsname.ora時會考慮這個引數。這個引數可以任意的設定。
***************************************************************
在tnsname.ora中有SERVICE_NAME,SID
對於這裡的配置主要要給出要連線的資料庫的IP及其連線的例項或服務
在監聽配置中我們提到了對外網路連線名稱,在這裡如果用SERVICE_NAME的話,
就需要SERVICE_NAME=(GLOBAL_DBNAME或者service_name這裡要求oracle已經
註冊到了監聽器中),對於SID=(instance_name)
最後一個是ORACLE_SID引數,這個引數是作業系統中用到的,它是描述我們要預設
連線的資料庫例項,對於一個機器上有多個例項的情況下,要修改後才能透過
conn /as sysdba連線,因為這裡用到了預設的例項名。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29500582/viewspace-1314299/,如需轉載,請註明出處,否則將追究法律責任。