SCAN概念:
先介紹一下什麼叫SCAN,SCAN(Single Client Access Name)是Oracle從11g R2開始推出的,用戶端可以通過SCAN特性負載均衡地連接配接到RAC資料庫。是以在Oracle 11gR2 中,引入了SCAN(Single ClientAccess Name)的特性。SCAN是一個域名,可以解析至少1個IP,最多解析3個SCAN IP,用戶端可以通過這個SCAN 名字來通路資料庫,另外SCAN ip必須與public ip和VIP在一個子網。
SCAN提供一個域名來通路RAC,域名可以解析1個到3個(注意,最多3個)SCAN IP,我們可以通過DNS或者GNS來解析實作。其中DNS大家都很熟悉,這裡不多說。GNS(Grid Naming Service)則是Oracle 11g R2的新功能,可以通過DHCP服務為節點和SCAN配置設定VIP和SCAN IP。另外還有個優點是,對于新加入叢集的節點,它會自動配置設定VIP位址,更新叢集資源,用戶端依然通過SCAN特性負載均衡地連接配接到新增叢集節點上。DNS和GNS配置與解析相關内容在下面還有說明。
除了DNS和GNS解析方法外,SCAN也可以使用hosts檔案來解析,但用過的人都知道,此方法不僅在安裝RAC的時候産生問題,後期使用也是存在問題的,比如SCAN域名隻能定義一個SCAN IP。是以這種方法也是Oracle不推薦使用的。
但盡管如此,很多生産上依然這樣使用,也就是廢棄了11g的新特性SCAN,而是依然采用VIP連接配接方式。
<b>SCAN ip </b><b>工作原理:</b>

啟用SCAN 之後,會在資料庫與用戶端之間,添加了一層虛拟的服務層,就是SCAN IP和SCAN IP Listener,在用戶端僅需要配置SCAN IP的tns資訊,通過SCANIP Listener,連接配接背景叢集資料庫。這樣,不論叢集資料庫是否有添加或者删除節點的操作,均不會對用戶端産生影響,也就不需要修改配置。
配置SCAN有3種方法:
1. 使用/etc/hosts檔案
這個是我們目前用的最多的方式,但是缺點隻能對應一個SCAN IP,該方法Oracle 不推薦,但是簡單,不需要單獨的DNS 伺服器,使用該方法,用戶端還是需要VIP來連結。 Oracle 推薦使用其他的2種方法來實作SCAN 功能。
2. 在DNS中定義域名,隻需要在DNS中配置即可實作SCAN 功能。
3. 通過Grid Naming Server(GNS),需要配置DNS 和DHCP才能實作SCAN 功能。
配置好之後,直接在用戶端的tnsnames裡寫SCAN NAME就可以了,如下:
RACSCAN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan.gns.cndba.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dave)
)
以後RAC 增加删除節點,用戶端都不需要修改。