SCAN Setup for Oracle 11g Release2(11gR2) RAC
implementation
Single
client access name (SCAN) is introduced in Oracle 11g R2 Cluster Ready
Software(CRS) to simplify the database connection strings that an Oracle Client
uses to connect to an Oracle Cluster Database. I have received a few emails
about SCAN setup issues and I have promised that I would come up with an
article addressing the following questions:
- What is SCAN in Oracle 11g R2 RAC?
- How does SCAN work ?
- How to setup DNS for Oracle 11g R2 SCAN?
- How to setup GNS for Oracle 11g R2 SCAN?
- How to install Oracle 11g R2 RAC without SCAN Setup in DNS or GNS?
- How to move SCAN from DNS to /etc/hosts?
- How to move SCAN from /etc/hosts to DNS?
- How to rename SCAN in Cluster?
- How to rename SCAN Port in Cluster?
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 oiddb
TNS
Ping Utility for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 14:21:18
Copyright
(c) 1997, 2010, Oracle. All rights
reserved.
Used
parameter files:
Used
TNSNAMES adapter to resolve the alias
Attempting
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@oiddb
SQL*Plus:
Release 11.2.0.2.0 Production on Thu Dec 15 14:21:32 2011
Copyright
(c) 1982, 2010, Oracle. All rights
reserved.
Enter
password:
Connected
to:
Oracle
Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With
the Partitioning, Real Application Clusters, Automatic Storage Management,
OLAP,
Data
Mining and Real Application Testing options
SQL>
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))
....
....
(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)
)
)
(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.ora
OIDDB
=
(DESCRIPTION
=
(ADDRESS = (PROTOCOL =
TCP)(HOST = scan.freeoraclehelp.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oid.freeoraclehelp.com)
)
)
[oid1@rac1
admin]$tnsping oiddb
TNS
Ping Utility for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 14:37:16
Copyright
(c) 1997, 2010, Oracle. All rights
reserved.
Used
parameter files:
Used
TNSNAMES adapter to resolve the alias
Attempting
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@OIDDB
SQL*Plus:
Release 11.2.0.2.0 Production on Thu Dec 15 14:37:28 2011
Copyright
(c) 1982, 2010, Oracle. All rights
reserved.
Enter
password:
Connected
to:
Oracle
Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With
the Partitioning, Real Application Clusters, Automatic Storage Management,
OLAP,
Data
Mining and Real Application Testing options
SQL>
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) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("192.168.1.20")}, 28) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("192.168.1.20")}, 28) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("192.168.1.20")}, 28) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("192.168.1.20")}, 28) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("192.168.1.20")}, 28) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("192.168.1.20")}, 28) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(1521), sin_addr=inet_addr("192.168.1.23")},
16) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(1521),
sin_addr=inet_addr("192.168.1.24")}, 16) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(1521),
sin_addr=inet_addr("192.168.1.25")}, 16) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("192.168.1.20")}, 28) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("192.168.1.20")}, 28) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.20")},
28) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("192.168.1.20")}, 28) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("192.168.1.20")}, 28) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("192.168.1.20")}, 28) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(0),
sin_addr=inet_addr("192.168.1.24")}, 16) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("192.168.1.25")},
16) = 0
connect(9,
{sa_family=AF_INET, sin_port=htons(0),
sin_addr=inet_addr("192.168.1.23")}, 16) = 0
connect(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.11
Server: 192.168.1.20
Address: 192.168.1.20#53
11.1.168.192.in-addr.arpa name = rac1-vip.freeoraclehelp.com.
[oid1@rac1
~]$ nslookup 192.168.1.25
Server: 192.168.1.20
Address: 192.168.1.20#53
25.1.168.192.in-addr.arpa name = scan.freeoraclehelp.com.
[oid1@rac1
~]$ nslookup scan.freeoraclehelp.com
Server: 192.168.1.20
Address: 192.168.1.20#53
Name: scan.freeoraclehelp.com
Address:
192.168.1.25
Name: scan.freeoraclehelp.com
Address:
192.168.1.23
Name: scan.freeoraclehelp.com
Address:
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:
- 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.
- Oracle client connects using SCAN name: myscan:1521/sales.example.com
- Client queries DNS to resolve scan_name.
- SCAN listener selects least loaded node (node in this example)
- The client connects to the local listener on node2. The local listener starts a dedicated server process for the connection to the database.
- The client connects directly to the dedicated server process on node2 and accesses the sales2 database instance.
SQL>
show parameter local_listener
NAME TYPE VALUE
-------------------- ---------
---------
local_listener string
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
(HOST=192.168.1.11)(PORT=1521))))
SQL>
show parameter remote_listener
NAME
TYPE VALUE
-------------------- ---------
---------
remote_listener string scan.freeoraclehelp.com:1521
SQL>
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 scan
SCAN
name: scan.freeoraclehelp.com, Network: 1/192.168.1.0/255.255.255.0/eth0
SCAN
VIP name: scan1, IP: /scan.freeoraclehelp.com/192.168.1.25
SCAN
VIP name: scan2, IP: /scan.freeoraclehelp.com/192.168.1.23
SCAN
VIP name: scan3, IP: /scan.freeoraclehelp.com/192.168.1.24
[grid@rac1
~]$srvctl config scan_listener
SCAN
Listener LISTENER_SCAN1 exists. Port: TCP:1521
SCAN
Listener LISTENER_SCAN2 exists. Port: TCP:1521
SCAN
Listener LISTENER_SCAN3 exists. Port: TCP:1521
[grid@rac1
~]$crsctl stat res -w "TYPE = ora.scan_listener.type"
NAME=ora.LISTENER_SCAN1.lsnr
TYPE=ora.scan_listener.type
TARGET=ONLINE
STATE=ONLINE
on rac1
NAME=ora.LISTENER_SCAN2.lsnr
TYPE=ora.scan_listener.type
TARGET=ONLINE
STATE=ONLINE
on rac2
NAME=ora.LISTENER_SCAN3.lsnr
TYPE=ora.scan_listener.type
TARGET=ONLINE
STATE=ONLINE
on rac2
[grid@rac1
~]$
[grid@rac1 ~]$ps -ef|grep tnsl
oracle 6873 1 0
13:11 ? 00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr
LISTENER_SCAN1 -inherit
oracle 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_SCAN1
LSNRCTL
for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 15:13:48
Copyright
(c) 1991, 2010, Oracle. All rights
reserved.
Connecting
to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
STATUS
of the LISTENER
------------------------
Alias LISTENER_SCAN1
Version TNSLSNR for Linux: Version
11.2.0.2.0 - Production
Start
Date 15-DEC-2011 13:11:15
Uptime 0 days 2 hr. 2 min. 33 sec
Trace
Level off
Security ON: Local OS Authentication
SNMP OFF
Listener
Parameter File
/oracle/product/11.2.0/11.2.0/grid/network/admin/listener.ora
Listener
Log File
/oracle/product/11.2.0/11.2.0/grid/log/diag/tnslsnr/rac1/listener_scan1/alert/log.xml
Listening
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 tnsl
oracle 5830 1 0
12:38 ? 00:00:00
/oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER_SCAN3 -inherit
oracle 5833 1 0
12:38 ? 00:00:00
/oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER_SCAN2 -inherit
oracle 5836 1 0
12:38 ? 00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr
LISTENER -inherit
oracle 7423 7372 0
15:14 pts/1 00:00:00 grep tnsl
[grid@rac2 ~]$
[grid@rac2
~]$lsnrctl status LISTENER_SCAN2
LSNRCTL
for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 15:14:04
Copyright
(c) 1991, 2010, Oracle. All rights
reserved.
Connecting
to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2)))
STATUS
of the LISTENER
------------------------
Alias LISTENER_SCAN2
Version TNSLSNR for Linux: Version
11.2.0.2.0 - Production
Start
Date 15-DEC-2011 12:38:45
Uptime 0 days 2 hr. 35 min. 19 sec
Trace
Level off
Security ON: Local OS Authentication
SNMP OFF
Listener
Parameter File
/oracle/product/11.2.0/11.2.0/grid/network/admin/listener.ora
Listener
Log File
/oracle/product/11.2.0/11.2.0/grid/log/diag/tnslsnr/rac2/listener_scan2/alert/log.xml
Listening
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_SCAN3
LSNRCTL
for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 15:14:06
Copyright
(c) 1991, 2010, Oracle. All rights
reserved.
Connecting
to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN3)))
STATUS
of the LISTENER
------------------------
Alias LISTENER_SCAN3
Version TNSLSNR for Linux: Version
11.2.0.2.0 - Production
Start
Date 15-DEC-2011 12:38:45
Uptime 0 days 2 hr. 35 min. 21 sec
Trace
Level off
Security ON: Local OS Authentication
SNMP OFF
Listener
Parameter File /oracle/product/11.2.0/11.2.0/grid/network/admin/listener.ora
Listener
Log File
/oracle/product/11.2.0/11.2.0/grid/log/diag/tnslsnr/rac2/listener_scan3/alert/log.xml
Listening
Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN3)))
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. Oracle 11gR2 RAC SCAN - DNS (bind) Configuration on Linux 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.com
Server: 192.168.1.20
Address: 192.168.1.20#53
Name: scan.freeoraclehelp.com
Address:
192.168.1.25
Name: scan.freeoraclehelp.com
Address:
192.168.1.23
Name: scan.freeoraclehelp.com
Address:
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 Servers
grid.freeoraclehelp.com
NS gnsvip.freeoraclehelp.com
#
Address Record for the GNS VIP
gnsvip.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.
Oracle
11gR2 RAC Installation with GNS, without SCAN 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
#
Public
192.168.1.10 rac1.freeoraclehelp.com rac1
192.168.1.20 rac2.freeoraclehelp.com rac2
#Private
192.168.2.10 rac1-priv.freeoraclehelp.com rac1-priv
192.168.2.20 rac2-priv.freeoraclehelp.com rac2-priv
#Virtual
192.168.1.11 rac1-vip.freeoraclehelp.com rac1-vip
192.168.1.22 rac2-vip.freeoraclehelp.com rac2-vip
#SCAN
Entry
192.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) failed
INFO:
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 scan
PRCR-1065
: Failed to stop resource ora.scan1.vip
CRS-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 specified
PRCR-1065
: Failed to stop resource ora.scan2.vip
CRS-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 specified
PRCR-1065
: Failed to stop resource ora.scan3.vip
CRS-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 tnsl
oracle 6892
1 0 13:11 ? 00:00:00
/oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER -inherit
oracle 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.com
Server: 192.168.1.20
Address: 192.168.1.20#53
Name: scan.freeoraclehelp.com
Address:
192.168.1.25
Name: scan.freeoraclehelp.com
Address:
192.168.1.23
Name: scan.freeoraclehelp.com
Address:
192.168.1.24
[root@rac2
~]# vi /etc/resolv.conf
#nameserver
192.168.1.20 # Second RAC Node
nameserver
192.168.1.1 # Primary DNS in the domain
search
freeoraclehelp.com # Local Domain
[root@rac1
~]# vi /etc/resolv.conf
#nameserver
192.168.1.20 # Second RAC Node
nameserver
192.168.1.1 # Primary DNS in the domain
search
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
#
Public
192.168.1.10 rac1.freeoraclehelp.com rac1
192.168.1.20 rac2.freeoraclehelp.com rac2
#Private
192.168.2.10 rac1-priv.freeoraclehelp.com rac1-priv
192.168.2.20 rac2-priv.freeoraclehelp.com rac2-priv
#Virtual
192.168.1.11 rac1-vip.freeoraclehelp.com rac1-vip
192.168.1.22 rac2-vip.freeoraclehelp.com rac2-vip
#SCAN
Entry
192.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
#
Public
192.168.1.10 rac1.freeoraclehelp.com rac1
192.168.1.20 rac2.freeoraclehelp.com rac2
#Private
192.168.2.10 rac1-priv.freeoraclehelp.com rac1-priv
192.168.2.20 rac2-priv.freeoraclehelp.com rac2-priv
#Virtual
192.168.1.11 rac1-vip.freeoraclehelp.com rac1-vip
192.168.1.22 rac2-vip.freeoraclehelp.com rac2-vip
#SCAN
Entry
192.168.1.25
scan.freeoraclehelp.com scan
[root@rac1
~]#
[root@rac1
~]# nslookup scan.freeoraclehelp.com
Server: 192.168.1.1
Address: 192.168.1.1#53
** server can't find scan.freeoraclehelp.com: NXDOMAIN
[root@rac1
~]# ping scan.freeoraclehelp.com
PING
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 Unreachable
From
rac1.freeoraclehelp.com (192.168.1.10) icmp_seq=1 Destination Host Unreachable
From
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.com
Server: 192.168.1.1
Address: 192.168.1.1#53
** server can't find scan.freeoraclehelp.com: NXDOMAIN
[root@rac2
~]# ping scan.freeoraclehelp.com
PING
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 Unreachable
From
rac2.freeoraclehelp.com (192.168.1.20) icmp_seq=1 Destination Host Unreachable
From
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):
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 tnsl
oracle 7961
1 0 15:44 ? 00:00:00
/oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER -inherit
oracle 9148
4994 0 16:10 pts/2 00:00:00 grep tnsl
[grid@rac1
~]$
[grid@rac2
~]$ps -ef|grep tnsl
oracle 9014
1 0 15:52 ? 00:00:00
/oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER -inherit
oracle 9451
1 0 16:10 ? 00:00:00
/oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
oracle 9463
7372 0 16:10 pts/1 00:00:00 grep tnsl
[grid@rac2
~]$lsnrctl status LISTENER_SCAN1
LSNRCTL
for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 16:10:39
Copyright
(c) 1991, 2010, Oracle. All rights
reserved.
Connecting
to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
STATUS
of the LISTENER
------------------------
Alias LISTENER_SCAN1
Version TNSLSNR for Linux: Version
11.2.0.2.0 - Production
Start
Date 15-DEC-2011 16:10:14
Uptime 0 days 0 hr. 0 min. 25 sec
Trace
Level off
Security ON: Local OS Authentication
SNMP OFF
Listener
Parameter File
/oracle/product/11.2.0/11.2.0/grid/network/admin/listener.ora
Listener
Log File
/oracle/product/11.2.0/11.2.0/grid/log/diag/tnslsnr/rac2/listener_scan1/alert/log.xml
Listening
Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.25)(PORT=1521)))
The
listener supports no services
The
command completed successfully
[grid@rac2
~]$
[grid@rac1 ~]$srvctl config scan
SCAN name: scan.freeoraclehelp.com, Network:
1/192.168.1.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /scan.freeoraclehelp.com/192.168.1.25
[grid@rac1 ~]$srvctl config scan_listener
SCAN 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 How
to setup DNS for Oracle 11g R2 SCAN?
[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
#
Public
192.168.1.10 rac1.freeoraclehelp.com rac1
192.168.1.20 rac2.freeoraclehelp.com rac2
#Private
192.168.2.10 rac1-priv.freeoraclehelp.com rac1-priv
192.168.2.20 rac2-priv.freeoraclehelp.com rac2-priv
#Virtual
192.168.1.11 rac1-vip.freeoraclehelp.com rac1-vip
192.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
#
Public
192.168.1.10 rac1.freeoraclehelp.com rac1
192.168.1.20 rac2.freeoraclehelp.com rac2
#Private
192.168.2.10 rac1-priv.freeoraclehelp.com rac1-priv
192.168.2.20 rac2-priv.freeoraclehelp.com rac2-priv
#Virtual
192.168.1.11 rac1-vip.freeoraclehelp.com rac1-vip
192.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 Node
nameserver
192.168.1.1 # Primary DNS in the domain
search
freeoraclehelp.com # Local Domain
[root@rac1
~]# vi /etc/resolv.conf
nameserver
192.168.1.20 # Second RAC Node
nameserver
192.168.1.1 # Primary DNS in the domain
search
freeoraclehelp.com # Local Domain
[root@rac2 ~]# nslookup scan.freeoraclehelp.com
Server: 192.168.1.20
Address:
192.168.1.20#53
Name:
scan.freeoraclehelp.com
Address: 192.168.1.25
Name:
scan.freeoraclehelp.com
Address: 192.168.1.23
Name:
scan.freeoraclehelp.com
Address: 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 scan
SCAN name: scan.freeoraclehelp.com,
Network: 1/192.168.1.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /scan.freeoraclehelp.com/192.168.1.25
SCAN VIP name: scan2, IP: /scan.freeoraclehelp.com/192.168.1.23
SCAN VIP name: scan3, IP: /scan.freeoraclehelp.com/192.168.1.24
[grid@rac1
~]$srvctl config scan_listener
SCAN
Listener LISTENER_SCAN1 exists. Port: TCP:1521
SCAN
Listener LISTENER_SCAN2 exists. Port: TCP:1521
SCAN
Listener LISTENER_SCAN3 exists. Port: TCP:1521
[grid@rac1
~]$ps -ef|grep tnsl
oracle 6873
1 0 13:11 ? 00:00:00
/oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
oracle 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_SCAN1
LSNRCTL
for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 15:13:48
Copyright
(c) 1991, 2010, Oracle. All rights
reserved.
Connecting
to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
STATUS
of the LISTENER
------------------------
Alias LISTENER_SCAN1
Version TNSLSNR for Linux: Version
11.2.0.2.0 - Production
Start
Date 15-DEC-2011 13:11:15
Uptime 0 days 2 hr. 2 min. 33 sec
Trace
Level off
Security ON: Local OS Authentication
SNMP OFF
Listener
Parameter File
/oracle/product/11.2.0/11.2.0/grid/network/admin/listener.ora
Listener
Log File
/oracle/product/11.2.0/11.2.0/grid/log/diag/tnslsnr/rac1/listener_scan1/alert/log.xml
Listening
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 tnsl
oracle 5830
1 0 12:38 ? 00:00:00
/oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER_SCAN3 -inherit
oracle 5833
1 0 12:38 ? 00:00:00
/oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr LISTENER_SCAN2 -inherit
oracle 5836
1 0 12:38 ? 00:00:00 /oracle/product/11.2.0/11.2.0/grid/bin/tnslsnr
LISTENER -inherit
oracle 7423
7372 0 15:14 pts/1 00:00:00 grep tnsl
[grid@rac2
~]$
[grid@rac2
~]$ lsnrctl status LISTENER_SCAN2
LSNRCTL
for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 15:14:04
Copyright
(c) 1991, 2010, Oracle. All rights
reserved.
Connecting
to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2)))
STATUS
of the LISTENER
------------------------
Alias LISTENER_SCAN2
Version TNSLSNR for Linux: Version
11.2.0.2.0 - Production
Start
Date 15-DEC-2011 12:38:45
Uptime 0 days 2 hr. 35 min. 19 sec
Trace
Level off
Security ON: Local OS Authentication
SNMP OFF
Listener
Parameter File
/oracle/product/11.2.0/11.2.0/grid/network/admin/listener.ora
Listener
Log File
/oracle/product/11.2.0/11.2.0/grid/log/diag/tnslsnr/rac2/listener_scan2/alert/log.xml
Listening
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_SCAN3
LSNRCTL
for Linux: Version 11.2.0.2.0 - Production on 15-DEC-2011 15:14:06
Copyright
(c) 1991, 2010, Oracle. All rights
reserved.
Connecting
to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN3)))
STATUS
of the LISTENER
------------------------
Alias LISTENER_SCAN3
Version TNSLSNR for Linux: Version
11.2.0.2.0 - Production
Start
Date 15-DEC-2011 12:38:45
Uptime 0 days 2 hr. 35 min. 21 sec
Trace
Level off
Security ON: Local OS Authentication
SNMP OFF
Listener
Parameter File
/oracle/product/11.2.0/11.2.0/grid/network/admin/listener.ora
Listener
Log File
/oracle/product/11.2.0/11.2.0/grid/log/diag/tnslsnr/rac2/listener_scan3/alert/log.xml
Listening
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.
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.com
Server: 192.168.1.20
Address: 192.168.1.20#53
Name: newscan.freeoraclehelp.com
Address:
192.168.1.32
Name: newscan.freeoraclehelp.com
Address:
192.168.1.33
Name: newscan.freeoraclehelp.com
Address:
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):
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 scan
SCAN
name: newscan.freeoraclehelp.com, Network:
1/192.168.1.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /newscan.freeoraclehelp.com/192.168.1.34
SCAN VIP name: scan2, IP: /newscan.freeoraclehelp.com/192.168.1.33
SCAN VIP name: scan3, IP: /newscan.freeoraclehelp.com/192.168.1.32
[grid@rac1
~]$ srvctl config scan_listener
SCAN
Listener LISTENER_SCAN1 exists. Port: TCP:1521
SCAN
Listener LISTENER_SCAN2 exists. Port: TCP:1521
SCAN
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_listener
SCAN
Listener LISTENER_SCAN1 exists. Port: TCP:1522
SCAN
Listener LISTENER_SCAN2 exists. Port: TCP:1522
SCAN
Listener LISTENER_SCAN3 exists. Port: TCP:1522
[oid1@rac1
~]$
Related Posts
Oracle 11gR2 RAC
- SCAN Setup for Oracle 11g Release2(11gR2) RAC implementation
- Oracle 11gR2 RAC Installation with GNS, without SCAN
- Tuning Oracle VM for Oracle 10g / 11g RAC
- Oracle 11gR2 RAC Upgrade from 10gR2 RAC on Linux
- Convert RAW Devices to ASMLib, Move OCR, Voting to ASM Disk Groups
- Oracle 10g RAC Installation on Linux guests of Oracle VM / XEN
- Setup DNS for SCAN in Oracle 11g R2 RAC Implementation
No comments:
Post a Comment