Accessing a Standby System like Oracle Dataguard or Dbvisit Standby via Transparent Application Failover (TAF) is a standard approach. It works well. Without any obvious hints.
But what, if the customer tells you, that the clients used are only able to work with one SINGLE IP ADDRESS? And if there are hundreds of devices. What do you do, in case of a switch- or failover? Reconfigure all of them within minutes?
First idea: rename the new primary system (including the IP) to the one used by all devices. But, no, this is not a good idea. In case of a switchover one would have to change the whole setup of the standby definition. What a hassle!
The solution: change your basic architecture and use the Oracle Remote Listener Option!
How does it work?
First let’s define the setup: we have two machines working as a Primary/Standby system. Let’s call them “M-A” and “M-B” for machine A and machine B respectively.
Here is, where a third machine (could be a virtual machine or the machine where your e.g. Cloud Control resides) comes into play. Let’s call it “M-RL” for machine RemoteListener.
On this machine we have to install the Oracle software. No, not the full stack, “only” the Clusterware (This is for the sake of being license compliant. With this type of installation no extra license is needed!).
Now this machine “M-RL” has to have the name and IP of the machine all client devices access. This machine just works as kind of a relay. It routes all requests to the actual primary database running on “M-A” or “M-B”.
So how is the setup done? Easy!
On the remote listener machine “M-RL” the following line has to be added to listener.ora and the listener process has to be restarted:
On both primary/standby machine one parameter has to be added or changed:
ALTER SYSTEM SET REMOTE_LISTENER = "(ADDRESS=(PROTOCOL=TCP)(HOST=M-RL)(PORT=1521))";
And here is a sample tnsnames.ora entry:
(ADDRESS = (PROTOCOL = TCP)(HOST = M-RL)(PORT = 1521))
(SERVICE_NAME = orcl)
That’s it! The only command that has to be added to a switchover, is to stop the listener on the new standby machine.
OK, I have to admit, this is a very technical article. But in case you have devices, that only know of ONE IP address, this is a feasible and easy solution.
As always, comments are very welcome!