有一台测试用数据库,连接数据库提示:ORA-12505:TNS:监听程序当前无法识别连接描述符中所给出的SID

首先我考虑到是否是本机电脑上的tnsnames.ora配置是否正确:

 

HBVOD_192.168.2.11 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.11)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SID = hbvod)

      (SERVER = DEDICATED)

    )

  )

检查SID、数据库地址(HOST)、PORT等都是正确的。

SSH登录到数据库上,查看tnsnames.ora是否正确

 

cat $ORACLE_HOME/network/admin/tnsnames.ora

 

HBVOD =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = hbvod)

    )

  )

查看配置也是正确的,但是我观察HOST = oracle ,也就是我的数据库主机名是oracle ,我的数据库地址是192.168.2.11,我立即在数据库本机上ping oracle看是否可以Ping通就返回地址是否是192.168.2.11,发现无法ping通oracle.

vi  /etc/hosts  发现以下对应关系:

192.168.2.2    oracle          localhost.localdomain localhost

原来hosts对应关系不对,把hosts配置文件改动成如下:

192.168.2.11    oracle          localhost.localdomain localhost

再次用PL*SQL登录192.168.2.11数据库,成功登录。

后来经过回忆,原来是数据库更改过IP地址,但是没有更新相应的HOSTS配置文件,造成无法解析数据库名称导致无法使用PL*SQL登录数据库。