oracle資料庫名和sid的區別

2021-08-31 10:41:50 字數 2408 閱讀 6905

資料庫名(db_name)、例項名(instance_name)、以及作業系統環境變數(oracle_sid)

在oracle7、8資料庫中只有資料庫名(db_name)和資料庫例項名(instance_name)。在oracle8i、9i中出現了新的引數,即資料庫網域名稱(db_domain)、服務名(service_name)、以及作業系統環境變數(oracle_sid)。這些都存在於同乙個資料庫中的標識,用於區分不同資料庫的引數。

一、什麼是資料庫名(db_name)?

資料庫名是用於區分資料的內部標識,是以二進位制方式儲存於資料庫控制檔案中的引數,在資料安裝或建立之後將不得修改。資料庫安裝完成後,該引數被寫入資料庫引數檔案pfile中,格式如下:

[code:1:1aaf156970]

.........

db_name="orcl" #(不允許修改)

db_domain=dbcenter.toys.com

instance_name=orcl

service_names=orcl.dbcenter.toys.com

control_file=(...............

.........

[/code:1:1aaf156970]

在每乙個執行的oracle8i資料庫中都有乙個資料庫名(db_name),如果乙個伺服器程式中建立了兩個資料庫,則有兩個資料庫名。其控制引數據分屬在不同的pfile中控制著相關的資料庫。

二、什麼是資料庫例項名(instance_name)

資料庫例項名則用於和作業系統之間的聯絡,用於對外部連線時使用。在作業系統中要取得與資料庫之間的互動,必須使用資料庫例項名。例如,要和某乙個資料庫server連線,就必須知道其資料庫例項名,只知道資料庫名是沒有用的,與資料庫名不同,在資料安裝或建立資料庫之後,例項名可以被修改。資料庫安裝完成後,該例項名被寫入資料庫引數檔案pfile中,格式如下:

[code:1:1aaf156970]

db_name="orcl" #(不允許修改)

db_domain=dbcenter.toys.com

instance_name=orcl #(可以修改,可以與db_name相同也可不同)

service_names=orcl.dbcenter.toys.com

control_file=(...............

.........

[/code:1:1aaf156970]

資料庫名與例項名之間的關係。

資料庫名與例項名之間的關係一般是一一對應關係,有乙個資料庫名就有乙個例項名,如果在乙個伺服器中建立兩個資料庫,則有兩個資料庫名,兩個資料庫例項名,用兩個標識確定乙個資料庫,使用者和例項相連線。

但在8i、9i的並行伺服器結構中,資料庫與例項之間不存在一一對應關係,而是一對多關係,(乙個資料庫對應多個例項,同一時間內使用者只乙個例項相聯絡,當某一例項出現故障,其它例項自動服務,以保證資料庫安全執行。)

三、作業系統環境變數(oracle_sid)

在實際中,對於資料庫例項名的描述有時使用例項名(instance_name)引數,有時使用oracle_sid引數。這兩個都是資料庫例項名,它們有什麼區別呢?(經常弄混)

[code:1:1aaf156970]

(oracle_sid)

os<----------------> oracle 資料庫 <--------(instance_name(例項名))

[/code:1:1aaf156970]

上圖表示例項名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。

定義方法:

[code:1:1aaf156970]

export oracle_sid=orcl

[/code:1:1aaf156970]

如果在同一伺服器中建立了多個資料庫,則必然同時存在多個資料庫例項,這時可以重複上述定義過程,以選擇不同例項。

還可以用

[code:1:1aaf156970]

[oracle@datacent]$ . oraenv

[/code:1:1aaf156970]

來切換不同的oracle_sid來通過作業系統來啟動不同的例項(instance)

資料庫名,全域性資料庫名,SID區別及有感

說在最前頭的話,不是離體,也許平時開發中的一些需求我們可以做的更好,而不是按正常的邏輯去 處理,否則一輩子都是苦逼的碼農。公司現在有個專案同時在三個不同的地方實施,考慮到各地的需求略有不同,因此需要不同的資料庫 在搭建本地環境的時候,某君打算在乙個資料庫中建立不同的使用者來區分各個地市。比如地市a,...

怎樣檢視Oracle的資料庫名稱sid

怎樣檢視oracle的資料庫名稱sid 用sysdba身份登入 比如 conn as sysdba 匿名管理員登陸 執行 select name from v database 不過執行第二個顯示的內容太多了不好找自己想要的結果 你也可以先用desc v database 語句檢視一下v datab...

oracle中的全域性資料庫名稱和sid的區別

資料庫名 db name 例項名 instance name 以及作業系統環境變數 oracle sid 在oracle7 8資料庫中只有資料庫名 db name 和資料庫例項名 instance name 在oracle8i 9i中出現了新的引數,即資料庫網域名稱 db domain 服務名 se...