Oracle中DB_NAME,SID,DB_DOMAIN,SERVICE_NAME等之間的區別

junsansi發表於2007-11-13

Db_name:對一個資料庫(Oracle database)的唯一標識。這種表示對於單個資料庫是足夠的,但是隨著由多個資料庫構成的分散式資料庫的普及,這種命令資料庫的方法給資料庫的管理造成一定的負擔,因為各個資料庫的名字可能一樣,造成管理上的混亂。為了解決這種情況,引入了Db_domain引數,這樣在資料庫的標識是由Db_name和Db_domain兩個引數共同決定的,避免了因為資料庫重名而造成管理上的混亂。這類似於互連網上的機器名的管理。我們將Db_name和Db_domain兩個引數用’.’連線起來,表示一個資料庫,並將該資料庫的名稱稱為Global_name,即它擴充套件了Db_name。Db_name引數只能由字母、數字、’_’、’#’、’$’組成,而且最多8個字元。

Db_domain:定義一個資料庫所在的域,該域的命名同網際網路的’域’沒有任何關係,只是資料庫管理員為了更好的管理分散式資料庫而根據實際情況決定的。當然為了管理方便,可以將其等於網際網路的域。

Global_name:對一個資料庫(Oracle database)的唯一標識,oracle建議用此種方法命令資料庫。該值是在建立資料庫是決定的,預設值為Db_name. Db_domain。在以後對引數檔案中Db_name與Db_domain引數的任何修改不影響Global_name的值,如果要修改Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO 命令進行修改,然後修改相應引數。

Service_name:該引數是oracle8i新引進的。在8i以前,我們用SID來表示標識資料庫的一個例項,但是在Oracle的並行環境中,一個資料庫對應多個例項,這樣就需要多個網路服務名,設定繁瑣。為了方便並行環境中的設定,引進了Service_name引數,該引數對應一個資料庫,而不是一個例項,而且該引數有許多其它的好處。該引數的預設值為Db_name. Db_domain,即等於Global_name。一個資料庫可以對應多個Service_name,以便實現更靈活的配置。該引數與SID沒有直接關係,即不必Service name 必須與SID一樣。

Instance_name:資料庫例項名。用於和作業系統之間的聯絡,用於對外部連線時使用。在作業系統中要取得與資料庫之間的互動,必須使用資料庫例項名。例如,要和某一個資料庫server連線,就必須知道其資料庫例項名,只知道資料庫名是沒有用的,與資料庫名不同,在資料安裝或建立資料庫之後,例項名可以被修改。資料庫名與例項名之間的關係一般是一一對應關係,有一個資料庫名就有一個例項名,如果在一個伺服器中建立兩個資料庫,則有兩個資料庫名,兩個資料庫例項名,用兩個標識確定一個資料庫,使用者和例項相連線。 但在8i、9i的並行伺服器結構中,資料庫與例項之間不存在一一對應關係,而是一對多關係,(一個資料庫對應多個例項,同一時間內使用者只一個例項相聯絡,當某一例項出現故障,其它例項自動服務,以保證資料庫安全執行。)

Oracle_SID:作業系統環境變數。在實際中,對於資料庫例項名的描述有時使用例項名(instance_name)引數,有時使用ORACLE_SID引數。這兩個都是資料庫例項名,它們有什麼區別呢?(經常弄混)

(ORACLE_SID)
OS

上例表示例項名instance_name、ORACLE_SID與資料庫及作業系統之間的關係,雖然這裡列出的兩個引數都是資料庫例項名,但instance_name引數是ORACLE資料庫的引數,此引數可以在引數檔案中查詢到,而ORACLE_SID引數則是作業系統環境變數。
作業系統環境變數ORACLE_SID用於和作業系統互動。也就是說,在作業系統中要想得到例項名,就必須使用ORACLE_SID。此引數與ORACLE_BASE、ORACLE_HOME等用法相同。在資料庫安裝之後,ORACLE_SID被用於定義資料庫引數檔案的名稱。如:
$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora。


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

相關文章