Oracle 資料庫的眾多 “NAME”

Ryan_Bai發表於2020-04-15

Oracle 有眾多名字,很多人容易弄混,下面會通過各個層面的展示,從視覺、流程角度去了解,而並非單一通過概念去認識他們,這樣會更容易認識他們,瞭解他們之間的區別

DB_NAME

資料庫名,長度不能超過8個字元,記錄在 datafile、redolog 和 control file 中。

這部分可以通過 bbed 來檢視儲存方式,我們拿 system01.dbf 資料檔案舉例。

此處我們看到,資料檔案頭只有八個字元的位置儲存 Oracle 的資料庫名,這也是我們為什麼說,長度不能超過 8個字元,dump可以看到如下內容:

image-20200415095640429

從第 32 位字元開始,就是儲存的資料檔案,給位置根據第一幅圖 O 所反饋的 @32 可知,也可以由以下語句進行驗證


DBID

DBID 是在資料庫建立的時候用DB_NAME結合演算法計算出來的,由一串數字組成

它存在於 datafile 和 control file 中,用來表示資料檔案的歸屬,所以DBID是唯一的,對於不同的資料庫,DB_NAME可以是相同的,但是DBID一定是唯一的

我們還是以上圖的 system01.dbf 為例,它是以倒序的形式儲存在資料檔案頭部的

image-20200415102106036

我們依然可以用to_char命令進行驗證

DB_UNIQUE_NAME

在DataGuard中,主備庫擁有相同的 DB_NAME,為了區別,就必須有不同的 DB_UNIQUE_NAME

SID & INSTANCE_NAME

在作業系統中要想得到例項名,就必須使用ORACLE_SID。initSID.ora 和 orapwSID 檔案要與 ORACLE_SID 保持一致。

資料庫根據 ORACLE_SID 來查詢 spfile,然後以 ORACLE_SID 作為 INSTANCE_NAME 來啟動例項,所以其相關的程式名,亦為 ORACLE_SID 的名稱。

此名稱可以和資料庫名稱一致,也可以不一致,為了便於區分,一般差別不大。

手動建庫時,會讀取引數檔案中 DB_NAME,然後在建立過程中寫入控制檔案、資料檔案和重做日誌檔案,所以資料庫名和例項名可以不一致。

SERVICE_NAME

資料庫和客戶端相連是使用的服務名,預設與 DB_UNIQUE_NAME 一致,也可以新增多個 SERVICE_NAME 用於服務。

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

相關文章