pl/sql(windows xp操作系统)连接oracle9.2.0.7.0(AIX5.3操作系统) 时而没问题,时而报“ORA-12545因目标主机或对象不存在,连接失败” 数据库采用IBM HACMP双机热备(地址为:10.156.200.12,10.156.200.18),以下是客户端tnsnames.ora内容: lghx_LBN = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.156.200.12)(PORT = 1521)) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.156.200.18)(PORT = 1521)) 
      (LOAD_BALANCE = yes) 
    ) 
    (CONNECT_DATA = 
      (SERVICE_NAME = lbn
    ) 
  ) lgex_LBN = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.156.200.12)(PORT = 1526)) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.156.200.18)(PORT = 1526)) 
      (LOAD_BALANCE = yes) 
    ) 
    (CONNECT_DATA = 
      (SERVICE_NAME = lbn
    ) 
  ) 
采用SERVICE_NAME访问服务器会时而没问题,时而有问题。
如果采用SID访问,则一直没有问题:
lghx_LBN = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.156.200.12)(PORT = 1521)) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.156.200.18)(PORT = 1521)) 
      (LOAD_BALANCE = yes) 
    ) 
    (CONNECT_DATA = 
      (SID = lbn1
      (SERVER = DEDICATED)
    ) 
  ) 
请高手指点。

解决方案 »

  1.   

    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:local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = <VIP_address>) (PORT = 1521))'
      

  2.   

    Maybe other problems:
    Use the full hostname.domain_name in remote_listener configuration in tnsnames.ora. Restart the instance and listener, check lsnrctl service output, make sure full hostname.domain_name show up.eg:
    in init.ora (or spfile)
    remote_listener=LISTENERS_R920in tnsnames.ora:
    LISTENERS_R920 =
       (ADDRESS_LIST =
         (ADDRESS = (PROTOCOL = TCP)(HOST = aulnx1.au.oracle.com)(PORT = 1527))
         (ADDRESS = (PROTOCOL = TCP)(HOST = aulnx2.au.oracle.com)(PORT = 1527))
       )