ORACLE 11G RAC 访问SCANIP ORA-12545

ORA-12545 or ORA-12537 Reported while Connecting to RAC through SCAN name [ID 970619.1]  

  修改时间 20-JAN-2010     类型 PROBLEM     状态 MODERATED  


In this Document
  Symptoms
  Cause
  Solution
  References





This document is being delivered to you via Oracle Support's Rapid Visibility (RaV) process and therefore has not been subject to an independent technical review.



Symptoms

Error ORA-12545 or ORA-12537 reported while trying to connect to 11gR2 Real Application Cluster (RAC) database through SCAN name

Cause

Client is able to resolve all Fully Qualified Domain Name (FQDN) SCAN and VIP name but not short ones(without domain name) as its in different domain; even though FQDN names were specified during Grid Infrastructure setup, due to bug 9150053 by default DBCA set database parameter local_listener to short node VIP name while database is created.

In following example, eotcs.us.oracle.com is SCAN name and eyrac1fv.us.oracle.com is one of the node VIP name, on client machine:

ping -c 1 eotcs.us.oracle.com
PING eotcs.us.oracle.com (120.0.0.207) 56(84) bytes of data.
64 bytes from 120.0.0.207: icmp_seq=1 ttl=64 time=0.034 ms

ping -c 1 ping eotcs
ping: unknown host eotcs

ping -c 1 eyrac1fv.us.oracle.com
PING eyrac1fv.us.oracle.com (120.0.0.211) 56(84) bytes of data.
64 bytes from 120.0.0.211: icmp_seq=1 ttl=64 time=0.034 ms

ping -c 1 ping eyrac1fv
ping: unknown host eyrac1fv


 

Solution

bug 9150053 will be fixed in 11.2.0.2 and above, though easy workaround is available:

1. Database level setting:

Modify pfile/spfile parameter local_listener to use FQDN VIP name or VIP.

SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=eyrac1fv.us.oracle.com)(PORT=1521))))' sid='b2no1';

Or 

SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=120.0.0.211)(PORT=1521))))' sid='b2no1';

And register with listener:

SQL> alter system register;


2. Per client setting:

Specify FQDN SCAN name in client tnsnames.ora and add all node VIP name/IP pairs to hosts file:

grep eyrac1fv /etc/hosts
120.0.0.211     eyrac1fv.us.oracle.com eyrac1fv


Or set search domain: in /etc/resolv.conf on Linux/Unix or "Append DNS suffixes" on Windows 

  Linux/Unix:

    grep search /etc/resolv.conf
    search  us.oracle.com


  Windows:

Network Connection => Property for Public Network => Internet Protocol (TCP/IP) => Advanced => DNS => Append these DNS suffices (in order)

请使用浏览器的分享功能分享到微信等