Single Client Access Name (SCAN) is a feature used in Oracle Real Application Clusters environments that provides a single name for clients to access any Oracle Database running in a cluster. You can think of SCAN as a cluster alias for databases in the cluster.
The benefit is that the client’s connect information does not need to change if you add or remove nodes or databases in the cluster. SCAN was first introduced with Oracle Real Application Clusters
(RAC) 11g Release 2 and provides additional functionality in Oracle RAC 12c. Having a single name to access the cluster to connect to a database in this cluster allows clients to use EZConnect and the simple JDBC thin URL to access any database running in the cluster, independently of the number of databases or servers running in the cluster and regardless on which server(s) in the cluster the
requested database is actually active Each term SCAN NAME, SCAN VIP, SCAN Listener,
Node VIP, Local_Listener and Remote_Listenerhas its own meaning and role to play in RAC environment
SCAN NAME: SCAN NAME was introduced in Oracle 11g R2 version. This a name which can resolve upto maximum three IP address and minimum one is required for Oracle 11g R2 Real Application
Cluster installation. SCAN NAME must be unique in Entire Organization network, This name is used in Tnsname.ora file of client system, all database connection are made thorugh this name. DBA can use below commands to file SCAN NAME details.
[oracle@database bin]$ srvctl config scan
SCAN name: orarac-scan, Network: 1/10.141.132.0/255.255.254.0/eth8
SCAN VIP name: scan1, IP: /orarac-scan/10.191.111.57
SCAN VIP name: scan2, IP: /orarac-scan/10.191.111.55
SCAN VIP name: scan3, IP: /orarac-scan/10.191.111.56
[oracle@database bin]$ nslookup orarac-scan
Server: 111.12.128.13
Address: 111.12.128.13#53
Name: orarac-scan.oracle.com
Address: 10.191.111.55
Name: orarac-scan.oracle.com
Address: 10.191.111.56
Name: orarac-scan.oracle.com
Address: 10.191.111.57
SCAN VIP: SCAN NAME resolves to one or more than one IP addresses, these IP address are called as SCAN VIP or SCAN IP. Each Scan VIP has a SCAN Listener generated corresponding to it. If there is one SCAN IP one SCAN Listener will be generated, if there are three SCAN IP's three SCAN Listeners
will be generated. These SCAN Listener runs on any of three nodes on the RAC environment or it could be two SCAN Listener on one node if there are three SCAN Listener and only two nodes.SCAN VIP and SCAN Listener works as a pair when SCAN VIP fails over to other node, the corresponding SCAN listener will also be failed over to the same node. Whenever SCAN VIP fails over happens, it will always select a node with least running SCAN VIP, i.e., if SCAN VIP runs on node1, node2 and node3 of a 4-node cluster, if node3 goes down, the SCAN VIP and corresponding SCAN listener will be failed over to node4 as the other two nodes already have one SCAN VIP running on each node. Database Administrator can use below command to find SCAN Listener running on a node and SCAN VIP corresponding to it.
[oracle@database ~]$ ps -ef | grep tnslsnr
oracle 18181 10705 0 15:07 pts/0 00:00:00 grep tnslsnr
grid 22438 1 0 Jul24 ? 00:00:39 /u01/app/11.2.0.3/grid/bin/tnslsnr LISTENER_SCAN2 -inherit
grid 25927 1 0 Jul24 ? 00:01:31 /u01/app/11.2.0.3/grid/bin/tnslsnr LISTENER -inherit
grid 29211 1 0 Jul28 ? 00:00:27 /u01/app/11.2.0.3/grid/bin/tnslsnr LISTENER_SCAN3 -inherit
[oracle@database bin]$ lsnrctl status LISTENER_SCAN3
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 06-AUG-2013 16:16:22
Copyright (c) 1991, 2011, 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.3.0 - Production
Start Date 28-JUL-2013 08:38:01
Uptime 9 days 7 hr. 38 min. 21 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/11.2.0.3/grid/network/admin/listener.ora
Listener Log File /u01/app/11.2.0.3/grid/log/diag/tnslsnr/node2/listener_scan3/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN3)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.191.111.57)(PORT=1521)))
Services Summary...
Service "newdb" has 2 instance(s).
Instance "newdb1", status READY, has 1 handler(s) for this service...
Instance "newdb2", status READY, has 1 handler(s) for this service...
Service "newdbXDB" has 2 instance(s).
Instance "newdb1", status READY, has 1 handler(s) for this service...
Instance "newdb2", status READY, has 1 handler(s) for this service...
The command completed successfully
From the above grep command DBA can see, this system has two SCAN Listener running at this moment. SCAN Listener having name LISTENER_SCAN3 is running on SCAN VIP 10.191.111.57 as shown in HOST parameter of lsnrctl status output.
SCAN Listener: As explained above Each SCAN VIP has SCAN Listener associated with each other and both works as a pair. One SCAN Listener is created corresponding to one SCAN VIP.
SCAN Listener used to run on database nodes. At max there could be three SCAN Listeners in the whole cluster. To file where all these SCAN Listeners are running use
[oracle@database ~]$ srvctl status scan_listener
SCAN Listener LISTENER_SCAN1 is enabled
SCAN listener LISTENER_SCAN1 is running on node node1
SCAN Listener LISTENER_SCAN2 is enabled
SCAN listener LISTENER_SCAN2 is running on node node2
SCAN Listener LISTENER_SCAN3 is enabled
SCAN listener LISTENER_SCAN3 is running on node node2
In this example, This is a two node RAC having three SCAN Listeners, Node1 has LISTENER_SCAN1 running
while Node2 has LISTENER_SCAN2 and LISTENER_SCAN3 running.
Node VIP: Each Database node in Real Application cluster environment has one node IP and one Node VIP address, The main difference between these two is Node VIP can move to any other
system in case if current owning system is down but Node IP can't do that. When ever a new connection request is made the SCAN listener listening on a SCAN IP address and the SCAN port is contracted on a client's behalf.Because all services on the cluster are registered with the SCAN listener, the SCAN listener replies with the address of the local listener as Node VIP address on the least-loaded node (Each scan listener keeps updated cluster load statistics) and connection is routed to that node.
Local Listener on the Database server is registered with Node VIP and Node IP address.
[oracle@database ~]$ lsnrctl status listener
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 07-AUG-2013 05:12:02
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 24-JUL-2013 07:14:10
Uptime 13 days 21 hr. 57 min. 52 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/11.2.0.3/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/node2/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.141.21.360)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.141.21.366)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM2", status READY, has 1 handler(s) for this service...
Service "newdb" has 1 instance(s).
Instance "newdb2", status READY, has 1 handler(s) for this service...
Service "newdbXDB" has 1 instance(s).
Instance "newdb2", status READY, has 1 handler(s) for this service...
The command completed successfully
Here, DBA can see Listner is registered with two IP addresses 10.141.21.360 is Node IP address
and 10.141.21.366 is node VIP address.
Local_Listener: This is a database parameter which is used to provide detail of local listener running on database node itself. In Real Application Cluster environment this has Node VIP address as value.
SQL> show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string (DESCRIPTION=(ADDRESS_LIST=(A
DDRESS=(PROTOCOL=TCP)(HOST=10.
141.21.366)(PORT=1521))))
When a new connection request is made my SCAN Listener, This address is returned to the SCAN Listener
and then connection is made to database local listener. The difference between SCAN Listener and Local
Listener is SCAN listener runs corosponding to SCAN VIP's while Local Listener runs with Node VIP or Node
IP address.SCAN Listener can move to another database node in case of node failure but local Listener
doesn't have this kind of behavior.
Remote_Listener: Each database instance has this parameter set to SCAN NAME of the cluster
environment. SCAN NAME in turn has one or more IP address further called SCAN VIP and each SCAN VIP has SCAN Listener running on it, so finally each database instance register itself with all SCAN Listeners running across the clusterware.
SQL> show parameter remote_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_listener string orarac-scan:1521
The solo purpose of remote_listener parameter is to register each database instance with all SCAN
Listeners in RAC. This provide information on what services are being provided by the instance,the current load, and a recommendation on how many incoming connections should be directed to the instance.