博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
What is SCAN in Oracle 11g R2 RAC
阅读量:4256 次
发布时间:2019-05-26

本文共 35689 字,大约阅读时间需要 118 分钟。

What is SCAN in Oracle 11g R2 RAC

Single client access name (SCAN) is meant to facilitate single name for all Oracle clients to connect to the cluster database, irrespective of number of nodes and node location. Until now, we have to keep adding multiple address records in all clients tnsnames.ora, when a new node gets added to or deleted from the cluster.

Client TNS Entry in pre 11gR2 RAC environments:

[oid1@rac1 admin]$cat tnsnames.ora OIDDB =(DESCRIPTION =  (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip.freeoraclehelp.com)(PORT = 1521))     (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip.freeoraclehelp.com)(PORT = 1521))       (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = oid.freeoraclehelp.com)   ))[oid1@rac1 admin]$tnsping oiddbTNS Ping Utility for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 14:21:18Copyright (c) 1997, 2010, Oracle.  All rights reserved.Used parameter files:Used TNSNAMES adapter to resolve the aliasAttempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip.freeoraclehelp.com)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip.freeoraclehelp.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oid.freeoraclehelp.com)))OK (10 msec)[oid1@rac1 admin]$sqlplus system@oiddbSQL*Plus: Release 11.2.0.2.0 Production on Thu Dec 15 14:21:32 2011Copyright (c) 1982, 2010, Oracle.  All rights reserved.Enter password: Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Testing optionsSQL>

As you see above, we got to list all the addresses of all DB nodes. If the cluster has got more than cluster nodes, we got to list each and every node out here. This need to be updated when a new node is added or existing node is removed.

OIDDB = 

(DESCRIPTION = 
  (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip.freeoraclehelp.com)(PORT = 1521))   
  (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip.freeoraclehelp.com)(PORT = 1521))   
  (ADDRESS = (PROTOCOL = TCP)(HOST = rac3-vip.freeoraclehelp.com)(PORT = 1521))   
  (ADDRESS = (PROTOCOL = TCP)(HOST = rac4-vip.freeoraclehelp.com)(PORT = 1521))   
  .... 
  ....

    (CONNECT_DATA = 

      (SERVER = DEDICATED) 
      (SERVICE_NAME = oid.freeoraclehelp.com) 
   ) 
)

This is big problem when the cluster has many nodes and end user application makes connections to the databases. SCAN would help us easily manage the DB Connection strings in Client tnsnames.ora files. Here is how a SCAN entry would appear:

[oid1@rac1 admin]$cat tnsnames.oraOIDDB =(DESCRIPTION =  (ADDRESS = (PROTOCOL = TCP)(HOST = scan.freeoraclehelp.com)(PORT = 1521))       (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = oid.freeoraclehelp.com)   ))[oid1@rac1 admin]$tnsping oiddbTNS Ping Utility for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 14:37:16Copyright (c) 1997, 2010, Oracle.  All rights reserved.Used parameter files:Used TNSNAMES adapter to resolve the aliasAttempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = scan.freeoraclehelp.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oid.freeoraclehelp.com)))OK (0 msec)[oid1@rac1 admin]$[oid1@rac1 admin]$sqlplus system@OIDDBSQL*Plus: Release 11.2.0.2.0 Production on Thu Dec 15 14:37:28 2011Copyright (c) 1982, 2010, Oracle.  All rights reserved.Enter password: Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Testing optionsSQL>

So, you would see only one SCAN ADDRESS in tnsnames.ora files no matter how many nodes in the cluster are.

  (ADDRESS = (PROTOCOL = TCP)(HOST = scan.freeoraclehelp.com)(PORT = 1521)) 

How does SCAN work ?

SCAN is a GSD resource, which is managed by CRS. So, SCAN is pretty much aware of what's going on in the cluster.  Though Oracle documentation suggests that SCAN is a recommendation, but its a kind of mandatory as Oracle 11gR2 OUI would not proceed without it. SCAN is on top of VIPs, but you can directly connect to the local listener if you would like to bypass SCAN in client’s tnsnames.ora. Clients use SCAN name in tnsnames.ora to make the DB connection. SCAN Listener would forward the request to local listener that’s running on VIPs.

You would see these redirections at the SQLPLUS trace below.

connect(6, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)connect(6, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)connect(8, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)connect(8, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)connect(8, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("192.168.1.10")}, 16) = 0connect(9, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.20")}, 28) = 0connect(9, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.20")}, 28) = 0connect(9, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.20")}, 28) = 0connect(9, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.20")}, 28) = 0connect(9, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.20")}, 28) = 0connect(9, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.20")}, 28) = 0connect(9, {sa_family=AF_INET, sin_port=htons(1521), sin_addr=inet_addr("192.168.1.23")}, 16) = 0connect(9, {sa_family=AF_INET, sin_port=htons(1521), sin_addr=inet_addr("192.168.1.24")}, 16) = 0connect(9, {sa_family=AF_INET, sin_port=htons(1521), sin_addr=inet_addr("192.168.1.25")}, 16) = 0connect(9, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.20")}, 28) = 0connect(9, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.20")}, 28) = 0connect(9, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.20")}, 28) = 0connect(9, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.20")}, 28) = 0connect(9, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.20")}, 28) = 0connect(9, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.20")}, 28) = 0connect(9, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("192.168.1.24")}, 16) = 0connect(9, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("192.168.1.25")}, 16) = 0connect(9, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("192.168.1.23")}, 16) = 0connect(9, {sa_family=AF_INET, sin_port=htons(1521), sin_addr=inet_addr("192.168.1.25")}, 16) = -1 EINPROGRESS (Operation now in progress)connect(9, {sa_family=AF_INET, sin_port=htons(1521), sin_addr=inet_addr("192.168.1.11")}, 16) = -1 EINPROGRESS (Operation now in progress)

192.168.1.25 is one of the SCAN IPs and 192.168.1.11 is the VIP of the first RAC node.

[oid1@rac1 ~]$ nslookup 192.168.1.11Server:         192.168.1.20Address:        192.168.1.20#5311.1.168.192.in-addr.arpa       name = rac1-vip.freeoraclehelp.com.[oid1@rac1 ~]$ nslookup 192.168.1.25Server:         192.168.1.20Address:        192.168.1.20#5325.1.168.192.in-addr.arpa       name = scan.freeoraclehelp.com.[oid1@rac1 ~]$ nslookup scan.freeoraclehelp.comServer:         192.168.1.20Address:        192.168.1.20#53Name:   scan.freeoraclehelp.comAddress: 192.168.1.25Name:   scan.freeoraclehelp.comAddress: 192.168.1.23Name:   scan.freeoraclehelp.comAddress: 192.168.1.24[oid1@rac1 ~]$

So, SCAN needs to resolve to one to three IP addresses with the same name. Oracle recommends using three IP Addresses for SCAN in DNS. There would be three SCAN listeners only, though the cluster has got dozens of nodes. SCAN listeners would be started from GRID Oracle Home, not the database/rdbms home. Since its part of a grid, this can be used for all the database in the cluster. So, we don't to run netca to create listeners in DB Homes anymore. If the default port, 1521, is used, Oracle instances (PMON) automatically registers with the SCAN listener. Here is a quick look at Oracle documentation's load balancing flow with SCAN:


  1. PMON process of each instance registers the database services with the default listener on the local node and with each SCAN listener, which is specified by the REMOTE_LISTENER database parameter.
  2. Oracle client connects using SCAN name: myscan:1521/sales.example.com
  3. Client queries DNS to resolve scan_name.
  4. SCAN listener selects least loaded node (node in this example)
  5. The client connects to the local listener on node2. The local listener starts a dedicated server process for the connection to the database.
  6. The client connects directly to the dedicated server process on node2 and accesses the sales2 database instance.
SQL> show parameter local_listenerNAME                    TYPE        VALUE--------------------   ---------    --------- local_listener          string     (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)       (HOST=192.168.1.11)(PORT=1521))))SQL> show parameter remote_listenerNAME                    TYPE        VALUE--------------------   ---------    --------- remote_listener        string      scan.freeoraclehelp.com:1521SQL>

After the installation, two SCAN listeners would be started on one node and another SCAN listener on another node in a two node cluster. 

[grid@rac1 ~]$srvctl config scanSCAN name: scan.freeoraclehelp.com, Network: 1/192.168.1.0/255.255.255.0/eth0SCAN VIP name: scan1, IP: /scan.freeoraclehelp.com/192.168.1.25SCAN VIP name: scan2, IP: /scan.freeoraclehelp.com/192.168.1.23SCAN VIP name: scan3, IP: /scan.freeoraclehelp.com/192.168.1.24[grid@rac1 ~]$srvctl config scan_listenerSCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521SCAN Listener LISTENER_SCAN2 exists. Port: TCP:1521SCAN Listener LISTENER_SCAN3 exists. Port: TCP:1521[grid@rac1 ~]$crsctl stat res -w "TYPE = ora.scan_listener.type"NAME=ora.LISTENER_SCAN1.lsnrTYPE=ora.scan_listener.typeTARGET=ONLINESTATE=ONLINE on rac1NAME=ora.LISTENER_SCAN2.lsnrTYPE=ora.scan_listener.typeTARGET=ONLINESTATE=ONLINE on rac2NAME=ora.LISTENER_SCAN3.lsnrTYPE=ora.scan_listener.typeTARGET=ONLINESTATE=ONLINE on rac2[grid@rac1 ~]$[grid@rac1 ~]$ps -ef|grep tnsloracle    6873     1  0 13:11 ?        00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inheritoracle    6892     1  0 13:11 ?        00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER -inherit[grid@rac1 ~]$[grid@rac1 ~]$lsnrctl status LISTENER_SCAN1LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 15:13:48Copyright (c) 1991, 2010, Oracle.  All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))STATUS of the LISTENER------------------------Alias                     LISTENER_SCAN1Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - ProductionStart Date                15-DEC-2011 13:11:15Uptime                    0 days 2 hr. 2 min. 33 secTrace Level               offSecurity                  ON: Local OS AuthenticationSNMP                      OFFListener Parameter File   /oracle/product/11.2.0/11.2.0/grid/network/admin/listener.oraListener Log File         /oracle/product/11.2.0/11.2.0/grid/log/diag/tnslsnr/rac1/listener_scan1/alert/log.xmlListening Endpoints Summary...  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.25)(PORT=1521)))Services Summary...Service "oid.freeoraclehelp.com" has 2 instance(s).  Instance "oid1", status READY, has 1 handler(s) for this service...  Instance "oid2", status READY, has 1 handler(s) for this service...The command completed successfully[grid@rac1 ~]$[grid@rac2 ~]$ps -ef|grep tnsloracle    5830     1  0 12:38 ?        00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER_SCAN3 -inheritoracle    5833     1  0 12:38 ?        00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER_SCAN2 -inheritoracle    5836     1  0 12:38 ?        00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER -inheritoracle    7423  7372  0 15:14 pts/1    00:00:00 grep tnsl[grid@rac2 ~]$[grid@rac2 ~]$lsnrctl status LISTENER_SCAN2LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 15:14:04Copyright (c) 1991, 2010, Oracle.  All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2)))STATUS of the LISTENER------------------------Alias                     LISTENER_SCAN2Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - ProductionStart Date                15-DEC-2011 12:38:45Uptime                    0 days 2 hr. 35 min. 19 secTrace Level               offSecurity                  ON: Local OS AuthenticationSNMP                      OFFListener Parameter File   /oracle/product/11.2.0/11.2.0/grid/network/admin/listener.oraListener Log File         /oracle/product/11.2.0/11.2.0/grid/log/diag/tnslsnr/rac2/listener_scan2/alert/log.xmlListening Endpoints Summary...  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN2)))  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.23)(PORT=1521)))Services Summary...Service "oid.freeoraclehelp.com" has 2 instance(s).  Instance "oid1", status READY, has 1 handler(s) for this service...  Instance "oid2", status READY, has 1 handler(s) for this service...The command completed successfully[grid@rac2 ~]$lsnrctl status LISTENER_SCAN3LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 15:14:06Copyright (c) 1991, 2010, Oracle.  All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN3)))STATUS of the LISTENER------------------------Alias                     LISTENER_SCAN3Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - ProductionStart Date                15-DEC-2011 12:38:45Uptime                    0 days 2 hr. 35 min. 21 secTrace Level               offSecurity                  ON: Local OS AuthenticationSNMP                      OFFListener Parameter File   /oracle/product/11.2.0/11.2.0/grid/network/admin/listener.oraListener Log File         /oracle/product/11.2.0/11.2.0/grid/log/diag/tnslsnr/rac2/listener_scan3/alert/log.xmlListening Endpoints Summary...  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN3)))  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.24)(PORT=1521)))Services Summary...Service "oid.freeoraclehelp.com" has 2 instance(s).  Instance "oid1", status READY, has 1 handler(s) for this service...  Instance "oid2", status READY, has 1 handler(s) for this service...The command completed successfully[grid@rac2 ~]$

How to setup DNS for Oracle 11g R2 SCAN?

Oracle recommends three IP Addresses be used for SCAN. SCAN setup has become a big problem for RAC Setups at home or test environments.. especially where there is no real DNS Server in the network. If you're trying to set up 11gR2 RAC at home on VMWare, Oracle Virtualbox, Oracle VM, Xen..etc, you probably hit this situation.  would explain setting up a DNS daemon on one of the RAC nodes. Of course, you wouldn’t want to run bind in your production RAC nodes. You would have DNS Administrator add three A records for the same name, SCAN.  Once DNS is set up, make sure that all three A records are returned in nslookup.

[oid1@rac1 ~]$ nslookup scan.freeoraclehelp.comServer:         192.168.1.20Address:        192.168.1.20#53Name:   scan.freeoraclehelp.comAddress: 192.168.1.25Name:   scan.freeoraclehelp.comAddress: 192.168.1.23Name:   scan.freeoraclehelp.comAddress: 192.168.1.24[oid1@rac1 ~]$

How to setup GNS for Oracle 11g R2 SCAN?

Grid Naming Service (GNS) is another new service introduced in Oracle RAC 11g R2. With GNS, Oracle Cluster Software (CRS) can manage DHCP and DNS Services for the dynamic node registration and configuration. If you’re go to use GNS for the cluster, you should set up a different subdomain in the main DNS Server and delegate name lookups in the subdomain to GNS. For example, if your company domain is freeoraclehelp.com, you’re going to create grid.freeoraclehelp.com in the DNS Servers of freeoraclehelp.com and delegate lookups for grid.freeoraclehelp.com to GNS VIP.

# Delegate to GNS Server in DNS Serversgrid.freeoraclehelp.com NS gnsvip.freeoraclehelp.com# Address Record for the GNS VIPgnsvip.freeoraclehelp.com. 192.168.1.31

Once subdomain is complete, lookups for the subdomain names from the main domain would be forwarded to GNS Services. You would be entering the subdomain name and GNS VIP during the Grid Infrastructure installation.

 explains the Oracle 11g R2 RAC installation with GNS.

How to install Oracle 11g R2 RAC without SCAN Setup in DNS or GNS?

This is mostly suited in three tier web environments where end users would not connect to the database directly and Application Servers can use Local listener Connections (10g like connections over VIPs). So, you would not see much benefits using SCAN here.  Whatever may be your reasons, if you’d like to use SCAN from hosts file (no DNS changes or No GNS Setup), here is how to do that.

If you would like to Install Oracle 11g R2 RAC without SCAN setup in DNS, you would need to create an entry in /etc/hosts for the scan name to point to a different IP address (other than Public IP, Private IP, and VIP addresses) and supply this name for SCAN Prompts during the installation. Make sure that you pick the new IP address in the same subnet as that of VIP addresses and that it is not currently in use.

[root@rac1 ~]# cat /etc/hosts# Do not remove the following line, or various programs# that require network functionality will fail.127.0.0.1               localhost.localdomain localhost# Public192.168.1.10   rac1.freeoraclehelp.com     rac1192.168.1.20   rac2.freeoraclehelp.com     rac2#Private192.168.2.10   rac1-priv.freeoraclehelp.com  rac1-priv192.168.2.20   rac2-priv.freeoraclehelp.com  rac2-priv#Virtual192.168.1.11   rac1-vip.freeoraclehelp.com   rac1-vip192.168.1.22   rac2-vip.freeoraclehelp.com   rac2-vip#SCAN Entry192.168.1.25   scan.freeoraclehelp.com   scan[root@rac1 ~]#

This would let you proceed with the installation, however would hit the following error in Cluster Verify Utility, which runs after the installation is complete. Of course, you can ignore this error safely if you’re using SCAN entry from hosts file.

INFO: PRVF-4664 : Found inconsistent name resolution entries for SCAN name "scan.freeoraclehelp.com"INFO: ERROR:INFO: PRVF-4657 : Name resolution setup check for "scanclunm" (IP address: 192.168.1.25) failedINFO: ERROR:INFO: PRVF-4664 : Found inconsistent name resolution entries for SCAN name "scan.freeoraclehelp.com"

How to move SCAN from DNS to /etc/hosts?

After the installation of the cluster with DNS SCAN name, If you need to switch from DNS SCAN name to local /etc/hosts entry SCAN Name, here are steps. Of course, you cannot have multiple IP addresses in hosts file. So, it would be resolved to only one IP address in this method.

1. Stop the SCAN: Source Grid home, srvctl stop scan_listener, and srvctl stop scan then.

[grid@rac1 ~]$srvctl stop scanPRCR-1065 : Failed to stop resource ora.scan1.vipCRS-2529: Unable to act on 'ora.scan1.vip' because that would require stopping or relocating 'ora.LISTENER_SCAN1.lsnr', but the force option was not specifiedPRCR-1065 : Failed to stop resource ora.scan2.vipCRS-2529: Unable to act on 'ora.scan2.vip' because that would require stopping or relocating 'ora.LISTENER_SCAN2.lsnr', but the force option was not specifiedPRCR-1065 : Failed to stop resource ora.scan3.vipCRS-2529: Unable to act on 'ora.scan3.vip' because that would require stopping or relocating 'ora.LISTENER_SCAN3.lsnr', but the force option was not specified

Stop the scan_listener first and then stop scan resource

[grid@rac1 ~]$srvctl stop scan_listener[grid@rac1 ~]$srvctl stop scan[grid@rac1 ~]$ps -ef|grep tnsloracle    6892     1  0 13:11 ?        00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER -inheritoracle    6940     1  0 13:11 ?        00:00:00 /oracle/product/10.2.0/rdbms/bin/tnslsnr OID_RAC1 -inherit[grid@rac1 ~]$

2. Add an entry in /etc/hosts file for SCAN name:

[root@rac2 ~]# nslookup scan.freeoraclehelp.comServer:         192.168.1.20Address:        192.168.1.20#53Name:   scan.freeoraclehelp.comAddress: 192.168.1.25Name:   scan.freeoraclehelp.comAddress: 192.168.1.23Name:   scan.freeoraclehelp.comAddress: 192.168.1.24[root@rac2 ~]# vi /etc/resolv.conf #nameserver 192.168.1.20  # Second RAC Nodenameserver 192.168.1.1   # Primary DNS in the domainsearch freeoraclehelp.com # Local Domain[root@rac1 ~]# vi /etc/resolv.conf #nameserver 192.168.1.20  # Second RAC Nodenameserver 192.168.1.1   # Primary DNS in the domainsearch freeoraclehelp.com # Local Domain[root@rac2 ~]# cat /etc/hosts# Do not remove the following line, or various programs# that require network functionality will fail.127.0.0.1       localhost.localdomain   localhost# Public192.168.1.10   rac1.freeoraclehelp.com     rac1192.168.1.20   rac2.freeoraclehelp.com     rac2#Private192.168.2.10   rac1-priv.freeoraclehelp.com  rac1-priv192.168.2.20   rac2-priv.freeoraclehelp.com  rac2-priv#Virtual192.168.1.11   rac1-vip.freeoraclehelp.com   rac1-vip192.168.1.22   rac2-vip.freeoraclehelp.com   rac2-vip#SCAN Entry192.168.1.25   scan.freeoraclehelp.com   scan[root@rac2 ~]# [root@rac1 ~]# cat /etc/hosts# Do not remove the following line, or various programs# that require network functionality will fail.127.0.0.1               localhost.localdomain localhost# Public192.168.1.10   rac1.freeoraclehelp.com     rac1192.168.1.20   rac2.freeoraclehelp.com     rac2#Private192.168.2.10   rac1-priv.freeoraclehelp.com  rac1-priv192.168.2.20   rac2-priv.freeoraclehelp.com  rac2-priv#Virtual192.168.1.11   rac1-vip.freeoraclehelp.com   rac1-vip192.168.1.22   rac2-vip.freeoraclehelp.com   rac2-vip#SCAN Entry192.168.1.25   scan.freeoraclehelp.com   scan[root@rac1 ~]# [root@rac1 ~]# nslookup scan.freeoraclehelp.comServer:         192.168.1.1Address:        192.168.1.1#53** server can't find scan.freeoraclehelp.com: NXDOMAIN[root@rac1 ~]# ping scan.freeoraclehelp.comPING scan.freeoraclehelp.com (192.168.1.25) 56(84) bytes of data.From rac1.freeoraclehelp.com (192.168.1.10) icmp_seq=0 Destination Host UnreachableFrom rac1.freeoraclehelp.com (192.168.1.10) icmp_seq=1 Destination Host UnreachableFrom rac1.freeoraclehelp.com (192.168.1.10) icmp_seq=2 Destination Host Unreachable--- scan.freeoraclehelp.com ping statistics ---4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3027ms, pipe 4[root@rac1 ~]# [root@rac2 ~]#  nslookup scan.freeoraclehelp.comServer:         192.168.1.1Address:        192.168.1.1#53** server can't find scan.freeoraclehelp.com: NXDOMAIN[root@rac2 ~]# ping scan.freeoraclehelp.comPING scan.freeoraclehelp.com (192.168.1.25) 56(84) bytes of data.From rac2.freeoraclehelp.com (192.168.1.20) icmp_seq=0 Destination Host UnreachableFrom rac2.freeoraclehelp.com (192.168.1.20) icmp_seq=1 Destination Host UnreachableFrom rac2.freeoraclehelp.com (192.168.1.20) icmp_seq=2 Destination Host Unreachable--- scan.freeoraclehelp.com ping statistics ---11 packets transmitted, 0 received, +9 errors, 100% packet loss, time 10071ms, pipe 4[root@rac2 ~]#

3. Configure the Cluster to take the new VIPs 

As root user on one of the cluster nodes (not needed on both the nodes):

[root@rac1 ~]# /oracle/product/11.2.0/11.2.0/grid/bin/srvctl modify scan -n scan.freeoraclehelp.com

As grid user on one of the cluster nodes (not needed on both the nodes):

[grid@rac1 ~]$ srvctl modify scan_listener -u[grid@rac1 ~]$ srvctl start scan_listener

Verify that only one SCAN Listener is started and IP is right. 

[grid@rac1 ~]$ps -ef|grep tnsloracle    7961     1  0 15:44 ?        00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER -inheritoracle    9148  4994  0 16:10 pts/2    00:00:00 grep tnsl[grid@rac1 ~]$[grid@rac2 ~]$ps -ef|grep tnsloracle    9014     1  0 15:52 ?        00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER -inheritoracle    9451     1  0 16:10 ?        00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inheritoracle    9463  7372  0 16:10 pts/1    00:00:00 grep tnsl[grid@rac2 ~]$lsnrctl status LISTENER_SCAN1LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 16:10:39Copyright (c) 1991, 2010, Oracle.  All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))STATUS of the LISTENER------------------------Alias                     LISTENER_SCAN1Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - ProductionStart Date                15-DEC-2011 16:10:14Uptime                    0 days 0 hr. 0 min. 25 secTrace Level               offSecurity                  ON: Local OS AuthenticationSNMP                      OFFListener Parameter File   /oracle/product/11.2.0/11.2.0/grid/network/admin/listener.oraListener Log File         /oracle/product/11.2.0/11.2.0/grid/log/diag/tnslsnr/rac2/listener_scan1/alert/log.xmlListening Endpoints Summary...  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.25)(PORT=1521)))The listener supports no servicesThe command completed successfully[grid@rac2 ~]$[grid@rac1 ~]$srvctl config scanSCAN name: scan.freeoraclehelp.com, Network: 1/192.168.1.0/255.255.255.0/eth0SCAN VIP name: scan1, IP: /scan.freeoraclehelp.com/192.168.1.25[grid@rac1 ~]$srvctl config scan_listenerSCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521[grid@rac1 ~]$

How to move SCAN from /etc/hosts to DNS?

After the installation of the cluster with SCAN with one IP address in /etc/hosts, If you need to switch to DNS SCAN, here are steps.

1. Stop the SCAN: Source Grid home, srvctl stop scan_listener, and srvctl stop scan then.

[grid@rac1 ~]$srvctl stop scan_listener[grid@rac1 ~]$srvctl stop scan

2. Remove/comment the entry in /etc/hosts file for SCAN and setup a DNS name with multiple A (three A records), if it is not already setup. I have the SCAN setup in a DNS server that runs on the second cluster node. I just have to use it (in resolv.conf). For more information about DNS Setup, refer to 

[root@rac1 ~]# cat /etc/hosts# Do not remove the following line, or various programs# that require network functionality will fail.127.0.0.1               localhost.localdomain localhost# Public192.168.1.10   rac1.freeoraclehelp.com     rac1192.168.1.20   rac2.freeoraclehelp.com     rac2#Private192.168.2.10   rac1-priv.freeoraclehelp.com  rac1-priv192.168.2.20   rac2-priv.freeoraclehelp.com  rac2-priv#Virtual192.168.1.11   rac1-vip.freeoraclehelp.com   rac1-vip192.168.1.22   rac2-vip.freeoraclehelp.com   rac2-vip#SCAN Entry#192.168.1.25   scan.freeoraclehelp.com   scan[root@rac1 ~]# [root@rac2 ~]# cat /etc/hosts# Do not remove the following line, or various programs# that require network functionality will fail.127.0.0.1       localhost.localdomain   localhost# Public192.168.1.10   rac1.freeoraclehelp.com     rac1192.168.1.20   rac2.freeoraclehelp.com     rac2#Private192.168.2.10   rac1-priv.freeoraclehelp.com  rac1-priv192.168.2.20   rac2-priv.freeoraclehelp.com  rac2-priv#Virtual192.168.1.11   rac1-vip.freeoraclehelp.com   rac1-vip192.168.1.22   rac2-vip.freeoraclehelp.com   rac2-vip#SCAN Entry#192.168.1.25   scan.freeoraclehelp.com   scan[root@rac2 ~]# [root@rac2 ~]# vi /etc/resolv.conf nameserver 192.168.1.20  # Second RAC Nodenameserver 192.168.1.1   # Primary DNS in the domainsearch freeoraclehelp.com # Local Domain[root@rac1 ~]# vi /etc/resolv.conf nameserver 192.168.1.20  # Second RAC Nodenameserver 192.168.1.1   # Primary DNS in the domainsearch freeoraclehelp.com # Local Domain[root@rac2 ~]# nslookup scan.freeoraclehelp.comServer:         192.168.1.20Address:        192.168.1.20#53Name:   scan.freeoraclehelp.comAddress: 192.168.1.25Name:   scan.freeoraclehelp.comAddress: 192.168.1.23Name:   scan.freeoraclehelp.comAddress: 192.168.1.24

3. Configure the Cluster to take the new VIPs 

As root user on one of the cluster nodes (not needed on both the nodes):

[root@rac1 ~]# /oracle/product/11.2.0/11.2.0/grid/bin/srvctl modify scan -n scan.freeoraclehelp.com

As grid user on one of the cluster nodes (not needed on both the nodes):

[grid@rac1 ~]$ srvctl modify scan_listener -u[grid@rac1 ~]$ srvctl start scan_listener

Verify that configuration is right and three SCAN listeners are started. 

[grid@rac1 ~]$srvctl config scanSCAN name: scan.freeoraclehelp.com, Network: 1/192.168.1.0/255.255.255.0/eth0SCAN VIP name: scan1, IP: /scan.freeoraclehelp.com/192.168.1.25SCAN VIP name: scan2, IP: /scan.freeoraclehelp.com/192.168.1.23SCAN VIP name: scan3, IP: /scan.freeoraclehelp.com/192.168.1.24[grid@rac1 ~]$srvctl config scan_listenerSCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521SCAN Listener LISTENER_SCAN2 exists. Port: TCP:1521SCAN Listener LISTENER_SCAN3 exists. Port: TCP:1521[grid@rac1 ~]$ps -ef|grep tnsloracle    6873     1  0 13:11 ?        00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inheritoracle    6892     1  0 13:11 ?        00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER -inherit[grid@rac1 ~]$[grid@rac1 ~]$lsnrctl status LISTENER_SCAN1LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 15:13:48Copyright (c) 1991, 2010, Oracle.  All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))STATUS of the LISTENER------------------------Alias                     LISTENER_SCAN1Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - ProductionStart Date                15-DEC-2011 13:11:15Uptime                    0 days 2 hr. 2 min. 33 secTrace Level               offSecurity                  ON: Local OS AuthenticationSNMP                      OFFListener Parameter File   /oracle/product/11.2.0/11.2.0/grid/network/admin/listener.oraListener Log File         /oracle/product/11.2.0/11.2.0/grid/log/diag/tnslsnr/rac1/listener_scan1/alert/log.xmlListening Endpoints Summary...  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.25)(PORT=1521)))Services Summary...Service "oid.freeoraclehelp.com" has 2 instance(s).  Instance "oid1", status READY, has 1 handler(s) for this service...  Instance "oid2", status READY, has 1 handler(s) for this service...The command completed successfully[grid@rac1 ~]$[grid@rac2 ~]$ ps -ef|grep tnsloracle    5830     1  0 12:38 ?        00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER_SCAN3 -inheritoracle    5833     1  0 12:38 ?        00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER_SCAN2 -inheritoracle    5836     1  0 12:38 ?        00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER -inheritoracle    7423  7372  0 15:14 pts/1    00:00:00 grep tnsl[grid@rac2 ~]$[grid@rac2 ~]$ lsnrctl status LISTENER_SCAN2LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 15:14:04Copyright (c) 1991, 2010, Oracle.  All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2)))STATUS of the LISTENER------------------------Alias                     LISTENER_SCAN2Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - ProductionStart Date                15-DEC-2011 12:38:45Uptime                    0 days 2 hr. 35 min. 19 secTrace Level               offSecurity                  ON: Local OS AuthenticationSNMP                      OFFListener Parameter File   /oracle/product/11.2.0/11.2.0/grid/network/admin/listener.oraListener Log File         /oracle/product/11.2.0/11.2.0/grid/log/diag/tnslsnr/rac2/listener_scan2/alert/log.xmlListening Endpoints Summary...  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN2)))  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.23)(PORT=1521)))Services Summary...Service "oid.freeoraclehelp.com" has 2 instance(s).  Instance "oid1", status READY, has 1 handler(s) for this service...  Instance "oid2", status READY, has 1 handler(s) for this service...The command completed successfully[grid@rac2 ~]$ lsnrctl status LISTENER_SCAN3LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 15:14:06Copyright (c) 1991, 2010, Oracle.  All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN3)))STATUS of the LISTENER------------------------Alias                     LISTENER_SCAN3Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - ProductionStart Date                15-DEC-2011 12:38:45Uptime                    0 days 2 hr. 35 min. 21 secTrace Level               offSecurity                  ON: Local OS AuthenticationSNMP                      OFFListener Parameter File   /oracle/product/11.2.0/11.2.0/grid/network/admin/listener.oraListener Log File         /oracle/product/11.2.0/11.2.0/grid/log/diag/tnslsnr/rac2/listener_scan3/alert/log.xmlListening Endpoints Summary...  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN3)))  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.24)(PORT=1521)))Services Summary...Service "oid.freeoraclehelp.com" has 2 instance(s).  Instance "oid1", status READY, has 1 handler(s) for this service...  Instance "oid2", status READY, has 1 handler(s) for this service...The command completed successfully[grid@rac2 ~]$

How to rename SCAN in Cluster?

After the installation of the Oracle 11g R2 cluster with SCAN, If you need to change the scan name from scan.freeoraclehelp.com to newscan.freeoraclehelp.com, here is how.

1. Stop the SCAN: Source Grid home, srvctl stop scan_listener, and srvctl stop scan then.

[grid@rac1 ~]$ srvctl stop scan_listener[grid@rac1 ~]$ srvctl stop scan

2.  Configure the new SCAN in your DNS, or /etc/hosts, or GNS and make sure that lookups are working for the new name.

[root@rac2 ~]# nslookup newscan.freeoraclehelp.comServer:         192.168.1.20Address:        192.168.1.20#53Name:   newscan.freeoraclehelp.comAddress: 192.168.1.32Name:   newscan.freeoraclehelp.comAddress: 192.168.1.33Name:   newscan.freeoraclehelp.comAddress: 192.168.1.34[root@rac2 ~]#

3. Configure the Cluster to take the new VIPs 

As root user on one of the cluster nodes (not needed on both the nodes):

[root@rac1 ~]# /oracle/product/11.2.0/11.2.0/grid/bin/srvctl modify scan -n newscan.freeoraclehelp.com[root@rac1 ~]#

As grid user on one of the cluster nodes (not needed on both the nodes):

[grid@rac1 ~]$ srvctl modify scan_listener -u[grid@rac1 ~]$ srvctl start scan_listener

Verify that configuration is right and three SCAN listeners are started. 

[grid@rac1 ~]$ srvctl config scanSCAN name: newscan.freeoraclehelp.com, Network: 1/192.168.1.0/255.255.255.0/eth0SCAN VIP name: scan1, IP: /newscan.freeoraclehelp.com/192.168.1.34SCAN VIP name: scan2, IP: /newscan.freeoraclehelp.com/192.168.1.33SCAN VIP name: scan3, IP: /newscan.freeoraclehelp.com/192.168.1.32[grid@rac1 ~]$ srvctl config scan_listenerSCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521SCAN Listener LISTENER_SCAN2 exists. Port: TCP:1521SCAN Listener LISTENER_SCAN3 exists. Port: TCP:1521[grid@rac1 ~]$

How to rename SCAN Port in Cluster?

As grid user, source the grid environment to make sure $GRID_HOME/bin is in PATH and

1. Modify SCAN listener port:
[oid1@rac1 ~]$ srvctl modify scan_listener -p 1522
2. Restart SCAN listener so the new port will be effective:
[oid1@rac1 ~]$ srvctl stop scan_listener[oid1@rac1 ~]$ srvctl start scan_listener
3. Confirm the change:
[oid1@rac1 ~]$ srvctl config scan_listenerSCAN Listener LISTENER_SCAN1 exists. Port: TCP:1522SCAN Listener LISTENER_SCAN2 exists. Port: TCP:1522SCAN Listener LISTENER_SCAN3 exists. Port: TCP:1522[oid1@rac1 ~]$

转载地址:http://qcsei.baihongyu.com/

你可能感兴趣的文章
STL中的Sort
查看>>
LeetCode---3.TreeEasy
查看>>
基于比较的排序算法的最优下界---NlogN
查看>>
Paxos协议学习---2.由3大条件证明一致性
查看>>
Paxos协议学习---3.Paxos Made Simple
查看>>
C/C++输入输出
查看>>
泸州NGN属南气矿工程----华为s2600磁盘阵列问题解决
查看>>
泸州属南气矿----配置S2600磁盘阵列报错:There is no master controller.
查看>>
SQL 调优1
查看>>
OA报账规范(出差专用)
查看>>
生产库快速关闭数据库
查看>>
差异增量备份和累积增量备份的差别
查看>>
ASM 无法发现候选磁盘组----grid 11.2.0.3 asm 自检通不过 prvf-5184
查看>>
ASM 无法发现候选磁盘组----丢失的ASM磁盘组 ASM的磁盘组无法挂载
查看>>
Oracle 10g配置单向stream流复制,完整记录
查看>>
ORA-00845 MEMORY_TARGET not supported on this system
查看>>
ORA-00257: archiver error --11GR2 RAC 设置归档路径和开启flashback
查看>>
奕新集团项目--Oracle 源RAC ---目标 RAC GG 搭建 11.2.3 版本 双向同步
查看>>
What is SCAN in Oracle 11g R2 RAC
查看>>
关于Recycle Bin是什么以及实验
查看>>