数据库服务器是的操作系统是linux(red hat),
客户端的tns配置如下:
GY1 =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))  //192.168.0.1是漂移地址。
  )
  (CONNECT_DATA =
  (SERVICE_NAME = orcl)
  )
  )登陆的时候经常报错。ORA-12545: 因目标主机或对象不存在,连接失败,报错后重新登陆,还能登陆上去。
10次的话,有5次正常,5次不正常吧。

解决方案 »

  1.   

    你的浮动IP机制有问题吧,
    浮动IP是如何实现的?
      

  2.   

    ORA-12545 TNS:name lookup failureCause: A protocol specific ADDRESS parameter cannot be resolved. 
    Action: Ensure the ADDRESS parameters have been entered 
    correctly; the most likely incorrect value is the node name.Copyright (C) 1995, Oracle Corporation
    错误消息提示的很清楚,你在配置TNS LISTENER的时候DB主机地址有误,你是不是用的IP协议?
    这时候你可能指定的主机名没有办法被DNS解析,方法:直接在主机地址里输入SERVER的IP地址使用tnsping来测试一下,如:
    C:\>tnsping 192.168.0.2
    TNS Ping Utility for 32-bit Windows: Version 8.1.7.0.0 - Production on 04-4月 -2
    005 15:01:54
    (c) Copyright 1997 Oracle Corporation.  All rights reserved.
    TNS-03505: 未能分解名称-------------------------------------------------------------------
    看看你的ORACLE数据库是否没有起来,或者IP地址改变了!
    再看看TNSNAMES.ORA文件中host name是不是正确!
      

  3.   

    打开:%Oracle_Hoem%/network/admin/listener.ora文件 在 
    SID_LIST_LISTENER = 
    (SID_LIST = 
    (SID_DESC = 
      (SID_NAME = PLSExtProc) 
      (ORACLE_HOME = D:\Oracle\Oracle10g) 
      (PROGRAM = extproc) 

    后面添加: 
    (SID_DESC = 
      (GLOBAL_DBNAME = ORACLE) 
      (ORACLE_HOME = D:\Oracle\Oracle10g) 
      (SID_NAME = ORACLE) 
      ) GLOBAL_DBNAME与SDI相同最后变成: 
    SID_LIST_LISTENER = 
    (SID_LIST = 
    (SID_DESC = 
      (SID_NAME = PLSExtProc) 
      (ORACLE_HOME = D:\Oracle\Oracle10g) 
      (PROGRAM = extproc) 
    ) (SID_DESC = 
      (GLOBAL_DBNAME = ORACLE) 
      (ORACLE_HOME = D:\Oracle\Oracle10g) 
      (SID_NAME = ORACLE) 
      ) 
      

  4.   

    把客户端的tns配置改成如下:
    GY1 =
      (DESCRIPTION =
      (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521)) //192.168.0.1是漂移地址。
      )
      (CONNECT_DATA =
      (SID = orcl)
      )
      )
    SERVICE_NAME方式,通常需要给出数据库的完整名(比如orcl.UUCP.COM),而SID则不需要。