有一台测试用数据库,连接数据库提示: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登录数据库。
转载于:https://blog.51cto.com/findyou/815057