中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle中ORACLE_SID,INSTANCE_NAME,DB_NAME幾個名詞的區別

發布時間:2020-08-11 21:36:02 來源:網絡 閱讀:7415 作者:anranran 欄目:關系型數據庫

同事項目用到 Oracle,向我問起這些內容,雖本人忝列 OCP,但那是6年前的事了,這幾年工作繁重,基本做了清零,受同事之托重新梳理了一遍。


涉及到的名字包括如:DB_NAME,DB_DOMAIN,ORACLE_SID,INSTANCE_NAME, SERVICE_NAME 等。


提起這些名字,首先要理解 ORACLE 的邏輯架構,我們通常說的可以訪問的ORACLE DB。其實兩部分組成:實例(包括一組進程,和SGA內存等) + 物理介質。介質包括控制文件,數據文件,日志文件,參數文件等。實例進程就是一堆操作物理介質的進程。再者實例進程可以不掛載(mount)任何物理介質,這時的實例叫 idle instance.


上面的名字先找簡單的說:DB_NAME。這兩個東西創建數據庫時指定,而且最具穩定性,DB_NAME遍布在數據文件,日志文件,參數文件中,99.9%情況下不會也不需要去變他。(雖然現在版本也可以修改了)。


可以把他理解成物理介質的標記,這些物理介質都屬這個DB。至于DB_DOMAIN只是為好分布式管理加的一個標識而已,意義不大,知道有這個東西即可。


ORACLE_SID:一般ORACLE_SID作環境變量用,他是個操作系統層面的東西, 最常見的兩個用處:

決定Oracle實例 進程的名字,在linux下看,Oracle相應的進程,會發現都綴有ORACLE_SID。

定位Oracle的啟動參數文件,Oracle在啟動時要尋找其配置文件(目前以這個順序查找spfile<ORACLE_SID>.ora -> spfile.ora -> init<ORACLE_SID>.ora)。

Oracle啟動之后,這個參數也沒多大用處了。

注: 相同Oracle_HOME下,ORACLE_SID要不同,不同Oracle_HOME下,可相同。


INSTANCE_NAME:DB_NAME是物理介質的標識,INSTANCE_NAME就是實例進程的標識。

對ORACLE數據庫,非RAC情況下,物理介質可以被任意實例進程掛載(mount)和打開(open)

但同一時間,只能有一個實例進程打開他。 RAC情況下,則允許多個實例進程打開相同的物理介質。

1+1變成了n+1,也就是說RAC情況下,多個實例對應著同一個物理介質。


JAVAEE同學都記得JDBC的連接串為:jdbc:oracle:thin:@<host>:<port>:<SID> 

這個SID就是INSTANCE_NAME。數據庫連接,其實是連接到實例進程。大多數時候我們都當成了ORACLE_SID, 只是因為那個時候他們相同了。(關于各個參數的default值問題,這里不說子,碼字累)。


似乎有INSTANCE_NAME+DB_NAME已經完美的解決的實體的定位問題。直到RAC的出現,打破了這一寧靜。出了多個實例同時打開同一個DB_NAME的情況。那個上面的JDBC的連接串就不好用了,這時SERVICE_NAME橫空出世。

簡單的說,SERVICE_NAME代表整個數據庫(進程+DB),一個SERVICE_NAME下面可以有多個實例,所以無論是RAC,還是單例數據庫, jdbc:oracle:thin:@<host>:<port>:<SERVICE_NAME>都可以正常連接。 


SERVICE_NAME怎么發揮做的呢,我們知道Oracle監聽在1521端口,因為存在一個監聽器。在ORACLE實例啟動時,PMON進程會將該實例注冊到這個監聽器上,當前也所括其所屬性的服務名,這種叫動態注冊,可能不易理解SERVICE_NAME(可以用lsnrctl status命令查看存在的service及instance),看一個靜態注冊的listener.ora:

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
   (SID_NAME = ORCL) ---這里為INSTANCE_NAME
   (ORACLE_HOME = /mydatafile2/app/oracle/oracle/product/11.2.0/db_1)
   (GLOBAL_DBNAME=WOO.COM) ---這里為SERVICE_NAME。
  )
)

連接到這個SERVICE,監聽器就會按一定算法將連接負載到相應的實例上。

綜上看:訪問數據庫關注的大多為Instance_name和service_name.  

 而管理數據庫用到ORACLE_SID和DB_NAME

先寫這么多吧,后面再補。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

深水埗区| 左云县| 昌宁县| 高台县| 兴海县| 仲巴县| 延津县| 天长市| 曲阳县| 皋兰县| 延长县| 浦江县| 射阳县| 彭山县| 本溪| 靖江市| 台中市| 宿松县| 叶城县| 德江县| 屯门区| 建昌县| 金湖县| 潜江市| 布拖县| 平谷区| 花莲县| 都安| 芒康县| 江津市| 廉江市| 宜昌市| 黄浦区| 张家港市| 康保县| 玉树县| 红安县| 昌图县| 区。| 阿拉善右旗| 乌什县|