虚拟化容器,大数据,DBA,中间件,监控。

About Oracle 11gR2 Grid Infrastructure Single Client Access Name (SCAN)

18 10月
作者:admin|分类:DBA运维

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))

)

浏览2029 评论0
返回
目录
返回
首页
Linux: How to Configure the DNS Server for 11gR2 SCAN Oracle 11g R2 RAC:配置 DNS 解析 SCAN VIP
↑