《YH12:一篇文章讀懂SCAN》要點(diǎn):
本文介紹了YH12:一篇文章讀懂SCAN,希望對您有用。如果有疑問,可以聯(lián)系我們。
單客戶端訪問名稱(SCAN)是Oracle RAC環(huán)境中使用的功能,為客戶端提供訪問集群中運(yùn)行的任何Oracle數(shù)據(jù)庫的單一名稱. 用戶可以將SCAN視為RAC數(shù)據(jù)庫的集群別名. 使用SCAN的好處是,如果在集群中添加或刪除節(jié)點(diǎn)或數(shù)據(jù)庫,則客戶端的連接信息不需要更改.
SCAN首次引入了Oracle RAC 11g第2版,并在Oracle RAC 12c中提供了其他功能. 使用單一名稱訪問集群以連接到此集群中的數(shù)據(jù)庫,客戶端可以使用EZConnect和簡單的JDBC瘦URL來訪問集群中運(yùn)行的任何數(shù)據(jù)庫,而與集群中運(yùn)行的數(shù)據(jù)庫或服務(wù)器數(shù)量無關(guān),集群中所請求的數(shù)據(jù)庫實(shí)際上是處于活動狀態(tài)的服務(wù)器.
在安裝與Oracle Database 11. 2或更高版本一起分發(fā)的Oracle Grid Infrastructure的過程中定義了默認(rèn)的SCAN配置. Oracle Grid Infrastructure是一個包含Oracle Clusterware和Oracle Automatic Storage Management的Oracle Home.
必須首先安裝Oracle Grid Infrastructure才能使用Oracle RAC 11.2或更高版本. 在Oracle Grid Infrastructure安裝的面試階段,系統(tǒng)將提示需要提供SCAN名稱. 有兩個選項(xiàng)用于定義掃描:
1.使用公司DNS(域名服務(wù))定義SCAN
2.使用Oracle網(wǎng)格命名服務(wù)(GNS)定義SCAN
對于使用公司的DNS定義SCAN,必須要求網(wǎng)絡(luò)管理員使用循環(huán)算法創(chuàng)建至少一個單一名稱,用于解析為三個IP地址. 考慮到負(fù)載均衡和高可用性要求,建議使用三個IP地址,無論集群中的服務(wù)器數(shù)量如何.
IP地址必須與集群中的默認(rèn)公網(wǎng)位于同一子網(wǎng). 該名稱的長度必須不超過15個字符,不包括域名,并且必須在沒有域后綴的情況下解析(例如:“sales1-scan”必須是可解析的而不是“scan1-can.example.com”) . 不能將IP分配給網(wǎng)絡(luò)接口.
可以使用“nslookup”檢查DNS中的SCAN配置. 如果DNS設(shè)置為向SCAN條目解析的IP提供循環(huán)訪問,則至少運(yùn)行“nslookup”命令兩次以查看循環(huán)算法的工作. 結(jié)果應(yīng)該是,每次“nslookup”將以不同的順序返回一組三個IP.
注意:如果DNS服務(wù)器沒有返回一組三個IP,如上圖所示或不循環(huán),請咨詢網(wǎng)絡(luò)管理員啟用此類設(shè)置. DNS級別的循環(huán)允許跨集群中的SCAN偵聽器之間的連接請求負(fù)載平衡. SCAN作為一個整體不需要,并且沒有這樣的設(shè)置將不會阻止連接請求到另一個SCAN偵聽器的故障切換,以防列表中的第一個SCAN偵聽器關(guān)閉.
Oracle客戶端通常處理集群中SCAN偵聽器之間的連接請求的故障轉(zhuǎn)移. Oracle數(shù)據(jù)庫11.2或更高版本的Oracle客戶端不需要任何特殊配置來提供此類故障轉(zhuǎn)移.較老的客戶需要考慮額外的配置.因此,建議使用SCAN連接到數(shù)據(jù)庫的客戶端的最小版本是Oracle Database 11.2或更高版本.
使用客戶端DNS緩存可能會產(chǎn)生DNS覆蓋不會從DNS服務(wù)器發(fā)生的錯誤印象. (DNS不返回一組三個IP,如上圖所示).客戶端DNS緩存通常用于最小化對外部DNS服務(wù)器的DNS請求以及最小化DNS解析時間.這是一個帶有本地項(xiàng)目的簡單遞歸DNS服務(wù)器.
如果客戶端DNS無法設(shè)置為在本地提供循環(huán)或無法禁用,則使用JDBC:thin connect的Oracle客戶端通常將嘗試連接到列表中首先返回的SCAN-IP和SCAN偵聽器.這基本上禁用了來自這些客戶端的集群中的SCAN偵聽器之間的連接請求負(fù)載平衡,但不影響整個SCAN功能.基于Oracle調(diào)用接口(OCI)的數(shù)據(jù)庫訪問驅(qū)動程序?qū)?yīng)用內(nèi)部循環(huán)算法,在這種情況下不需要考慮.
使用Oracle GNS定義SCAN,只需要在訪問期間輸入SCAN名稱. 在集群配置的某個階段,當(dāng)使用基于IPv6的IP地址與Oracle RAC 12c時,將從DHCP服務(wù)或使用“無狀態(tài)地址自動配置”(SLAAC)獲取三個IP地址(使用GNS,但假設(shè)使用某些在公共網(wǎng)絡(luò)上進(jìn)行動態(tài)IP分配的形式)來創(chuàng)建掃描. 然后由GNS2提供SCAN名稱解析.
在安裝時沒有DNS服務(wù)器可用的解決方法
Oracle通用安裝程序(OUI)在Oracle Grid Infrastructure安裝期間強(qiáng)制提供默認(rèn)的SCAN解決方案,因?yàn)樵诩褐袆?chuàng)建Oracle RAC 11.2版或更高版本的數(shù)據(jù)庫時,SCAN概念是必不可少的.用于創(chuàng)建數(shù)據(jù)庫的所有Oracle Database 11.2版或更高版本的工具(例如數(shù)據(jù)庫配置助手(DBCA)或網(wǎng)絡(luò)配置助手(NetCA))將承擔(dān)其存在.因此,在提供合適的SCAN分辨率之前,OUI不會允許繼續(xù)進(jìn)行安裝.
但是,為了克服安裝要求而不設(shè)置基于DNS的SCAN解決方案,可以使用基于hosts-file的解決方法.在這種情況下,將使用典型的主機(jī)文件條目將SCAN解析為只有1個IP地址和一個IP地址.不可能模擬DNS服務(wù)器使用本地主機(jī)文件的循環(huán)分辨率.操作系統(tǒng)執(zhí)行的主機(jī)文件查找將僅返回與該名稱匹配的第一個IP地址.也不能在一個條目(主機(jī)文件中的一行)中執(zhí)行此操作.因此將僅為集群創(chuàng)建1個SCAN. 這種情況下,必須更改集群中所有節(jié)點(diǎn)上的hosts文件.
強(qiáng)烈建議在升級或初始安裝后不久,啟用上述任一種SCAN配置.為了使集群知道修改的SCAN配置,請刪除hosts文件中的條目,然后在集群中的一個節(jié)點(diǎn)上以root用戶執(zhí)行:srvctl modify scan -n <scan_name>.
在11.2的版本中,SCAN的使用仍有一些不足之處,根據(jù)客戶要求和反饋,Oracle Grid Infrastructure 12c的SCAN上做了增強(qiáng),包括以下內(nèi)容:
1. SCAN和Oracle Clusterware管理的VIP現(xiàn)在支持基于IPv6的IP地址
2. SCAN默認(rèn)情況下僅限于從集群中的節(jié)點(diǎn)接受服務(wù)注冊
3. SCAN支持集群中的多個子網(wǎng)(每個子網(wǎng)一個SCAN)
只有默認(rèn)的SCAN(在默認(rèn)網(wǎng)絡(luò),通常為網(wǎng)絡(luò)號1)可以在基于OUI的Oracle Grid Infrastructure安裝過程中進(jìn)行安裝和配置. 作為安裝后任務(wù),需要啟用集群中的多個子網(wǎng)支持.
這些增強(qiáng)功能需要更改SCAN和SCAN_LISTENER的配置:
從上圖輸出可以看出,支持基于IPv6的IP 是Oracle Grid Infrastructure 12c SCAN中的一個基本概念. 上圖未使用基于IPv6的IP地址,并且在分配給網(wǎng)絡(luò)接口卡(NIC)eth0的第一個網(wǎng)絡(luò)上的集群中僅部署了一個SCAN,還顯示了SCAN中新安全功能的跟蹤. 默認(rèn)情況下,Oracle Grid Infrastructure 12c中的SCAN將僅接受作為SCAN偵聽器分配到的集群一部分的數(shù)據(jù)庫實(shí)例的注冊.
注意:為了僅允許數(shù)據(jù)庫實(shí)例注冊集群中托管的數(shù)據(jù)庫,使用其分配的SCAN的數(shù)據(jù)庫實(shí)例的默認(rèn)注冊將使用專用互連.
如果由于某種原因 – 無法訪問或不使用為集群定義的專用互連的數(shù)據(jù)庫需要向相應(yīng)的SCAN偵聽器注冊,則可以修改SCAN偵聽器以允許在每個(命名的)節(jié)點(diǎn)上進(jìn)行其他注冊或子網(wǎng)基礎(chǔ),如下圖所示.
為了在集群中的多個子網(wǎng)上使用SCAN,必須首先啟用集群中多個子網(wǎng)的使用,這通常是安裝后任務(wù),包括以下步驟:
1、在(公共)網(wǎng)絡(luò)上創(chuàng)建附加子網(wǎng)
2、將節(jié)點(diǎn)VIP分配給新創(chuàng)建的子網(wǎng)
3、為新創(chuàng)建的子網(wǎng)創(chuàng)建一個節(jié)點(diǎn)偵聽器
4、使用一個或兩個選項(xiàng)創(chuàng)建掃描
步驟1假設(shè)要么有多個網(wǎng)絡(luò)接口卡(NIC),打算用于Oracle RAC集群中的公共網(wǎng)絡(luò)通信,或者有一個要與來自多個網(wǎng)絡(luò)的IP一起使用的接口地址. 兩者都可以各種方式建立,而在任一情況下,Oracle Clusterware層應(yīng)該能夠看到由oifcfg命令確定的多個接口,如下圖所示.
步驟2到4使用Oracle Clusterware標(biāo)準(zhǔn)命令,如下圖所示.
還要注意,將SCAN添加到網(wǎng)絡(luò)號2,不會在此網(wǎng)絡(luò)上自動創(chuàng)建SCAN偵聽器. 為了充分利用網(wǎng)絡(luò)號2上的SCAN,需要在此網(wǎng)絡(luò)上創(chuàng)建并啟動SCAN偵聽器.
現(xiàn)在已經(jīng)創(chuàng)建了另一個SCAN設(shè)置,使用不同的子網(wǎng)進(jìn)行公共通信,并創(chuàng)建了相應(yīng)的節(jié)點(diǎn)VIP,節(jié)點(diǎn)偵聽器和SCAN偵聽器,將需要使用這些SCAN通知數(shù)據(jù)庫如何注冊. 數(shù)據(jù)庫實(shí)例注冊偵聽器,特別是SCAN偵聽器的原則與Oracle Database 12c相比,與Oracle Database 11.2版相比并沒有改變.
自O(shè)racle Database 11.2以來,SCAN是Oracle RAC數(shù)據(jù)庫配置的重要組成部分,因此,假設(shè)使用標(biāo)準(zhǔn)Oracle工具(例如DBCA)創(chuàng)建數(shù)據(jù)庫,則REMOTE_LISTENER參數(shù)將默認(rèn)設(shè)置為SCAN.這允許實(shí)例向SCAN Listeners注冊為遠(yuǎn)程監(jiān)聽器,以提供有關(guān)實(shí)例提供哪些服務(wù)的信息,當(dāng)前負(fù)載以及關(guān)于應(yīng)將多少個傳入連接引導(dǎo)到實(shí)例的建議.
在這種情況下,必須考慮LOCAL_LISTENER參數(shù). LOCAL_LISTENER參數(shù)應(yīng)設(shè)置為node-VIP.如果需要完全合格的域名,請確保將LOCAL_LISTENER設(shè)置為完全限定的域名(例如node-VIP.example.com).默認(rèn)情況下,在集群配置期間,將在集群中的每個節(jié)點(diǎn)上創(chuàng)建節(jié)點(diǎn)偵聽器.如果要在集群中使用多個子網(wǎng),則應(yīng)在初始安裝后配置其他節(jié)點(diǎn)VIP,如本文“啟用多子網(wǎng)絡(luò)支持掃描”一節(jié)中所述.
從Oracle Grid Infrastructure 11g Release 2開始,節(jié)點(diǎn)偵聽器用完了Oracle Grid Infrastructure主站,并使用指定的端口監(jiān)聽節(jié)點(diǎn)VIP(默認(rèn)端口為1521).
與以前的數(shù)據(jù)庫版本不同,不建議將REMOTE_LISTENER參數(shù)設(shè)置為服務(wù)器端TNSNAMES別名,將主機(jī)解析為地址列表?xiàng)l目中的SCAN(例如:HOST = sales1- scan),但使用簡化的“SCAN:端口“語法,如下圖所示.
注意:如果使用簡單的連接命名方法,則可能需要修改SQLNET.ORA,以確保在指定用于客戶端名稱解析查找的命名方法的順序時,EZCONNECT在列表中(NAMES.DIRECTORY_PATH =(tnsnames ,ldap,ezconnect).
對于使用Oracle SQL * Net 11g第2版連接的客戶端,客戶端將通過DNS解析SCAN名稱來接收三個IP地址. 然后,客戶端將通過從DNS接收的列表,并嘗試通過接收到的IP之一進(jìn)行連接. 如果客戶端收到錯誤,它會在向用戶或應(yīng)用程序返回錯誤之前嘗試其他地址. 這類似于當(dāng)客戶端連接字符串中提供地址列表時,客戶端連接故障轉(zhuǎn)移在以前版本中的工作原理.
當(dāng)SCAN偵聽器接收到連接請求時,SCAN偵聽器將檢查提供所請求服務(wù)的最少加載的實(shí)例. 然后,它會將連接請求重新定向到運(yùn)行最少加載實(shí)例的節(jié)點(diǎn)上的本地偵聽器. 隨后,客戶端將被給予本地偵聽器的地址. 本地偵聽器將最終創(chuàng)建與數(shù)據(jù)庫實(shí)例的連接.
文章來自微信公眾號:數(shù)據(jù)和云
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/4194.html