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來修改。oracle
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。dom
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。ide
SCHAME:命名空間,數據庫對象的集合,如table、index、view等,一個schema中的對象名稱必須惟一。schema是基於用戶的,建立了一個用戶就建立了一個同名的schema。佈局
TABLESPACE:表空間是實際存儲數據的地方。經過使用表空間,管理員能夠控制磁盤的佈局,表空間的最經常使用的做用是優化性能。例如:一個最經常使用的索引能夠創建在很是快的硬盤上而不太經常使用的表能夠創建在便宜的硬盤上,好比用來存儲用於進行歸檔文件的表,因此table和index通常須要創建在不一樣的表空間上。一個tablespace能夠有多個schema。性能