背景:由于节点1系统出现问题,把节点1的服务漂移到节点2(但是并没有把vip漂到节点2),这个情况下,从客户端连接RAC DB的时候会间歇性出现ora-12545的错误。

解决方法:在节点1和节点2上设置local_listener

节点1

local_listener=’(address=(protocol=tcp)(host=vip1)(port=1521))

节点2

local_listener=’(address=(protocol=tcp)(host=vip2)(port=1521))

 

参考的metalink id ID 364855.1

Applies to: Oracle Net Services - Version: 9.2.0.8.0 to 11.1.0.7.0 - Release: 9.2 to 11.1
Information in this document applies to any platform.
Checked for relevance on 9-APR-2010.

Symptoms

When we try to connect to a RAC service name we sometimes get redirected by the first node's listener to the public address/hostname of the second node instead of its VIP address. An ORA-12545 error may be generated if that public hostname is not configured in DNS.

We were expecting the connection to eventually be redirected to the VIP of the other node.

Cause

The Database on one RAC node remote registers with the wrong local IP address to the listener on the other RAC node (e.g. the public IP address instead of the wanted VIP address).

The PMON process handles database registration to the local and remote listeners. For remote listeners registration PMON will have to find out what is the IP address of the local system in order to present it to the remote listener as database contact address.

In the default Oracle configuration, for hosts which have more than one IP address configured on the network interfaces,  it is undefined which IP address will be selected for remote registration.

Solution

Modify the local_listener database parameter to point to the local VIP address. For the parameter value use either an alias name which contains in the DESCRIPTION field only the VIP address or use an explicit connection statement like the following:

alter system set LOCAL_LISTENER="(ADDRESS=(PROTOCOL=TCP)(HOST=<VIP_address>)(PORT=1521))" scope=both sid='instance_name';

Where "instance_name" is the unique instance name.   Issue this statement for all instances in the cluster.

The LOCAL_LISTENER database parameter will give PMON a hint in respect of which IP address it should use for remote registration with other nodes' listener(s).