1. 程式人生 > >oracle中service_name、sid、tablespace、instance_name幾個概念的理解

oracle中service_name、sid、tablespace、instance_name幾個概念的理解

ORACLE中DB_NAME,DB_DOMAIN,GLOBAL_DBNAME,SERVICE_NAME,ORACLE_SID,INSTANCE_NAME,SCHAME概念。之前對這些概念有接觸,但一直沒有徹底理解,今天整理並記錄。

DB_NAME:資料庫名稱,資料庫的唯一標識。它出現在資料檔案、控制檔案、日誌檔案中。只能由字母、數字、’_’、’#’、’$’組成,而且最多8個字元。它對於單機資料庫是足夠,但在多個數據庫構成的分散式資料庫中,資料庫名稱可能一樣,為了避免造成管理上的混亂,所以引入了DB_DOMAIN的概念。

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

GLOBAL_DBNAME:全域性資料庫名,預設值為DB_NAME.DB_DOMAIN。出現在Listener.ora檔案中,是伺服器提供的服務名,可以通過show paramerer service_names檢視,並可以通過alter system set service_name='servicename' scope=both來修改。

SERVICE_NAME:用ORACLE_SID來表示標識資料庫的一個例項,但是在Oracle的並行環境中,一個數據庫對應多個例項,這樣就需要多個網路服務名,設定繁瑣。為了方便並行環境中的設定,引進了SERVICE_NAME引數,該引數對應一個數據庫,而不是一個例項,而且該引數有許多其它的好處。該引數的預設值為DB_NAME.DB_DOMAIN,即等於GLOBAL_DBNAME。一個數據庫可以對應多個SERVICE_NAME,以便實現更靈活的配置。該引數與ORACLE_SID沒有直接關係,即不必SERVICE_NAME 必須與ORACLE_SID一樣。在有資料庫域名時,是GLOBAL_DBNAME,沒有資料庫域名時是DB_NAME。

ORACLE_SID:資料庫作業系統標識(oracle system identifier),由SGA(記憶體緩衝)和後臺程序構成。在分散式資料庫系統裡,全域性資料庫名是db_name.db_domain;如果是單資料庫我們常常就是隻有db_name,這時oracle_sid=db_name。

INSTANCE_NAME:oracle例項名稱,用來區分不同的例項。在Oracle9i之前,該名字儲存在兩個地方:引數檔案和資料庫的內部試圖(V$INSTANCE)。而在Oracle10g之後的版本中,該名字不再出現在引數檔案中,而是動態從系統中獲得,預設是取自ORACLE_SID。

SCHAME:名稱空間,資料庫物件的集合,如table、index、view等,一個schema中的物件名稱必須唯一。schema是基於使用者的,建立了一個使用者就建立了一個同名的schema。

TABLESPACE:表空間是實際儲存資料的地方。通過使用表空間,管理員可以控制磁碟的佈局,表空間的最常用的作用是優化效能。例如:一個最常用的索引可以建立在非常快的硬碟上而不太常用的表可以建立在便宜的硬碟上,比如用來儲存用於進行歸檔檔案的表,所以table和index一般需要建立在不同的表空間上。一個tablespace可以有多個schema。