My 11gR2 grid infrastructure completed with only one scan listener. The following log shows that ....
rac-scan.example.com IN A 133.22.67.194
IN A 133.22.67.193
IN A 133.22.67.192
[grid@rac02 grid]$ Check_CRS.txt
HA Resource Target State
----------- ------ -----
ora.CRS.dg ONLINE ONLINE on rac01
ora.FRA.dg ONLINE ONLINE on rac01
ora.LISTENER.lsnr ONLINE ONLINE on rac01
ora.LISTENER_SCAN1.lsnr ONLINE ONLINE on rac01
ora.RACDB_DATA.dg ONLINE ONLINE on rac01
ora.asm ONLINE ONLINE on rac01
ora.eons ONLINE ONLINE on rac01
ora.gsd OFFLINE OFFLINE
ora.net1.network ONLINE ONLINE on rac01
ora.oc4j OFFLINE OFFLINE
ora.ons ONLINE ONLINE on rac01
...
...
ora.rac02.vip ONLINE ONLINE on rac02
ora.rac10g.db ONLINE ONLINE on rac02
ora.rac10g.rac10g1.inst ONLINE ONLINE on rac01
ora.rac10g.rac10g2.inst ONLINE OFFLINE
ora.racpoc.askm1.svc ONLINE ONLINE on rac01
ora.racpoc.db ONLINE ONLINE on rac01
ora.registry.acfs ONLINE ONLINE on rac01
ora.scan1.vip ONLINE ONLINE on rac01
ora.testdb.db ONLINE ONLINE on rac01
tnsnames.ora file :
TESTDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan.example.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testdb.example.com)
)
)
The above session data clearly shows there is only one scan listener configured. When we use scan name in tnsnames.ora, the client connections will be established to database only when the scan name resolves to valid IP address.
But with the above configurations, the client connections some times may fail when the SCAN is resolving to 133.22.67.193 or 133.22.67.194. It establishes connection only when the SCAN resolves to 133.22.67.192.
Now to avoid this , we need to create two more scan listeners.
[grid@rac02 grid]$ Check_CRS.txt
HA Resource Target State
----------- ------ -----
ora.CRS.dg ONLINE ONLINE on rac01
ora.FRA.dg ONLINE ONLINE on rac01
ora.LISTENER.lsnr ONLINE ONLINE on rac01
ora.LISTENER_SCAN1.lsnr ONLINE ONLINE on rac01
ora.LISTENER_SCAN2.lsnr ONLINE ONLINE on rac02
ora.LISTENER_SCAN3.lsnr ONLINE ONLINE on rac02
ora.RACDB_DATA.dg ONLINE ONLINE on rac01
ora.asm ONLINE ONLINE on rac01
ora.eons ONLINE ONLINE on rac01
ora.gsd OFFLINE OFFLINE
ora.net1.network ONLINE ONLINE on rac01
ora.oc4j OFFLINE OFFLINE
ora.ons ONLINE ONLINE on rac01
...
...
ora.rac02.vip ONLINE ONLINE on rac02
ora.rac10g.db ONLINE ONLINE on rac02
ora.rac10g.rac10g1.inst ONLINE ONLINE on rac01
ora.rac10g.rac10g2.inst ONLINE OFFLINE
ora.racpoc.askm1.svc ONLINE ONLINE on rac01
ora.racpoc.db ONLINE ONLINE on rac01
ora.registry.acfs ONLINE ONLINE on rac01
ora.scan1.vip ONLINE ONLINE on rac01
ora.scan2.vip ONLINE ONLINE on rac02
ora.scan3.vip ONLINE ONLINE on rac02
ora.testdb.db ONLINE ONLINE on rac01
[grid@rac02 grid]$
Status :
[grid@rac01 ~]$ srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is running on node rac01
SCAN VIP scan2 is enabled
SCAN VIP scan2 is running on node rac02
SCAN VIP scan3 is enabled
SCAN VIP scan3 is running on node rac02
[grid@rac01 ~]$ srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node rac01
SCAN Listener LISTENER_SCAN2 is enabled
SCAN listener LISTENER_SCAN2 is running on node rac02
SCAN Listener LISTENER_SCAN3 is enabled
SCAN listener LISTENER_SCAN3 is running on node rac02
[grid@rac01 ~]$
Hope it helps
SRI
[grid@rac01 ~]$ srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is running on node rac01
SCAN VIP scan2 is enabled
SCAN VIP scan2 is running on node rac02
SCAN VIP scan3 is enabled
SCAN VIP scan3 is running on node rac02
[grid@rac01 ~]$ srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node rac01
SCAN Listener LISTENER_SCAN2 is enabled
SCAN listener LISTENER_SCAN2 is running on node rac02
SCAN Listener LISTENER_SCAN3 is enabled
SCAN listener LISTENER_SCAN3 is running on node rac02
[grid@rac01 ~]$
[grid@rac01 ~]$ ps -ef | grep -i tns
grid 9052 1 0 Aug09 ? 00:00:01 /o001/home/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid 9098 1 0 Aug09 ? 00:00:01 /o001/home/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid 21388 20424 0 05:06 pts/1 00:00:00 grep -i tns
[grid@rac01 ~]$
[grid@rac02 ~]$ ps -ef | grep -i tns
grid 1323 1292 0 05:07 pts/0 00:00:00 grep -i tns
grid 9110 1 0 Aug09 ? 00:00:02 /o001/home/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid 17278 1 0 Aug09 ? 00:00:01 /o001/home/11.2.0/grid/bin/tnslsnr LISTENER_SCAN2 -inherit
grid 17285 1 0 Aug09 ? 00:00:01 /o001/home/11.2.0/grid/bin/tnslsnr LISTENER_SCAN3 -inherit
[grid@rac02 ~]$
[grid@rac01 grid]$ srvctl config scan
SCAN name: rac-scan, Network: 1/133.22.38.0/255.255.255.0/eth2
SCAN VIP name: scan1, IP: /rac-scan.example.com/133.22.67.192
[grid@rac01 grid]$ srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
[grid@rac01 grid]$
[grid@rac01 grid]$ ping rac-scan.example.com
PING rac-scan.example.com (133.22.67.193) 56(84) bytes of data.
From rac01.seo.int (133.22.38.50) icmp_seq=2 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=3 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=4 Destination Host Unreachable
--- rac-scan.example.com ping statistics ---
6 packets transmitted, 0 received, +3 errors, 100% packet loss, time 5000ms
, pipe 3
[grid@rac01 grid]$ ping rac-scan
PING rac-scan.example.com (133.22.67.194) 56(84) bytes of data.
From rac01.seo.int (133.22.38.50) icmp_seq=2 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=3 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=4 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=6 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=7 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=8 Destination Host Unreachable
--- rac-scan.example.com ping statistics ---
11 packets transmitted, 0 received, +6 errors, 100% packet loss, time 10000ms
, pipe 3
[grid@rac01 grid]$ ping rac-scan
PING rac-scan.example.com (133.22.67.192) 56(84) bytes of data.
64 bytes from rac-scan.example.com (133.22.67.192): icmp_seq=1 ttl=64 time=0.039 ms
64 bytes from rac-scan.example.com (133.22.67.192): icmp_seq=2 ttl=64 time=0.054 ms
64 bytes from rac-scan.example.com (133.22.67.192): icmp_seq=3 ttl=64 time=0.049 ms
64 bytes from rac-scan.example.com (133.22.67.192): icmp_seq=4 ttl=64 time=0.063 ms
--- rac-scan.example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.039/0.051/0.063/0.010 ms
[grid@rac01 grid]$
[grid@rac01 grid]$ host rac-scan
rac-scan.example.com has address 133.22.67.194
rac-scan.example.com has address 133.22.67.193
rac-scan.example.com has address 133.22.67.192
[grid@rac01 grid]$ nslookup rac-scan
Server: 133.22.5.53
Address: 133.22.5.53#53
Name: rac-scan.example.com
Address: 133.22.67.194
Name: rac-scan.example.com
Address: 133.22.67.192
Name: rac-scan.example.com
Address: 133.22.67.193
[grid@rac01 grid]$
[root@rac01 network-scripts]# host rac-scan
rac-scan.example.com has address 133.22.67.194
rac-scan.example.com has address 133.22.67.193
rac-scan.example.com has address 133.22.67.192
[root@rac01 network-scripts]#
SCAN name: rac-scan, Network: 1/133.22.38.0/255.255.255.0/eth2
SCAN VIP name: scan1, IP: /rac-scan.example.com/133.22.67.192
[grid@rac01 grid]$ srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
[grid@rac01 grid]$
[grid@rac01 grid]$ ping rac-scan.example.com
PING rac-scan.example.com (133.22.67.193) 56(84) bytes of data.
From rac01.seo.int (133.22.38.50) icmp_seq=2 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=3 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=4 Destination Host Unreachable
--- rac-scan.example.com ping statistics ---
6 packets transmitted, 0 received, +3 errors, 100% packet loss, time 5000ms
, pipe 3
[grid@rac01 grid]$ ping rac-scan
PING rac-scan.example.com (133.22.67.194) 56(84) bytes of data.
From rac01.seo.int (133.22.38.50) icmp_seq=2 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=3 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=4 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=6 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=7 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=8 Destination Host Unreachable
--- rac-scan.example.com ping statistics ---
11 packets transmitted, 0 received, +6 errors, 100% packet loss, time 10000ms
, pipe 3
[grid@rac01 grid]$ ping rac-scan
PING rac-scan.example.com (133.22.67.192) 56(84) bytes of data.
64 bytes from rac-scan.example.com (133.22.67.192): icmp_seq=1 ttl=64 time=0.039 ms
64 bytes from rac-scan.example.com (133.22.67.192): icmp_seq=2 ttl=64 time=0.054 ms
64 bytes from rac-scan.example.com (133.22.67.192): icmp_seq=3 ttl=64 time=0.049 ms
64 bytes from rac-scan.example.com (133.22.67.192): icmp_seq=4 ttl=64 time=0.063 ms
--- rac-scan.example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.039/0.051/0.063/0.010 ms
[grid@rac01 grid]$
[grid@rac01 grid]$ host rac-scan
rac-scan.example.com has address 133.22.67.194
rac-scan.example.com has address 133.22.67.193
rac-scan.example.com has address 133.22.67.192
[grid@rac01 grid]$ nslookup rac-scan
Server: 133.22.5.53
Address: 133.22.5.53#53
Name: rac-scan.example.com
Address: 133.22.67.194
Name: rac-scan.example.com
Address: 133.22.67.192
Name: rac-scan.example.com
Address: 133.22.67.193
[grid@rac01 grid]$
[root@rac01 network-scripts]# host rac-scan
rac-scan.example.com has address 133.22.67.194
rac-scan.example.com has address 133.22.67.193
rac-scan.example.com has address 133.22.67.192
[root@rac01 network-scripts]#
rac-scan.example.com IN A 133.22.67.194
IN A 133.22.67.193
IN A 133.22.67.192
[grid@rac02 grid]$ Check_CRS.txt
HA Resource Target State
----------- ------ -----
ora.CRS.dg ONLINE ONLINE on rac01
ora.FRA.dg ONLINE ONLINE on rac01
ora.LISTENER.lsnr ONLINE ONLINE on rac01
ora.LISTENER_SCAN1.lsnr ONLINE ONLINE on rac01
ora.RACDB_DATA.dg ONLINE ONLINE on rac01
ora.asm ONLINE ONLINE on rac01
ora.eons ONLINE ONLINE on rac01
ora.gsd OFFLINE OFFLINE
ora.net1.network ONLINE ONLINE on rac01
ora.oc4j OFFLINE OFFLINE
ora.ons ONLINE ONLINE on rac01
...
...
ora.rac02.vip ONLINE ONLINE on rac02
ora.rac10g.db ONLINE ONLINE on rac02
ora.rac10g.rac10g1.inst ONLINE ONLINE on rac01
ora.rac10g.rac10g2.inst ONLINE OFFLINE
ora.racpoc.askm1.svc ONLINE ONLINE on rac01
ora.racpoc.db ONLINE ONLINE on rac01
ora.registry.acfs ONLINE ONLINE on rac01
ora.scan1.vip ONLINE ONLINE on rac01
ora.testdb.db ONLINE ONLINE on rac01
tnsnames.ora file :
TESTDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan.example.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testdb.example.com)
)
)
The above session data clearly shows there is only one scan listener configured. When we use scan name in tnsnames.ora, the client connections will be established to database only when the scan name resolves to valid IP address.
But with the above configurations, the client connections some times may fail when the SCAN is resolving to 133.22.67.193 or 133.22.67.194. It establishes connection only when the SCAN resolves to 133.22.67.192.
SQL> conn test/test@testdb ==> Connection failed. rac-scan resolves either to 133.22.67.193 or 133.22.67.194
ERROR:
ORA-12543: TNS:destination host unreachable
SQL>conn test/test@testdb ==> Connection established.rac-scan resolves to 133.22.67.192.
connected
SQL>
ERROR:
ORA-12543: TNS:destination host unreachable
SQL>conn test/test@testdb ==> Connection established.rac-scan resolves to 133.22.67.192.
connected
SQL>
Now to avoid this , we need to create two more scan listeners.
[grid@rac01 grid]$ srvctl stop scan_listener
[grid@rac01 grid]$ srvctl stop scan
[grid@rac01 grid]$ srvctl config scan
SCAN name: rac-scan, Network: 1/133.22.38.0/255.255.255.0/eth2
SCAN VIP name: scan1, IP: /rac-scan.example.com/133.22.67.192
[grid@rac01 grid]$ srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
[grid@rac01 grid]$ which srvctl
/u01/home/11.2.0/grid/bin/srvctl
[grid@rac01 grid]$
[grid@rac01 grid]$ srvctl stop scan
[grid@rac01 grid]$ srvctl config scan
SCAN name: rac-scan, Network: 1/133.22.38.0/255.255.255.0/eth2
SCAN VIP name: scan1, IP: /rac-scan.example.com/133.22.67.192
[grid@rac01 grid]$ srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
[grid@rac01 grid]$ which srvctl
/u01/home/11.2.0/grid/bin/srvctl
[grid@rac01 grid]$
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl modify scan -h
Modifies the SCAN name.
Usage: srvctl modify scan -n <scan_name>
-n <scan_name> Domain name qualified SCAN name
-h Print usage
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl modify scan -n rac-scan
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl config scan
SCAN name: rac-scan, Network: 1/133.22.38.0/255.255.255.0/eth2
SCAN VIP name: scan1, IP: /rac-scan.example.com/133.22.67.193
SCAN VIP name: scan2, IP: /rac-scan.example.com/133.22.67.194
SCAN VIP name: scan3, IP: /rac-scan.example.com/133.22.67.192
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl modify scan_listener -u
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/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
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl start scan_listener
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl config scan
SCAN name: rac-scan, Network: 1/133.22.38.0/255.255.255.0/eth2
SCAN VIP name: scan1, IP: /rac-scan.example.com/133.22.67.193
SCAN VIP name: scan2, IP: /rac-scan.example.com/133.22.67.194
SCAN VIP name: scan3, IP: /rac-scan.example.com/133.22.67.192
[root@rac01 network-scripts]#
Modifies the SCAN name.
Usage: srvctl modify scan -n <scan_name>
-n <scan_name> Domain name qualified SCAN name
-h Print usage
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl modify scan -n rac-scan
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl config scan
SCAN name: rac-scan, Network: 1/133.22.38.0/255.255.255.0/eth2
SCAN VIP name: scan1, IP: /rac-scan.example.com/133.22.67.193
SCAN VIP name: scan2, IP: /rac-scan.example.com/133.22.67.194
SCAN VIP name: scan3, IP: /rac-scan.example.com/133.22.67.192
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl modify scan_listener -u
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/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
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl start scan_listener
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl config scan
SCAN name: rac-scan, Network: 1/133.22.38.0/255.255.255.0/eth2
SCAN VIP name: scan1, IP: /rac-scan.example.com/133.22.67.193
SCAN VIP name: scan2, IP: /rac-scan.example.com/133.22.67.194
SCAN VIP name: scan3, IP: /rac-scan.example.com/133.22.67.192
[root@rac01 network-scripts]#
[grid@rac02 grid]$ Check_CRS.txt
HA Resource Target State
----------- ------ -----
ora.CRS.dg ONLINE ONLINE on rac01
ora.FRA.dg ONLINE ONLINE on rac01
ora.LISTENER.lsnr ONLINE ONLINE on rac01
ora.LISTENER_SCAN1.lsnr ONLINE ONLINE on rac01
ora.LISTENER_SCAN2.lsnr ONLINE ONLINE on rac02
ora.LISTENER_SCAN3.lsnr ONLINE ONLINE on rac02
ora.RACDB_DATA.dg ONLINE ONLINE on rac01
ora.asm ONLINE ONLINE on rac01
ora.eons ONLINE ONLINE on rac01
ora.gsd OFFLINE OFFLINE
ora.net1.network ONLINE ONLINE on rac01
ora.oc4j OFFLINE OFFLINE
ora.ons ONLINE ONLINE on rac01
...
...
ora.rac02.vip ONLINE ONLINE on rac02
ora.rac10g.db ONLINE ONLINE on rac02
ora.rac10g.rac10g1.inst ONLINE ONLINE on rac01
ora.rac10g.rac10g2.inst ONLINE OFFLINE
ora.racpoc.askm1.svc ONLINE ONLINE on rac01
ora.racpoc.db ONLINE ONLINE on rac01
ora.registry.acfs ONLINE ONLINE on rac01
ora.scan1.vip ONLINE ONLINE on rac01
ora.scan2.vip ONLINE ONLINE on rac02
ora.scan3.vip ONLINE ONLINE on rac02
ora.testdb.db ONLINE ONLINE on rac01
[grid@rac02 grid]$
Status :
[grid@rac01 ~]$ srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is running on node rac01
SCAN VIP scan2 is enabled
SCAN VIP scan2 is running on node rac02
SCAN VIP scan3 is enabled
SCAN VIP scan3 is running on node rac02
[grid@rac01 ~]$ srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node rac01
SCAN Listener LISTENER_SCAN2 is enabled
SCAN listener LISTENER_SCAN2 is running on node rac02
SCAN Listener LISTENER_SCAN3 is enabled
SCAN listener LISTENER_SCAN3 is running on node rac02
[grid@rac01 ~]$
Hope it helps
SRI
My 11gR2 grid infrastructure completed with only one scan listener. The following log shows that ....
[grid@rac01 grid]$ srvctl config scan
SCAN name: rac-scan, Network: 1/133.22.38.0/255.255.255.0/eth2
SCAN VIP name: scan1, IP: /rac-scan.example.com/133.22.67.192
[grid@rac01 grid]$ srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
[grid@rac01 grid]$
[grid@rac01 grid]$ ping rac-scan.example.com
PING rac-scan.example.com (133.22.67.193) 56(84) bytes of data.
From rac01.seo.int (133.22.38.50) icmp_seq=2 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=3 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=4 Destination Host Unreachable
--- rac-scan.example.com ping statistics ---
6 packets transmitted, 0 received, +3 errors, 100% packet loss, time 5000ms
, pipe 3
[grid@rac01 grid]$ ping rac-scan
PING rac-scan.example.com (133.22.67.194) 56(84) bytes of data.
From rac01.seo.int (133.22.38.50) icmp_seq=2 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=3 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=4 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=6 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=7 Destination Host Unreachable
From rac01.seo.int (133.22.38.50) icmp_seq=8 Destination Host Unreachable
--- rac-scan.example.com ping statistics ---
11 packets transmitted, 0 received, +6 errors, 100% packet loss, time 10000ms
, pipe 3
[grid@rac01 grid]$ ping rac-scan
PING rac-scan.example.com (133.22.67.192) 56(84) bytes of data.
64 bytes from rac-scan.example.com (133.22.67.192): icmp_seq=1 ttl=64 time=0.039 ms
64 bytes from rac-scan.example.com (133.22.67.192): icmp_seq=2 ttl=64 time=0.054 ms
64 bytes from rac-scan.example.com (133.22.67.192): icmp_seq=3 ttl=64 time=0.049 ms
64 bytes from rac-scan.example.com (133.22.67.192): icmp_seq=4 ttl=64 time=0.063 ms
--- rac-scan.example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.039/0.051/0.063/0.010 ms
[grid@rac01 grid]$
[grid@rac01 grid]$ host rac-scan
rac-scan.example.com has address 133.22.67.194
rac-scan.example.com has address 133.22.67.193
rac-scan.example.com has address 133.22.67.192
[grid@rac01 grid]$ nslookup rac-scan
Server: 133.22.5.53
Address: 133.22.5.53#53
Name: rac-scan.example.com
Address: 133.22.67.194
Name: rac-scan.example.com
Address: 133.22.67.192
Name: rac-scan.example.com
Address: 133.22.67.193
[grid@rac01 grid]$
[root@rac01 network-scripts]# host rac-scan
rac-scan.example.com has address 133.22.67.194
rac-scan.example.com has address 133.22.67.193
rac-scan.example.com has address 133.22.67.192
[root@rac01 network-scripts]#
rac-scan.example.com IN A 133.22.67.194
IN A 133.22.67.193
IN A 133.22.67.192
[grid@rac02 grid]$ Check_CRS.txt
HA Resource Target State
----------- ------ -----
ora.CRS.dg ONLINE ONLINE on rac01
ora.FRA.dg ONLINE ONLINE on rac01
ora.LISTENER.lsnr ONLINE ONLINE on rac01
ora.LISTENER_SCAN1.lsnr ONLINE ONLINE on rac01
ora.RACDB_DATA.dg ONLINE ONLINE on rac01
ora.asm ONLINE ONLINE on rac01
ora.eons ONLINE ONLINE on rac01
ora.gsd OFFLINE OFFLINE
ora.net1.network ONLINE ONLINE on rac01
ora.oc4j OFFLINE OFFLINE
ora.ons ONLINE ONLINE on rac01
...
...
ora.rac02.vip ONLINE ONLINE on rac02
ora.rac10g.db ONLINE ONLINE on rac02
ora.rac10g.rac10g1.inst ONLINE ONLINE on rac01
ora.rac10g.rac10g2.inst ONLINE OFFLINE
ora.racpoc.askm1.svc ONLINE ONLINE on rac01
ora.racpoc.db ONLINE ONLINE on rac01
ora.registry.acfs ONLINE ONLINE on rac01
ora.scan1.vip ONLINE ONLINE on rac01
ora.testdb.db ONLINE ONLINE on rac01
TESTDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan.example.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testdb.example.com)
)
)
The above session data clearly shows there is only one scan listener configured. When we use scan name in tnsnames.ora, the client connections will be established to database only when the scan name resolves to valid IP address.
But with the above configurations, the client connections some times may fail when the SCAN is resolving to 133.22.67.193 or 133.22.67.194. It establishes connection only when the SCAN resolves to 133.22.67.192.
SQL> conn test/test@testdb ==> Connection failed. rac-scan resolves either to 133.22.67.193 or 133.22.67.194
ERROR:
ORA-12543: TNS:destination host unreachable
SQL>conn test/test@testdb ==> Connection established.rac-scan resolves to 133.22.67.192.
connected
SQL>
Now to avoid this , we need to create two more scan listeners.
[grid@rac01 grid]$ srvctl stop scan_listener
[grid@rac01 grid]$ srvctl stop scan
[grid@rac01 grid]$ srvctl config scan
SCAN name: rac-scan, Network: 1/133.22.38.0/255.255.255.0/eth2
SCAN VIP name: scan1, IP: /rac-scan.example.com/133.22.67.192
[grid@rac01 grid]$ srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
[grid@rac01 grid]$ which srvctl
/u01/home/11.2.0/grid/bin/srvctl
[grid@rac01 grid]$
[grid@rac01 ~]$ srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is running on node rac01
SCAN VIP scan2 is enabled
SCAN VIP scan2 is running on node rac02
SCAN VIP scan3 is enabled
SCAN VIP scan3 is running on node rac02
[grid@rac01 ~]$ srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node rac01
SCAN Listener LISTENER_SCAN2 is enabled
SCAN listener LISTENER_SCAN2 is running on node rac02
SCAN Listener LISTENER_SCAN3 is enabled
SCAN listener LISTENER_SCAN3 is running on node rac02
[grid@rac01 ~]$
[grid@rac01 ~]$ ps -ef | grep -i tns
grid 9052 1 0 Aug09 ? 00:00:01 /o001/home/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid 9098 1 0 Aug09 ? 00:00:01 /o001/home/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid 21388 20424 0 05:06 pts/1 00:00:00 grep -i tns
[grid@rac01 ~]$
[grid@rac02 ~]$ ps -ef | grep -i tns
grid 1323 1292 0 05:07 pts/0 00:00:00 grep -i tns
grid 9110 1 0 Aug09 ? 00:00:02 /o001/home/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid 17278 1 0 Aug09 ? 00:00:01 /o001/home/11.2.0/grid/bin/tnslsnr LISTENER_SCAN2 -inherit
grid 17285 1 0 Aug09 ? 00:00:01 /o001/home/11.2.0/grid/bin/tnslsnr LISTENER_SCAN3 -inherit
[grid@rac02 ~]$
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl modify scan -h
Modifies the SCAN name.
Usage: srvctl modify scan -n <scan_name>
-n <scan_name> Domain name qualified SCAN name
-h Print usage
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl modify scan -n rac-scan
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl config scan
SCAN name: rac-scan, Network: 1/133.22.38.0/255.255.255.0/eth2
SCAN VIP name: scan1, IP: /rac-scan.example.com/133.22.67.193
SCAN VIP name: scan2, IP: /rac-scan.example.com/133.22.67.194
SCAN VIP name: scan3, IP: /rac-scan.example.com/133.22.67.192
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl modify scan_listener -u
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/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
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl start scan_listener
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl config scan
SCAN name: rac-scan, Network: 1/133.22.38.0/255.255.255.0/eth2
SCAN VIP name: scan1, IP: /rac-scan.example.com/133.22.67.193
SCAN VIP name: scan2, IP: /rac-scan.example.com/133.22.67.194
SCAN VIP name: scan3, IP: /rac-scan.example.com/133.22.67.192
[root@rac01 network-scripts]#
[grid@rac02 grid]$ Check_CRS.txt
HA Resource Target State
----------- ------ -----
ora.CRS.dg ONLINE ONLINE on rac01
ora.FRA.dg ONLINE ONLINE on rac01
ora.LISTENER.lsnr ONLINE ONLINE on rac01
ora.LISTENER_SCAN1.lsnr ONLINE ONLINE on rac01
ora.LISTENER_SCAN2.lsnr ONLINE ONLINE on rac02
ora.LISTENER_SCAN3.lsnr ONLINE ONLINE on rac02
ora.RACDB_DATA.dg ONLINE ONLINE on rac01
ora.asm ONLINE ONLINE on rac01
ora.eons ONLINE ONLINE on rac01
ora.gsd OFFLINE OFFLINE
ora.net1.network ONLINE ONLINE on rac01
ora.oc4j OFFLINE OFFLINE
ora.ons ONLINE ONLINE on rac01
...
...
ora.rac02.vip ONLINE ONLINE on rac02
ora.rac10g.db ONLINE ONLINE on rac02
ora.rac10g.rac10g1.inst ONLINE ONLINE on rac01
ora.rac10g.rac10g2.inst ONLINE OFFLINE
ora.racpoc.askm1.svc ONLINE ONLINE on rac01
ora.racpoc.db ONLINE ONLINE on rac01
ora.registry.acfs ONLINE ONLINE on rac01
ora.scan1.vip ONLINE ONLINE on rac01
ora.scan2.vip ONLINE ONLINE on rac02
ora.scan3.vip ONLINE ONLINE on rac02
ora.testdb.db ONLINE ONLINE on rac01
[grid@rac02 grid]$
Hope it helps
SRI
+ comments + 25 comments
Thank you so much for this HowTo. That saved a lot of time, because adding an SCAN Listener is different from adding an typical cluster ressource (crsct add res ora.scan2.vip... will not work)
Thanks. :-)
Thanks you too for your comment and feedback.
Thanks
SRI
hi,
Thanks a lot, works perfectly !
Regards,
Emmanuel
Thank you very much for this blog which helped me a lot!
I have the same issue where only one LISTENER_SCAN is configured. However, when i try to connect via sqlplus @SCAN-NAME it never connects. My $ORACLE_HOME/network/admin/tnsnames.ora is basically the same as your example above. /u01/home/11.2.0/grid/bin/srvctl modify scan -n SCAN-name
still only returns LISTENER_SCAN1. The only difference i noticed was that when you did
srvctl config scan
SCAN name: rac-scan, Network: 1/133.22.38.0/255.255.255.0/eth2
SCAN VIP name: scan1, IP: /rac-scan.example.com/133.22.67.192
I got SCAN VIP name: scan1, IP: // instead of /
Any ideas on what is wrong?
Give me the output of following commands :
host rac-scan
nslookup rac-scan
SQL> conn test/test@ => What is the error messg you are getting.
I have similar issue, but after running the "srvctl modify scan", I see no change.
The config scan still shows only one IP.
# /home/app/Clusterware/11.2.0.1/grid/bin/srvctl modify scan -n geodbscan2
# /home/app/Clusterware/11.2.0.1/grid/bin/srvctl config scan
SCAN name: geodbscan2, Network: 1/10.0.0.0/255.255.0.0/eth0
SCAN VIP name: scan1, IP: /10.0.10.67/10.0.10.67
Any ideas?
The scan name should be correctly configured. It should be resolved to 3 IPs. Pls provide me the information requested above.
# nslookup geodbscan2
Server: 10.0.2.126
Address: 10.0.2.126#53
Name: geodbscan2.example.com
Address: 10.0.10.69
Name: geodbscan2.example.com
Address: 10.0.10.67
Name: geodbscan2.example.com
Address: 10.0.10.68
Pls execute the following steps and provide me the two trace files.
=========
script trace1.log
export SRVM_TRACE=TRUE
srvctl modify scan -n geodbscan2
exit
strace -aef -o trace2.log srvctl modify scan -n geodbscan2
==========
Thanks
SRI
Problem has been resolved.
Issue was in /etc/nsswitch.conf
Line
hosts: files nis dns
changed to
hosts: files dns
Then rerun modify command and everything ok after that.
Thats good. Thank you for reading this article.
Thanks my fried, you save my life!
thank you
good article ;) you solve my problem. I was only have one scan ip, now I have 3 scan ip. Thanks a lot
Thank you. :-)
Hi SRI,
server1:xyzadm 102> srvctl config scan
SCAN name: cscan.xyz.local, Network: 1/cc.xxx.yy.0/255.255.240.0/eth0
SCAN VIP name: scan1, IP: /cscan.xyz.local/cc.xxx.yy.57
SCAN VIP name: scan2, IP: /cscan.xyz.local/cc.xxx.yy.56
SCAN VIP name: scan3, IP: /cscan.xyz.local/cc.xxx.yy.58
server1:xyzadm 103> 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
server1:xyzadm 104>
server1:xyzadm 76> srvctl status service -d XYZ
Service XYZ_D01 is running on instance(s) XYZ001
Service XYZ_D02 is running on instance(s) XYZ002
server1:xyzadm 77>
with above details and I also tested the nslokup or ping 3 times and IP's round robin is configured correctly. But not able to connect to the database using scan listener. How can I test connection to Database using scan listener?
Hi Pravin,
Please provide me following details :
set lines 120
set pages 200
column name format a20 tru
column value format a40 wra
select inst_id, name, value
from gv$parameter
where name in ('service_names','local_listener','remote_listener',
'db_name','db_domain','instance_name')
order by 1,2,3;
ps -ef | grep -i tns ( on each rac node)
srvctl status scan_listener -i ( For all scan listeners)
Thanks
SRI
hi,
i mentioned 3 scan ip 172.16.101.201/202/203 in /etc/hosts file is it correct or we need to configure DNS. Please clear me. I dont know much about os related configuration.
by,
Thahir.
Hi Thahir,
DNS configuration is required to resolve host-ip configuration. We can achieve the same thing by specifying the entries in /etc/hosts file.
Thanks
SRI
the howto is good.
one remark: the below commands onwards should be run as grid and not root
from
[root@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl start scan_listener
to
[grid@rac01 network-scripts]# /u01/home/11.2.0/grid/bin/srvctl start scan_listener
Basically this is covered in How to Modify SCAN Setting or SCAN Listener Port after Installation (Doc ID 972500.1), for those having MOS accounts
Thank you Adrian
THANKSSSSSSSSSSSSSSSS !!!
IT HELP ME ALOT !!!!
YOUR GOD BLESS YOU EVERY DAY!!!!!!
Hi Sir,
When you type "srvctl modify scan -n rac-scan" . oracle will automatically configures scan-vip with scan name. How will oracle come to know that 193 and 194 scan ips should be configured to this scan name(rac-scan).
Hi Gautham, Before issuing this command, your need to configure your scan name to be resolved for 3 IPs. It can be either at the DNS level or at the /etc/hosts file level ( local configurations). When you issue this command, it checks the scan name and if it is resolved to 3 IPs, it will configure scan name to these 3 IPs.
Post a Comment
Thank you for visiting our site and leaving your valuable comment.