That is one reason, but the LOCAL_LISTENER parameter is also sent to
the remote listeners when each instance registers with the remote
listener. It is the contents of the local_listener parameter that is
sent to the client when that client is redirected to a different node
than the one to which it is connected (in the case of server-side load
balancing). This is important--the contents of the local_listener
parameter must be able to be used by the client. For example, if you
have
local_listener=(address=(protocol=tcp)(host=racnode2-vip)(port=1521))
then that means that the client has to be able to resolve the DNS name
"racnode2-vip" correctly since that is the address to which the client
will connect when redirected. It is possible, if you set the
local_listener incorrectly, to make all server-side load balanced
connections fail. In this example, if the server domain was
corp.dannorris.net
and the client domain was
sales.dannorris.net, then the
connections would likely fail because
racnode2-vip.sales.dannorris.net
is not in DNS, only
racnode2-vip.corp.dannorris.net
is registered.
This is a common oversight. local_listener is not only used to locate
the listener on the same node where the instance is running. It is also
used in RAC to redirect client requests to itself if that connection is
redirected from another (remote) node. Therefore, I view the contents
of local_listener to be much more important and critical than the
contents of remote_listeners. remote_listeners is only used at instance
registration time while local_listener is used routinely as new client
connections are load balanced within the cluster.
I wrote a blog post about this a while ago at
http://www.dannorris.com/2008/07/21/tns-listener-configuration-for-oracle-rac/
Hope that helps and that I didn't hijack this thread too far away from
the intended purpose.
Dan