oracle Service Name和SID的區別

來源:互聯網
上載者:User

標籤:des   io   os   ar   使用   sp   檔案   資料   div   

資料庫名(DB_NAME)、執行個體名(Instance_name)、以及作業系統環境變數(ORACLE_SID) 在ORACLE7、8資料庫中只有資料庫名(db_name)和資料庫執行個體名(instance_name)。在ORACLE8i、9i中出現了新的參數,即資料庫網域名稱(db_domain)、服務名(service_name)、以及作業系統環境變數(ORACLE_SID)。這些都存在於同一個資料庫中的標識,用於區分不同資料庫的參數。 一、什麼是資料庫名(db_name)? 資料庫名是用於區分資料的內部標識,是以二進位方式儲存於資料庫控制檔案中的參數,在資料安裝或建立之後將不得修改。資料庫安裝完成後,該參數被寫入資料庫參數檔案pfile中,格式如下: ......... db_name="orcl" #(不允許修改) db_domain=dbcenter.toys.com instance_name=orcl service_names=orcl.dbcenter.toys.com control_file=(............... .........  在每一個啟動並執行ORACLE8i資料庫中都有一個資料庫名(db_name),如果一個伺服器程式中建立了兩個資料庫,則有兩個資料庫名。其控制參資料分屬在不同的pfile中控制著相關的資料庫。  二、什麼是資料庫執行個體名(instance_name)  資料庫執行個體名則用於和作業系統之間的聯絡,用於對外部串連時使用。在作業系統中要取得與資料庫之間的互動,必須使用資料庫執行個體名。例如,要和某一個資料庫server串連,就必須知道其資料庫執行個體名,只知道資料庫名是沒有用的,與資料庫名不同,在資料安裝或建立資料庫之後,執行個體名可以被修改。資料庫安裝完成後,該執行個體名被寫入資料庫參數檔案pfile中,格式如下: db_name="orcl" #(不允許修改) db_domain=dbcenter.toys.com instance_name=orcl #(可以修改,可以與db_name相同也可不同) service_names=orcl.dbcenter.toys.com control_file=(........................  資料庫名與執行個體名之間的關係  資料庫名與執行個體名之間的關係一般是一一對應關係,有一個資料庫名就有一個執行個體名,如果在一個伺服器中建立兩個資料庫,則有兩個資料庫名,兩個資料庫執行個體名,用這兩個標識(資料庫名和執行個體名)確定一個資料庫,使用者和執行個體相串連。 但在8i、9i的並行伺服器結構中,資料庫與執行個體之間不存在一一對應關係,而是一對多關聯性,(一個資料庫對應多個執行個體,同一時間內使用者只一個執行個體相聯絡,當某一執行個體出現故障,其它執行個體自動服務,以保證資料庫安全運行。)  三、作業系統環境變數(ORACLE_SID)  在實際中,對於資料庫執行個體名的描述有時使用執行個體名(instance_name)參數,有時使用ORACLE_SID參數。這兩個都是資料庫執行個體名,它們有什麼區別呢?(經常弄混)  (ORACLE_SID) OS<----------------> ORACLE 資料庫 <--------(Instance_name(執行個體名))  表示執行個體名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。 定義方法:  export ORACLE_SID=orcl  如果在同一伺服器中建立了多個資料庫,則必然同時存在多個資料庫執行個體,這時可以重複上述定義過程,以選擇不同執行個體。 還可以用  [[email protected]]$ . oraenv 來切換不同的ORACLE_SID來通過作業系統來啟動不同的執行個體(instance) =================================================================================== 資料庫名:db_name           資料庫執行個體名:instance_name 作業系統環境變數:oracle_sid 資料庫服務名:service_names 資料庫網域名稱:db_domain        全域資料庫名:global_db_name  在oracle7、oracle8資料庫中只有資料庫名以及執行個體名,在oracle8i、oracle9i中出現了資料庫網域名稱、服務名以及全域資料庫名。  資料庫名(db_name):用於區分一個資料的內部標識,是oracle的內部標記,是以二進位方式儲存於資料庫控制檔案的參數。 資料庫名的作用:資料庫名是資料庫的內部管理標記,在安裝資料庫、建立新的的資料庫、建立資料庫控制檔案、修改資料庫結構、使用Database Backup與恢複工具進行Database Backup時都需要使用資料名。 資料庫安裝完成後,資料庫名稱儲存在參數檔案(pfile,spfile)中,同時以二進位方式儲存在控制檔案中,兩者必須匹配。如果兩者不匹配,資料庫在啟動時提示ORA-01103號錯誤。 ■ 對資料名稱的查詢: 1、查詢參數檔案 db_name的數值 2、select name from v$database 3、SQL>show parameter db_name ■ 修改資料庫名(修改複雜,建議不要修改) 1、修改參數檔案的資料庫名稱。 2.重建資料庫的控制檔案。  資料庫執行個體名(instance_name):用於和作業系統之間的聯絡。 作業系統與資料庫之間的互動則必須使用資料庫執行個體名。資料庫安裝完成後,資料庫執行個體名稱儲存在參數檔案中,同時儲存在註冊表中。 資料庫名與執行個體名一般是一一對應的關係,即:有一個資料庫名就有一個執行個體名,而在oracle9i的並行伺服器結構中是一對多的關係,即:一個資料庫對應多個執行個體。 ■ 對資料名稱的查詢: 1、查詢參數檔案 instance_name的數值 2、select instance_name from v$instance 3、SQL>show parameter instance_name  作業系統環境變數(oracle_sid):用於與資料庫執行個體名相對應。instance_name是oracle資料庫參數 -oracle_sid是操做系統內容變數,即在作業系統要得到執行個體名必須通過操做系統內容變數oracle_sid,oracle_sid與 instance_name必須相同。 是資料庫和作業系統的介面,由作業系統使用,是作業系統區分多個資料庫的依據。oracle_sid儲存在註冊表中。如果資料庫的oracle_sid與實際的instance_name不同,在作業系統下啟動並執行oracle所有命令將產生錯誤。 ■ 對資料執行個體名的定義: SQL>set oracle_sid=資料庫執行個體名  資料庫網域名稱(db_domain):在資料庫名稱後增加網域名稱構成,使得資料庫的取名在整個網路環境中惟一,主要用於oralce分布式環境中資料的遠程複製。資料庫網域名稱儲存在參數檔案中。 以下情況要考慮使用資料庫網域名稱:1、在oracle分布式環境下,兩個資料庫之間要通過資料鏈路進行資料的遠程傳輸。2、在同一網路環境下,兩個資料庫名相同。 ■ 對資料庫網域名稱的查詢: 1、查詢參數檔案 db_domain的數值 2、select value from v$parameter where name=‘db_domain‘ 3、SQL>show parameter db_domain ■ 修改資料庫網域名稱: 1、關閉資料庫 2、修改資料庫參數檔案中的db_domain、service_names。  資料庫服務名service_names:資料庫名+資料庫網域名稱,意義與全域資料庫名相同。 資料庫服務名儲存在參數檔案中。 ■ 對資料庫服務名的查詢: 1、查詢參數檔案 service_names的數值 2、select value from v$parameter where name=‘service_names‘ 3、SQL>show parameter service_names  全域資料庫名global_db_name:資料庫名+資料庫網域名稱。   資料庫執行個體名、服務名與網路連接 ORACLE伺服器版本 用戶端網路驅動 ORACLE7   (支援執行個體名) SQL_NET(支援執行個體名) ORACLE8   (支援執行個體名) NET8 (支援執行個體名) ORACLE8i (支援執行個體名、服務名) NET8i (支援執行個體名、服務名) ORACLE9i (支援執行個體名、服務名) ORACLE NET SERVICE (支援執行個體名、服務名) 對於網路連接字串使用執行個體名、服務名的問題,需要根據用戶端驅動的版本和oracle伺服器的版本共同確定,即兩者都支援執行個體名和服務名的使用服務名,否則使用執行個體名。 ==================================================================================== 1. SID是執行個體名,執行個體名指的是用於響應某個資料庫操作的資料庫管理系統的名稱。執行個體名是由初始化參數檔案的參數instance_name決定的。如果這個參數不被指定(即instance_name沒有被指定為任何值),那麼執行個體的名字由該使用者的環境變數ORACLE_SID(注意這裡是大寫)決定。在windows平台下,則是註冊表中oracle_sid值決定。  2. SERVICE_NAME指的是listener中的全域資料庫名:這個名字是由listener.ora中GLOBAL_DBNAME參數決定的。這個名字代表的是用戶端串連到資料庫時,tnsnames.ora中SERVICE_NAME參數所對應的值。 3. 連接字串     配置tnsname.ora時,可以用SID,也可以用SERVICE_NAME.  注意這兩個值不一定相同,具體要看資料庫伺服器中的配置。 connect_str =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521))    )    (CONNECT_DATA =      (SERVICE_NAME = xxxx    )  ) connect_str =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521))    )    (CONNECT_DATA =      (SID = xxx)      (SERVER = DEDICATED)    )  )

oracle Service Name和SID的區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.