溫馨提示×

溫馨提示×

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

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

Oracle中Database name、Instance Name、ORACLE_SID的區(qū)別是什么

發(fā)布時間:2021-11-12 15:11:15 來源:億速云 閱讀:299 作者:柒染 欄目:關(guān)系型數(shù)據(jù)庫

本篇文章為大家展示了Oracle中Database name、Instance Name、ORACLE_SID的區(qū)別是什么,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

數(shù)據(jù)庫名、實例名、數(shù)據(jù)庫域名、全局數(shù)據(jù)庫名、服務(wù)名  

一、數(shù)據(jù)庫名

1、什么是數(shù)據(jù)庫名?
        數(shù)據(jù)庫名就是一個數(shù)據(jù)庫的標識,就像人的身份證號一樣。用參數(shù)DB_NAME表示,如果一臺機器上裝了多全數(shù)據(jù)庫,那么每一個數(shù)據(jù)庫都有一個數(shù)據(jù)庫名。在數(shù)據(jù)庫安裝或創(chuàng)建完成之后,參數(shù)DB_NAME被寫入?yún)?shù)文件之中。格式如下:
DB_NAME=orcl
 
        在 創(chuàng)建數(shù)據(jù)庫時就應(yīng)考慮好數(shù)據(jù)庫名,并且在創(chuàng)建完數(shù)據(jù)庫之后,數(shù)據(jù)庫名不宜修改,即使要修改也會很麻煩。因為,數(shù)據(jù)庫名還被寫入控制文件中,控制文件是以 二進制型式存儲的,用戶無法修改控制文件的內(nèi)容。假設(shè)用戶修改了參數(shù)文件中的數(shù)據(jù)庫名,即修改DB_NAME的值。但是在Oracle啟動時,由于參數(shù)文 件中的DB_NAME與控制文件中的數(shù)據(jù)庫名不一致,導致數(shù)據(jù)庫啟動失敗,將返回ORA-01103錯誤。

2、數(shù)據(jù)庫名的作用
        數(shù)據(jù)庫名是在安裝數(shù)據(jù)庫、創(chuàng)建新的數(shù)據(jù)庫、創(chuàng)建數(shù)據(jù)庫控制文件、修改數(shù)據(jù)結(jié)構(gòu)、備份與恢復(fù)數(shù)據(jù)庫時都需要使用到的。
        有很多Oracle安裝文件目錄是與數(shù)據(jù)庫名相關(guān)的,如:
            winnt: e:/oracle/product/10.1.0/oradata/DB_NAME/...
            Unix: /home/app/oracle/product/10.1.0/oradata/DB_NAME/...

        參數(shù)文件pfile:
        winnt: e:/oracle/product/10.1.0/admin/DB_NAME/pfile/ini.ora
        Unix: /home/app/oracle/product/10.1.0/admin/DB_NAME/pfile/init$ORACLE_SID.ora

        跟蹤文件目錄:
        winnt: /home/app/oracle/product/10.1.0/admin/DB_NAME/bdump/...
        如果控制文件損壞或丟失,數(shù)據(jù)庫將不能加載,這時要重新創(chuàng)建控制文件,方法是以nomount方式啟動實例,然后以create controlfile命令創(chuàng)建控制文件,當然這個命令中也是指指DB_NAME。還有在備份或恢復(fù)數(shù)據(jù)庫時,都需要用到數(shù)據(jù)庫名??傊?,數(shù)據(jù)庫名很重要,要準確理解它的作用。

3、查詢當前數(shù)據(jù)名
        方法一:select name from v$database;
        方法二:show parameter db
        方法三:查看參數(shù)文件。

4、修改數(shù)據(jù)庫名
        建議:應(yīng)在創(chuàng)建數(shù)據(jù)庫時就確定好數(shù)據(jù)庫名,數(shù)據(jù)庫名不應(yīng)作修改,因為修改數(shù)據(jù)庫名是一件比較復(fù)雜的事情。那么現(xiàn)在就來說明一下,如何在已創(chuàng)建數(shù)據(jù)之后,修改數(shù)據(jù)庫名。步驟如下:
        1.關(guān)閉數(shù)據(jù)庫。
        2.修改數(shù)據(jù)庫參數(shù)文件中的DB_NAME參數(shù)的值為新的數(shù)據(jù)庫名。
        3.以NOMOUNT方式啟動實例,修建控制文件(關(guān)于創(chuàng)建控制文件的命令語法,請參考oracle文檔)

二、數(shù)據(jù)庫實例名

1、什么是數(shù)據(jù)庫實例名?
        實例是訪問oracle數(shù)據(jù)庫所需的一部分計算機內(nèi)存和輔助處理后臺進程,是由進程和這些進程所使用的內(nèi)存(SGA)所構(gòu)成的一個集合,它根本不需要一個與其相關(guān)的數(shù)據(jù)庫,沒有任何數(shù)據(jù)文件也可以啟動實例。
        啟動過程如下:
         sqlplus / as sysdba
         sql>startup nomount        #啟動了一個實例,現(xiàn)在SGA分配了,進程在運行,除數(shù)據(jù)庫所有的東西都啟動了     
         sql>alter database mount  #查找以及加載控制文件(init.ora文件中指定),然后利用控制文件定位重做日志文件、數(shù)據(jù)文件、臨時文件     
         sql>alter database open   #oracle將打開所有聯(lián)機的數(shù)據(jù)文件及重做日志文件,供用戶訪問。
          大家訪問oracle都是訪問一個實例,但這個實例如果關(guān)聯(lián)了數(shù)據(jù)庫文件,就是可以訪問的,如果沒有,就會得到實例不可用的錯誤。
           實例名指的是用于響應(yīng)某個數(shù)據(jù)庫操作的數(shù)據(jù)庫管理系統(tǒng)的名稱,它同時也叫sid。實例名是由參數(shù)instance_name決定的。如果這個參數(shù)不被制定(即instance_name沒有被指定任何值),那么實例的名字由該用戶的環(huán)境變量ORACLE_SID(注意這里是大寫)決定。
         
2、實例和數(shù)據(jù)庫
        實例和數(shù)據(jù)庫的區(qū)別:
        1)實例是臨時的,它只在相關(guān)的進程和內(nèi)存集合存在時存在,數(shù)據(jù)庫是永久的,只要文件存在它就存在。
        2)一個實例在生存周期內(nèi)可安裝和打開單個數(shù)據(jù)庫;數(shù)據(jù)庫可以被很多實例安裝和打開,或者一個接一個的實例安裝和打開,每個實例都打開同一個數(shù)據(jù)庫。
        數(shù)據(jù)庫實例名用于對外部連接。在操作系統(tǒng)中要取得與數(shù)據(jù)庫的聯(lián)系,必須使用數(shù)據(jù)庫實例名。要去連接一個數(shù)據(jù)庫服務(wù)器,就必須知道其數(shù)據(jù)庫實例名,只知道數(shù)據(jù)庫名是沒有用的。與數(shù)據(jù)庫名不同,在數(shù)據(jù)庫安裝或創(chuàng)建數(shù)據(jù)庫之后,實例名可以被修改。數(shù)據(jù)庫名和實例名可以相同也可以不同。一般情況下,數(shù)據(jù)庫名和實例名是一對一的關(guān)系,但如果在oracle并行服務(wù)器架構(gòu)(oracle實時應(yīng)用集群)中,數(shù)據(jù)庫名和實例名是一對多的關(guān)系(一個數(shù)據(jù)庫對應(yīng)多個實例,同一時間內(nèi)用戶只有一個實例相聯(lián)系,當某一實例出現(xiàn)故障,其它實例自動服務(wù),以保證數(shù)據(jù)庫安全運行)。

3、查詢當前數(shù)據(jù)庫實例名
    方法一:select instance_name from v$instance;
    方法二:show parameter instance;


三、ORALCE_SID

        在實際中,對于數(shù)據(jù)庫實例的標識有時使用實例名,有時使用ORACLE_SID,它們有什么區(qū)別? 
          (ORACLE_SID)
        OS<---------------->; ORACLE 數(shù)據(jù)庫 <--------(Instance_name(實例名))
        上圖表示實例instance_name、ORACLE_SID與數(shù)據(jù)庫及操作系統(tǒng)之間的關(guān)系,雖然這里列出的兩個參數(shù)都是數(shù)據(jù)庫實例名,但是instance_name參數(shù)是ORACLE數(shù)據(jù)庫的參數(shù),此參數(shù)可以在參數(shù)文件中查到;而ORACLE_SID參數(shù)則是操作系統(tǒng)環(huán)境變量,與ORACLE_BASE、ORACLE_HOME用法相同,用于和操作系統(tǒng)交互。也就是說,在操作系統(tǒng)中要想得到實例名,就必須使用ORACLE_SID。切ORACLE_SID必須與instance_name的值一致,否則,你將會收到一個錯誤,在UNIX平臺,是“ORACLE not available ” ,在winnt平臺,是“TNS協(xié)議適配器錯誤”。

上述內(nèi)容就是Oracle中Database name、Instance Name、ORACLE_SID的區(qū)別是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

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

AI