One of the maintenance challenges with RAC is maintaining all of the client connection files (TNSNAMES.ora) every time a change is made to a cluster database configuration. A new feature of Oracle Database 11g RAC databases, and a primary benefit, is the Single Client Access Name (SCAN). Read on to learn more...
One of the new features of Oracle Database 11g Real Application Cluster
(RAC) databases is the ability to have a single connection setting for client
systems to use when connecting to a RAC database. The primary benefit of a
Single Client Access Name (SCAN) is not having to update client connection
information (such as TNSNAMES.ora) every time you add or remove nodes from an
existing RAC cluster.
Clients use a simple EZconnect string and JDBC connections can use a
JDBC thin URL to access the database, which is done independently of the
physical hosts that the database instances are running on. Additionally, SCAN
automatically provides both failover and load balancing of connects, where the
new connection will be directed to the least busy instance in the cluster by
default.
It should be noted here that because EZconnect is used with SCAN, the
SQLNET.ora file should include EZconnect as one of the naming methods, for
example:
NAMES.DIRECTORY_PATH=(tnsnames,ezconnect,ldap)
An EZconnect string would look like
sqlplus user/pass@mydb-scan:1521/myservice
A JDBC thin string would look like
jdbc:oracle:thin@mydb-scan:1521/myservice
It's highly recommended that the clients are Oracle 11g R2 clients, to allow
them to fully take advantage of the failover with the SCAN settings.
The TNSNAMES.ora file would now reference the SCAN rather than the VIPs as
has been done in previous versions. This is what a TNSNAMES entry would be:
MYDB
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=mydb-scan.ORACLE.COM)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=myservice.ORACLE.COM)))
There are two methods available for defining the SCAN. These are to use your
corporate DNS to define the SCAN; the second option is to use Grid Naming
Service.
Using DNS
To use the DNS method for defining your SCAN, the network administrator must
create a single name that resolves to three separate IP addresses using
round-robin algorithms. Regardless of how many systems are part of your
cluster, Oracle recommends that 3 IP addresses are configured to allow for
failover and load-balancing.
It is important that the IP addresses are on the same subnet as the public
network for the server. The other two requirements are that the name (not
including the domain suffix) are 15 characters or less in length and that the
name can be resolved without using the domain suffix. Also, the IP addresses
should not be specifically assigned to any of the nodes in the cluster.
You can test the DNS setup by running an nslookup on the scan name two or
more times. Each time, the IP addresses should be returned in a different
order:
nslookup mydatabase-scan
Grid Naming Solutions (GNS)
Using GNS assumes that a DHCP
server is running on the public network with enough available addresses to
assign the required IP addresses and the SCAN VIP. Only one static IP address
is required to be configured and it should be in the DNS domain.
Oracle Grid Infrastructure Installation
The Oracle Grid Infrastructure is a single Oracle Home that now includes both
Oracle Clusterware and Oracle Automatic Storage Management (ASM). The Oracle
Grid Infrastructure is a required prerequisite for Oracle 11g RAC R2. As part
of the installation process for Grid Infrastructure, you will be asked to
provide the cluster name, SCAN name and listener port for the SCAN listeners.
Optionally you can also provide Grid Naming Service (GNS) information, which
includes the GNS Sub Domain Name and the GNS VIP Address.
Specifying a SCAN that resolves to at least one IP address is essential to
the installation and configuration of the Grid Infrastructure and RAC and the
installer will not allow you to proceed past this step until a suitable SCAN
has been provided.
There is a workaround available using /etc/hosts if you have the ability to
set up a DNS or GNS based solution. However, with /etc/hosts you will only be
able to set up 1 SCAN and it would have to resolve to exactly 1 IP address. You
will also have to ensure that you change the /etc/hosts file on every system in
your cluster.
This workaround is primarily available for upgrading from previous versions
to Oracle 11g R2, and you should set up either a DNS or GNS based solution
after the upgrade is complete.
As part of the installation, the OUI will create SCAN listeners on each node
in the cluster, which are not replacements for a regular listener.
Database Parameters for SCAN
The database will register each instance to the scan listener using the
REMOTE_LISTENER parameter in the spfile. Oracle 11g R2 RAC databases will only
register with the SCAN listeners. Upgraded databases, however, will continue to
register with the local listener as well as the SCAN listener via the
REMOTE_LISTENER parameter. The LOCAL_LISTENER parameter would be set to the
node VIP for upgraded systems.
The REMOTE_LISTENER parameter, rather than being set to an alias that would
be in a server side TNSNAMES file (as it has been in previous versions), would
be set simply to the SCAN entry: The alter command would be
ALTER SYSTEM SET REMOTE_LISTENER=mydb-scan.oracle.com:1521
SRVCTL Commands for SCAN
Oracle's SRVCTL utility has been expanded to include a number of new
commands specifically for SCAN. Some of these new commands are listed in the table
below:
New SRVCTL Command
|
What it does
|
srvctl config scan
|
Shows the current SCAN configuration
|
srvctl config scan_listener
|
Shows the existence and port numbers for the SCAN listeners
|
srvctl add scan -n cluster01-scan
|
Adds new SCAN information for a cluster
|
srvctl remove scan -f
|
Removes SCAN information
|
srvctl add scan_listener
|
Adds a new SCAN listener for a cluster on the default port of 1521
|
srvctl add scan_listener -p 65001 ## non default port number ##
|
Adds a new SCAN listener on a different port
|
srvctl remove scan_listener
|
Removes the SCAN listener
|
srvctl modify scan -n cluster_scan
|
Modifies SCAN information (used when changing SCAN to DNS after initially
using /etc/hosts)
|
srvctl modify scan_listener -u
|
Modifies the SCAN listener information to match the new SCAN VIP
information from the modify scan command
|
New SQL*NET Parameters
Two new parameters are available for the TNSNAMES entries. These are
CONNECT_TIMEOUT=nn which specifies a time in seconds for the connection to the
database to be established. The second is RETRY_COUNT. These would be used in
conjunction with having more than one SCAN configured for your cluster. The
TNSNAMES entry would look like this:
MYDB
(DESCRIPTION=(CONNECT_TIMEOUT=15)(RETRIES=5)
(ADDRESS=(PROTOCOL=TCP)(HOST=mydb-scan1.ORACLE.COM)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=mydb-scan2.ORACLE.COM)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME=myservice.ORACLE.COM)))
Conclusion
Overall, this new feature will save DBAs some additional work and time when
they are changing the structure of their RAC databases, and still be able to
maintain the advantages of load balancing and failover of client connections to
the listeners.
For more information on SCAN, you may refer to My Oracle Support (Metalink)
Note # 887522.1
»
See All Articles by Columnist
Karen Reliford