Oracle RAC 11g Release 2 supports client connections across multiple networks. This release also provides load balancing and failover of client connections within the network that they are connecting. To add a listener for the EECS connections coming in on the IB network, first add a network resource for the IB network with Virtual IP addresses.
Examples In this procedure use the default IB networking subnet: 192.168.28.0 / 255.255.252.0 (stor_ipmp0 / IB PKEY 8503).
Ensure that these IP addresses are not used.
For example:
# Added for Listener over IB
192.168.28.21 ssc01db01-ibvip.example.com ssc01db01-ibvip
192.168.28.22 ssc01db02-ibvip.example.com ssc01db02-ibvip
# /u01/app/grid/product/11.2.0.2/bin/srvctl add network -k 2 -S 192.168.28.0/255.255.252.0/stor_ipmp0
# /u01/app/grid/product/11.2.0.2/bin/crsctl stat res -t | grep net
ora.net1.network
ora.net2.network -- Output indicating new Network resource
or
# /u01/app/grid/product/11.2.0.2/bin/srvctl config network -k 2
Network exists: 2/192.168.28.0/255.255.252.0/stor_ipmp0, type static -- Output indicating Network resource on the 192.168.28.0 subnet
srvctl add vip -n ssc01db01 -A ssc01db01-ibvip/255.255.252.0/stor_ipmp0 -k 2
srvctl add vip -n ssc01db02 -A ssc01db02-ibvip/255.255.252.0/stor_ipmp0 -k 2
srvctl add listener -l LISTENER_IB -k 2 -p TCP:1522,/SDP:1522
Either enter the full tnsnames syntax in the initialization parameter or create entries in tnsnames.ora in the $ORACLE_HOME/network/admin directory. The tnsnames.ora entries must exist in the GRID_HOME.
This example first updates tnsnames.ora. Complete this step on each Database Domain in the cluster with the correct IP addresses for that Database Domain. LISTENER_IBREMOTE should list all other Database Domains that are in the cluster. DBM_IB should list all Database Domains in the cluster.
EXA1SB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = etc7m7-exa1-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = exa1sb1) ) ) EXA1SB1_IB = (DESCRIPTION = (LOAD_BALANCE=on) (ADDRESS = (PROTOCOL = TCP)(HOST = etc7m7-c0p1-d1-ibvip)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = etc7m7-c1p1-d1-ibvip)(PORT = 1522)) (ADDRESS = (PROTOCOL = SDP)(HOST = etc7m7-c0p1-d1-ibvip)(PORT = 1522)) (ADDRESS = (PROTOCOL = SDP)(HOST = etc7m7-c1p1-d1-ibvip)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = exa1sb1) ) ) LISTENER_IPLOCAL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = etc7m7-c0p1-d1-vip)(PORT = 1521)) ) ) LISTENER_IPREMOTE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = etc7m7-exa1-scan)(PORT = 1521)) ) ) LISTENER_IBLOCAL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = etc7m7-c0p1-d1-ibvip)(PORT = 1522)) (ADDRESS = (PROTOCOL = SDP)(HOST = etc7m7-c0p1-d1-ibvip)(PORT = 1522)) ) ) LISTENER_IBREMOTE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = etc7m7-c1p1-d1-ibvip)(PORT = 1522)) (ADDRESS = (PROTOCOL = SDP)(HOST = etc7m7-c1p1-d1-ibvip)(PORT = 1522)) ) )
Connect to the database instance as sysdba.
SQLPLUS> alter system set listener_networks='((NAME=network2) (LOCAL_LISTENER=LISTENER_IBLOCAL)(REMOTE_LISTENER=LISTENER_IBREMOTE))', '((NAME=network1)(LOCAL_LISTENER=LISTENER_IPLOCAL)(REMOTE_LISTENER=LISTENER_IPREMOTE))' scope=both;
srvctl stop listener -l LISTENER_IB
srvctl start listener -l LISTENER_IB