亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

普定县| 勃利县| 麻城市| 旬邑县| 工布江达县| 治县。| 柯坪县| 平远县| 湾仔区| 余姚市| 泾阳县| 长治县| 衡南县| 阿坝县| 蒲城县| 阿克陶县| 广昌县| 三河市| 黄浦区| 眉山市| 丰台区| 松桃| 甘孜| 白朗县| 弥渡县| 东兰县| 临桂县| 乐昌市| 锡林浩特市| 赣榆县| 秀山| 同德县| 灵宝市| 富裕县| 台北县| 靖西县| 阿合奇县| 当阳市| 五峰| 忻州市| 昭平县|