Oracle11gR2Grid Infrastructure (CRS)中引入了Single Client Access Name (SCAN)来简化客户端对数据库服务的访问,本文将详细说明 SCAN的含义及其工作原理。
SCAN概念
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
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