標籤:oracle scan
Oracle 11gR2 中,引入了SCAN(Single ClientAccess Name)的特性。SCAN是一個網域名稱,可以解析至少1個IP,最多解析3個SCAN IP,用戶端可以通過這個SCAN 名字來訪問資料庫,另外SCAN ip必須與public ip和VIP在一個子網。
在11gR2之前配置TNS串連串使用的都是VIP,如果RAC叢集添加節點或VIP有變化,就需要對所有的用戶端的TNS配置進行修改,這樣很麻煩,引入SCAN後就省去了這些麻煩。啟用SCAN 之後,會在資料庫與用戶端之間,添加了一層虛擬服務層,就是SCAN IP和SCAN IP Listener,在用戶端僅需要配置SCAN IP的tns資訊,通過SCANIP Listener,串連後台叢集資料庫。這樣,不論叢集資料庫是否有添加或者刪除節點的操作,均不會對用戶端產生影響,也就不需要修改配置。
1、配置SCAN有3種方法:
1. 使用/etc/hosts檔案
這個是我們目前用的最多的方式,但是缺點只能對應一個SCAN IP,該方法Oracle 不推薦,但是簡單,不需要單獨的DNS 伺服器,使用該方法,用戶端還是需要VIP來連結。 Oracle 推薦使用其他的2種方法來實現SCAN 功能。
2. 在DNS中定義網域名稱,只需要在DNS中配置即可實現SCAN 功能。
650) this.width=650;" src="http://img.blog.csdn.net/20150114173124562?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGlhbmxlc29mdHdhcmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" style="border:none;height:auto;" />
3. 通過Grid Naming Server(GNS),需要配置DNS 和DHCP才能實現SCAN 功能。
650) this.width=650;" src="http://img.blog.csdn.net/20150114173130703?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGlhbmxlc29mdHdhcmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" style="border:none;height:auto;" />
註:這部分摘自David的部落格,http://blog.csdn.net/tianlesoftware/article/details/42712979,我困惑的是使用第一種方法也可以使用SCAN IP來串連到資料庫,但為什麼davide說還是需要使用VIP來串連?
配置完成後就可以在TNS串連串用SCAN IP來串連資料庫了。
2、SCAN工作流程
在啟用SCAN 特性之後,除了多幾個SCAN IP 之外,還會多幾個SCAN IP Listener,每個SCAN IP對應一個SCAN IP Listener,為了效能考慮,每個SCAN IP以及其對應的SCAN IP Listener將被獨立的分配到各個節點上。
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/97/DB/wKioL1kz9CWgNqnQAAB3nt68u74190.jpg" title="Scan.jpg" alt="wKioL1kz9CWgNqnQAAB3nt68u74190.jpg" />
從Oracle給出的圖中可以看到,圖的右邊是一個4個節點的RAC 叢集,所以有4個Local Listener。 配置了3個SCAN IP和3個 SCAN Listeners。這3個SCAN IP 是隨機的落在RAC節點上。
更多概念性的東西可以參考David的部落格:http://blog.csdn.net/tianlesoftware/article/details/42712979。
3、實際管理SCAN
在安裝RAC的時候,需要在/etc/hosts檔案中配置一條如下的資訊:
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/97/DB/wKioL1kz9qXyymeiAAAFnHdRkDI382.png" title="1.png" alt="wKioL1kz9qXyymeiAAAFnHdRkDI382.png" />
啟動叢集後可以看到關於SCAN的服務,它們被分在叢集資源中,可以看到有vip服務和監聽服務
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/97/DB/wKioL1kz9xzz2EJ7AAA53Az1sVg854.png" title="1.png" alt="wKioL1kz9xzz2EJ7AAA53Az1sVg854.png" />
使用srvctl進行管理scan,下面為查看SCAN和SCAN_LISTENER的狀態和配置
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/97/D9/wKiom1kz946TBSUxAABH9w4DJcs490.png" title="1.png" alt="wKiom1kz946TBSUxAABH9w4DJcs490.png" />
下面看看SCAN Listenre的狀態,和監聽的服務
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/97/DB/wKioL1kz9-exQRMFAACwpNMWaYs518.png" title="1.png" alt="wKioL1kz9-exQRMFAACwpNMWaYs518.png" />從上面可以看到這一個SCAN Listener監聽著兩個執行個體,這是通過remote_listener參數來實現的。
從上在的配置中可以看出,現在這個叢集中只有一個SCAN IP,現在增加一個SCAN IP
先在兩個節點的/etc/hosts檔案中添加一個新的ip
192.168.56.27 rac-scan
添加完成後,修改SCAN服務
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/97/DB/wKioL1kz-ZWTZE0YAABFYbIsgPU261.png" title="1.png" alt="wKioL1kz-ZWTZE0YAABFYbIsgPU261.png" />
從中可以看到新的IP已經添加到了SCAN服務中,但還沒有運行,執行下面命令
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/97/DA/wKiom1kz_AuBdLw1AAAWYp8hHfM831.png" style="float:none;" title="1.png" alt="wKiom1kz_AuBdLw1AAAWYp8hHfM831.png" />
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/97/DB/wKioL1kz_AzRLEDWAAAaihYsetU513.png" style="float:none;" title="2.png" alt="wKioL1kz_AzRLEDWAAAaihYsetU513.png" />
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/97/DB/wKioL1kz_AzCucXPAAA8Kc1V3GI589.png" style="float:none;" title="3.png" alt="wKioL1kz_AzCucXPAAA8Kc1V3GI589.png" />
從上面的中可以看到雖然報錯了,但scan2服務仍然啟動了,虛擬IP也已經綁定到了網卡上
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/97/DB/wKioL1kz_Hagf4pRAAA9DxuoCk8980.png" title="1.png" alt="wKioL1kz_Hagf4pRAAA9DxuoCk8980.png" />但現在還只有一個SCAN Listener,下面啟動第二個監聽:
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/97/DB/wKioL1kz_aajEWnGAAAqqSCjDiI990.png" style="float:none;" title="1.png" alt="wKioL1kz_aajEWnGAAAqqSCjDiI990.png" />
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/97/DA/wKiom1kz_abwh8OqAAAqu3BIQWU691.png" style="float:none;" title="2.png" alt="wKiom1kz_abwh8OqAAAqu3BIQWU691.png" />
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/97/DB/wKioL1kz_aej7Iv0AAAgXWW5o78482.png" style="float:none;" title="3.png" alt="wKioL1kz_aej7Iv0AAAgXWW5o78482.png" />
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/97/DB/wKioL1kz_aeDXitDAABFRKFHZAM822.png" style="float:none;" title="4.png" alt="wKioL1kz_aeDXitDAABFRKFHZAM822.png" />
啟動監聽後查看第二個監聽是否有資料庫服務
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/97/DB/wKioL1kz_e3gAu_DAACwmIei0fQ992.png" title="1.png" alt="wKioL1kz_e3gAu_DAACwmIei0fQ992.png" />測試使用新的SCAN IP串連資料庫
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/97/DB/wKioL1kz_oeCNisvAAAdWsN0O7o769.png" title="1.png" alt="wKioL1kz_oeCNisvAAAdWsN0O7o769.png" />
串連成功。
參考:Grid Infrastructure Single Client Access Name (SCAN) Explained (文檔 ID 887522.1)
http://docs.oracle.com/cd/E11882_01/rac.112/e41960/toc.htm
http://blog.csdn.net/tianlesoftware/article/details/42712979
本文出自 “DBA Fighting!” 部落格,請務必保留此出處http://hbxztc.blog.51cto.com/1587495/1932119
Oracle 11gR2 RAC中的SCAN IP