现象如上图,测试数据库和远程数据库是通的,那么排除网络问题。
请教公司的数据大神,给了我三个SQL:
select * from user_db_links where db_link='HSHR'; -- 结果为空
select * from all_db_links where db_link='HSHR'; -- 结果为空
select * from dba_db_links where db_link='HSHR'; -- 有结果
意见:这个报错一般是指,这个dblink不是public的,也不是你登录的这个帐号的,帐号看不到这个dblink.
豁然开朗。当初是在abms用户下创建的dblink,但是想在qx下用,所以找不到这个dblink。说明当初创建时漏了public关键字。删除了这个dblink,重新create public database link 即可。
最后需要注意一个问题:当database link和public database link共存时,会优先查找database link,所以必须把database link删掉,以免以后出现不必要的麻烦(不一致)