错误描述:
服务器A & B:WINDOWS2003 server Oracle 10g
需要在服务器A上建立DBLINK,连接上服务器B上的数据库。
执行步骤:
1、在A中的tnsname中建立服务器B上的数据库的连接描述符
2、在A中以sys身份建立DBLINK
连接测试:
conn as
select * from
提示错误:ora-12154 无法解析指定的连接描述符
原因分析:
1、检查tnsname.ora文件,确认连接符和服务器名、Oracle服务名无误
2、检查global name,确认无误
3、A服务器用SQL PLUS连接B数据库,成功
4、在B服务器上建立A的DBLINK,成功
从上面的结果可以看出,一定是A服务器的Oracle设置有问题,而且从提示上看,只能是Tnsname的问题。A和B服务器唯一不同的就是,B只装了数据库,而A同时装了数据库和客户端。
经过小栋的提醒,突然想起来,A应该有两个tnsname,而我只改了client端的。
解决方法:
%ORACLE_HOME%/tnsname改完之后,成功查出结果。
借此机会感谢小栋!
tips: 如果连接的是UNIX服务器上的数据库,tnsname中的host只能填写IP地址。
发现,即使是SELECT 一个DBLINK,也会有COMMIT按钮,说明有可能锁住远程表。查找相关资料,大致意思是属于分布式查询,以事务形式提交,因此在查询完后尽量使用COMMIT或ROLLBACK来释放锁。