两台服务器,其中一台是应用服务器,另一台是数据库服务器,互相可以ping通IP地址或FQDN
应用服务器可以telnet数据库的1521端口
应用服务器上的ora文件内容如下:
listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.1.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 应用服务器FQDN)(PORT = 1521))
    )
)tnsname.ora
XXX =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 数据库IP地址)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xxx)
    )
  )XXX_数据库主机名 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 数据库IP地址)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xxx)
    )
)数据库服务器上的ora文件内容如下:
listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.1.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 数据库FQDN)(PORT = 1521))
    )
)tnsname.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.1.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.XXX =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 数据库FQDN)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xxx)
    )
)在应用服务器上尝试使用sqlplus命令访问数据库,出现标题所示的错误信息。
在数据库服务器上使用sqlplus命令无问题已经尝试过修改应用服务器上的ora文件中的HOST为数据库的IP或FQDN,错误依旧

解决方案 »

  1.   

    lisntener 和 tnsnames 都用 ip 地址
      

  2.   

    是RAC环境吗?如果是这个错误可能是个bug
      

  3.   

    应该不是,我这个系统中,只有一台应用服务器,一台ORACLE数据库服务器,以及一个磁盘阵列。
      

  4.   


    如果是单实例出现这个问题,可能是主机名不能被识别吧linux主机如果想通过主机名来访问其他机器,是必须配置hosts文件来解析的windows也是一样所以,要么配置hosts文件,要么直接用ip地址,就可以访问了。
      

  5.   

    在应用服务器上尝试使用sqlplus命令访问数据库,出现标题所示的错误信息应用服务器上如何操作的?sqlplus 用户名/密码@XXX_数据库主机名
      

  6.   

    经测试,其实只需要在客户端主机的/etc/hosts文件中,添加目标数据库的vip的解决信息便可以解决(测试数据库版本11G R2)