Oracle11gR2Grid Infrastructure (CRS)中引入了Single Client Access Name (SCAN)來簡化用戶端對資料庫服務的通路,本文将詳細說明 SCAN的含義及其工作原理。
SCAN概念
- Single client access name (SCAN)是提供給所有用戶端用于連接配接叢集的虛拟主機名稱(與10g和 11g R1中的 vip主機名稱相對應)。
- SCAN是 DNS或 Grid Naming Service (GNS)中注冊到 1-3個 IP位址的一個域名。
- 預設情況下,SCAN名稱與叢集的名稱相同,且該名稱在同一企業内必須唯一。SCAN的預設值基于本地節點的名稱。SCAN名稱的長度最少1個字元,最多15個字元,必須包含字母和數字,不得以數字開頭,可以包含連字元(-)。如果要使用長度超過15字元的 SCAN,請在安裝 Grid Infrastructure時選擇“ Advanced installation”選項。
- 要想成功安裝 Grid Infrasture,SCAN必須至少解析成一個 IP位址。
- SCAN VIP位址必須與virtual IP位址和 public IP位址位于同一子網。
- Oracle強烈建議不要再 hosts檔案中配置 SCAN VIP位址。如果使用 hosts檔案來解析 SCAN主機名,則該 SCAN hostname隻能解析成一個SCAN IP位址。
- 如果使用 hosts檔案來解析SCAN主機名,則在 Grid Infrastructure安裝結束時會遇到類似如下Cluster Verification Utility故障。
Installation log -$ORACLE_BASE/oraInventory/logs/installActions{$TIMESTAMP}.log
INFO: PRVG-1101 : SCANname "cluscan.us.oracle.com" failed to resolve
INFO: ERROR:
INFO: PRVF-4664 : Found inconsistent name resolution entries for SCAN name "cluscan.us.oracle.com"
INFO: ERROR:
INFO: PRVF-4657 : Name resolution setup check for"scanclunm" (IP address: 10.4.0.202) failed
OR
PRCS-1016 : Failed to resolve Single Client Access Namecluscan.us.oracle.com
- 出于高可用性和可擴充性的考慮, Oracle推薦配置使用 DNS循環解析将 SCAN解析成三個位址。
- 因為 SCAN是與整個叢集而不是特定的節點關聯,使用 SCAN可以再無需重新配置用戶端的情況下友善地從叢集添加或删除節點。SCAN還增強了資料庫的位置無關性,使得用戶端配置部再依賴于運作特定資料庫的節點。
- 用戶端仍然可以繼續使用之前版本的方法來通路叢集,不過 Oracle推薦用戶端使用 SCAN來通路叢集。使用SCAN的用戶端也可以使用 EZCONNECT方式來通路叢集。
- Grid Infrastructure除了啟動所有節點上的本地監聽程式 LISTENER來監聽本地的VIP外,還會啟動SCAN listener LISTENER_SCAN1(一個叢集中最多3個)來監聽SCAN VIP;Oracle Database11gR2預設情況下會将local_listener設定成 local LISTENER,将remote_listener設定為 SCAN listener。
- SCAN listener will be running off GRID_HOME, and by default, in 11gR2 local listener will be running off GRID_HOME as well.
SCAN相關的常見問題
如何配置 SCAN和SCAN listener?
在“Typical installation”過程中,程式會提示您确認預設的Single Client Access Name (SCAN)。如果您更改預設的SCAN,則您要使用的 SCAN名稱必須保持唯一性。
如果 SCAN名稱解析成一個IP位址,則root腳本(root.sh or rootupgrade.sh)将根據 SCAN名稱解析的 IP位址數量來建立 SCAN VIP資源(ora.scan1.vip)以及相應SCAN listener資源(ora.LISTENER_SCAN1.lsnr)的數量。例如,如果SCAN名稱可以解析為 2個 IP位址,則将 root腳本就會建立兩個 SCAN VIP資源和兩個相應的SCAN listener資源。
SCAN VIP及相應的 SCAN listener成對工作,當SCAN VIP failover到其他節點,則相應的SCAN監聽程式也會 failover到同一節點。
當SCAN VIPfailover發生時,始終會選擇運作SCAN VIP最少的節點,例如,在一個 4節點的叢集中,如果 SCAN VIP運作在節點、節點2和節點3上,則當節點 3 down 掉時,節點3上的SCAN VIP 及相應的SCAN listener就會 failover到節點4上,因為其他兩個節點的每個節點上已經運作了一個SCAN VIP。
我們還可以使用“srvctl”來添加/修改SCAN vip和 listener。
是否仍然需要在每個節點上配置 locallistener?
回答是“是”,我們仍然需要在每個節點配置獨立的 local listener。SCAN listener 并沒有取代每個節點上的 local listener。
在 11g R2的 GI中,叢集中的所有節點上會運作3個新的 scan listener,如果叢集節點超過3個,則隻會在其中3個節點上運作 SCAN listener,無論叢集有多少節點,最多也隻會有3個 scan listener。資料庫通過 remote_listener 初始化參數注冊到 SCAN listener中。如果叢集中任意一個 scan listener挂掉,都會在一個新的節點上自動重新開機。
SCAN的工作原理
在用戶端送出請求時,在SCAN VIP位址及端口上進行監聽的SCANlistener就會代表用戶端建立連接配接。因為叢集上的所有服務都已注冊到 SCAN listener中, SCAN listener就會将負載最少的節點(每個scan listener會實時更新叢集的負載統計資訊)上的 local listener的位址傳回給用戶端。最後,用戶端就與通過傳回的提供服務的節點上的 local listener與服務建立連接配接。所有這些操作對于用戶端來說都會透明的,用戶端無需進行任何明确的配置。
$ SRVCTL STATUSSCAN_LISTENER
SCAN ListenerLISTENER_SCAN1 is enabled
SCAN listenerLISTENER_SCAN1 is running on node TEST1
SCAN ListenerLISTENER_SCAN2 is enabled
SCAN listenerLISTENER_SCAN2 is running on node TEST2
SCAN ListenerLISTENER_SCAN3 is enabled
SCAN listenerLISTENER_SCAN3 is running on node TEST3
可否用 '/etc/hosts'來解析 SCAN而不用 DNS或 GNS?
Oracle強烈建議不要在 hosts檔案中配置SCAN VIP 位址。但是可以使用hosts檔案來解析SCAN名稱,隻不過隻能解析成一個SCAN IP位址。
如果使用 hosts檔案來解析 SCAN名稱,則在安裝結束時會遇到ClusterVerification Utility失敗錯誤,詳細資訊請見metalink文章 NOTE 887471.1 。
可否使用之前的連接配接方式(VIP)來進行用戶端連接配接?
用戶端仍舊可以使用之前版本的連接配接方式(VIP)來通路叢集。
Oracle強烈建議用戶端使用 SCAN來通路叢集。使用 SCAN的用戶端也可以 EZCONNECT方式來通路叢集。
是否必須要使用 SCAN?
強烈建議而已,并非必須。
是否支援删除 SCAN?
SCAN Oracle 11gR2 Grid Infrastructure的一個元件,不支援删除SCAN。
Sample TNS entry for SCAN
TEST.ORACLE.COM =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=SCAN-TEST.ORACLE.COM)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=11GR2TEST.ORACLE.COM))
)
Sample TNS Entry without SCAN
TEST.ORACLE.COM =
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=TEST1-vip.ORACLE.COM)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=TEST2-vip.ORACLE.COM)(PORT=1521))
)
(CONNECT_DATA=(SERVICE_NAME=11GR2TEST.ORACLE.COM))
)
轉載請注明作者出處及原文連結,否則将追究法律責任:
作者:xiangsir
原文連結:http://blog.csdn.net/xiangsir/article/details/9224479
QQ:444367417
MSN:[email protected]