標籤:oracle sid server_name
博文說明【前言】:
本文將通過個人口吻介紹在ORACLE中的Server_name和執行個體名SID的相關概念,在目前時間點【2017年5月22號】下,所掌握的技術水平有限,可能會存在不少知識理解不夠深入或全面,望大家指出問題共同交流,在後續工作及學習中如發現本文內容與實際情況有所偏差,將會完善該博文內容。
本文參考文獻引用連結:
1、http://blog.csdn.net/luman1991/article/details/56286371
2、http://blog.csdn.net/yaksok/article/details/52130228
本文:
SERVER_NAME參數是由oracle8i開始引進的。在8i以前,使用SID來表示標識資料庫的一個執行個體,但是在Oracle的並行環境中,一個資料庫對應多個執行個體,這樣就需要多個網路服務名,設定繁瑣。為了方便並行環境中的設定,引進了Service_name參數,該參數對應一個資料庫,而不是一個執行個體,而且該參數有許多其它的好處。該參數的預設值為Db_name. Db_domain,即等於Global_name。一個資料庫可以對應多個Service_name,以便實現更靈活的配置。該參數與SID沒有直接關係,即不必Service name 必須與SID一樣,而sid是資料庫執行個體的名字,每個執行個體各不相同。
案例分析:
一、引入關係:
伺服器=公司
資料庫=營運支援部(資料庫分為單機和叢集環境,也就是部門的人數多少關係)
資料庫叢集環境=營運支援部門(假設部門有小麗,小美兩名員工,對應SID1,SID2)
資料庫連接請求=公司員工或者其他部門請求營運部提供支援人員
資料庫伺服器=裝載了資料庫的伺服器,也就是擁有活躍營運部門的公司,當然伺服器除了裝載資料庫,我還可以安裝其他軟體提供其他服務
二、工作過程:
1、老王是研發部門的一個員工,在串連資料庫的發現無法串連,因此在公司內部溝通平台發送了一個請求,請求營運部查看下資料庫服務是否異常。
2)營運部的小麗接受了這個問題,也就是小麗給老王提供了這次服務,最終順利解決該問題
3)過了一周,老王又探索資料庫串連有問題,又在公司內部溝通平台發送了一個請求,請求營運部查看下資料庫服務是否異常。
4)營運部的小美接受了這個問題,也就是小美給老王提供了這次服務,最終順利解決該問題
三、案例分析:
1、這裡真實提供服務的就是SID(第一次是小麗SID1,第二次是小美SID2,第三次也是兩者之一)
2、營運支援部門,在公司內部溝通平台對應有一個虛擬使用者(Server_name),使用者將反饋提交給該使用者,然後由該虛擬使用者去調度後方真實節點提供服務,使用過JIRA平台的小夥伴應該深有感觸。
3、使用者不用關係,真實給我提供服務的人是誰,每次只需要將問題提交給該虛擬使用者(server_name),就會有技術服務人員來解決我的問題。
注意:在這裡使用者如果知道營運部裡面具體有誰,也可以配置成直接將問題分配給比如小麗,也就是說,在設定資料庫串連資訊時,可以配置成直接連接SID,也可以配置成串連server_name,然後由server_name去調控SID去處理請求。
總結:
SID:
一個資料庫可以有多個執行個體(如RAC叢集環境),SID用來標識資料庫內部每個執行個體的名字,就好像一個部門裡,每個人都有一個自己的名字(小麗和小美等)。
SERVICE_NAME:
資料庫對外宣稱的名字,它就像一個部門的名字,這個部門的名稱在資料庫的看門大爺(listener)那裡有登記。看門大爺一看你是要找SERVICE_NAME這個部門(營運部),就告訴你我們公司確實有這個部門,於是你就找到了,串連就建立了。
對於叢集來說,每個節點的SID 是不一樣的,但是SERVICE_NAME 可以包含所有節點。
一句話來說就是:
SID是對內部來說的,是執行個體層級的一個名字,用於資料庫內部之間稱呼。
SERVICE_是對外的,是資料庫層級的一個名字,用來告訴外面的人,我資料庫叫"SERVICE_NAME"。
你可以通過service_name參數指定這個名字是什麼,可以有多個名字,名字隨便起,叫老王,老張都沒關係。如果你不指定,預設的是Db_name. Db_domain,也就是global_name。
這些易混淆的名字,你只要記住,他們不是指資料庫,就是指執行個體,就這兩個東西,別無其它。他們具體用哪個名字,要看針對對象。是對資料庫,還是對作業系統,還是對外部串連請求。分清楚這點,就不容易混了
結尾:
感謝閱讀,祝有收穫的一天,謝謝!
本文出自 “清風攬月的部落格” 部落格,請務必保留此出處http://watchmen.blog.51cto.com/6091957/1928387
ORACLE中的Server_name和SID概念理解