Replication Agent for Oracle provides support for Oracle 10g and 11g RAC environments. When a Replication Agent for Oracle instance is initialized, the Oracle database is queried to determine how many nodes are supported by the cluster. Based on this information, Replication Agent automatically configures itself to process the redo log information from all nodes.
To process the redo log data from all nodes in an Oracle RAC cluster, the Replication Agent must execute from a location that has access to the same shared storage used by the Oracle nodes to store their redo data.
Configure Replication Agent to connect to a single Oracle instance by supplying the required host, port, and Oracle SID values to the pds_host_name, pds_port_number and pds_database_name configuration parameters. However, in an Oracle RAC environment, Replication Agent must be able to connect to any node in the cluster in the event that a node fails or otherwise becomes unavailable. To support the configuration of multiple node locations, Replication Agent supports connectivity to all possible RAC nodes by obtaining needed information from an Oracle tnsnames.ora file for one specified entry. As a result, instead of configuring individual host, port and instance names for all nodes, Replication Agent only requires the location of a tnsnames.ora file and the name of the TNS connection to use.
Sybase recommends that you point Replication Agent to a tnsnames.ora entry that contains the address for all nodes in the cluster.
For example, if this entry exists in a tnsnames.ora file for a three-node cluster, instruct Replication Agent to use that entry by providing the tnsnames.ora file location to the pds_tns_filename configuration property and specifying RAC10G as the value for the pds_tns_connection configuration property:
RAC10G = (DESCRIPTION = (ADDRESS_LIST = (LOAD_BALANCE = yes) (FAILOVER = ON) (ADDRESS = (PROTOCOL = TCP)(HOST = www.xxx.yyy.zz1) (PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = www.xxx.yyy.zz2) (PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = www.xxx.yyy.zz3) (PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = rac10g) ) )
The tnsnames.ora file must also contain a connect descriptor for each node in the cluster:
NODE1-VIP = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = www.xxx.yyy.zz1) (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = rac10g) (INSTANCE_NAME = node1-vip) ) ) NODE2-VIP = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = www.xxx.yyy.zz2) (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = rac10g) (INSTANCE_NAME = node2-vip) ) ) NODE3-VIP = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = www.xxx.yyy.zz3) (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = rac10g) (INSTANCE_NAME = node3-vip) ) )
If the tnsnames.ora file does not contain a connect descriptor for each node, Replication Agent will not be able to generate commit records correctly.
See the Replication Agent Reference Manual for details about pds_tns_filename and pds_tns_connection.