Friday 13 April 2012

What is SCAN in Oracle RAC 11gR2? Tips and Tricks to troublshoot connectivity with SCAN listener?

Single Client Access Name(SCAN) is a new feature of Oracle Real Application Cluster(RAC) 11g Release that provides a single name for the clients to access Oracle Database running in a cluster.  The benefit of the SCAN Listener is that the client's connection data does not need to changed if you add or delete a node from a cluster. 
The Single Client Access Name is configured during the installation of Oracle Grid Infrastructure. Once configured, application tier connection descriptors just specify the SCAN name rather than all the [virtual] hosts in the cluster.
Without the Single Client Access Name, the descriptor for a two-node cluster would be
TEST =
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=db1-vip)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=db2-vip)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME=TEST)))  
With the Single Client Access Name, just the SCAN name needs to be specified:

TEST = (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db-scan)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=TEST))) 

The benefit is that the scan description will remain same irrespective of the number of nodes in the cluster.

In short SCAN is
1)The address used by clients connecting to cluster

2)The SCAN is fully qualified hostname located in GNS subdomain registered to three IP addressess.

3) The SCAN provides a stable,highly available name for clients to use,independent of the nodes that make up the cluster

Verify SCAN Listener Configuration on Server

After grid installation is completed you can verify the SCAN Listener configuration on your server -
  • At the $GRID_HOME/network/admin directory you will have two listener related files.
                 -rw-r--r-- 1 grid oinstall 887 Jul 13 09:33 listener.ora
                 -rw-r--r-- 1 grid oinstall 375 Jul 13 09:33 endpoints_listener.ora

example of listener.ora file showing three scan listeners entries

LISTENER_SCAN3=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN3)))) # line added by Agent
LISTENER_SCAN2=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2)))) # line added by Agent
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))) # line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))) # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN2=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN3=ON # line added by Agent


Check Status of SCAN IPs and SCAN Listener

srvctl command can be used to check the status of SCAN IPs and SCAN listener

  [grid@db1  admin]$ srvctl status scan
  SCAN VIP scan1 is enabled
  SCAN VIP scan1 is running on node db2
  SCAN VIP scan2 is enabled
  SCAN VIP scan2 is running on node db1
  SCAN VIP scan3 is enabled
  SCAN VIP scan3 is running on node db1

Note that two SCAN IPs are online on node db1 and one is online on db2.




No comments:

Post a Comment