ORACLE中的Server_name和SID概念理解
博文說明【前言】:
本文將通過個人口吻介紹在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
正文:
案例分析:
一、引入關系:
服務器=公司
數據庫=運維支持部(數據庫分為單機和集群環境,也就是部門的人數多少關系)
數據庫集群環境=運維支持部門(假設部門有小麗,小美兩名員工,對應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概念理解