ORACLE-ORA-12154:TNS:could not resolve the connect identifier specified

按照网上的一些教程,在创建完DBLINK之后,使用之前的DBLINK标识访问远程库数据的时候就报以下错误

ORA-12154:TNS:could not resolve the connect identifier specified

我就纳闷了,明明是按照网上的步骤来创建的,为啥别人的就可以,我的就失败了?

以下是创建的语句:

1.查询当前用户是否具有创建DBLINK的权限

select * from user_sys_privs 
 where privilege like upper('%DATABASE LINK%'); 

2.给用户赋创建DBLINK的权限

grant create public database link,drop public database link to scott;  

3.查看TNS文件里的远程数据库标识(remote_db),一般如下格式:

remote_db =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = remote_ip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

注:上面的remote_ip是远程数据库的IP地址

4.创建DBLINK

create public database link remote_db
connect to orcl identified by a123
using 'remote_db' ;  

注意:如果密码是纯数字的话,会一直报“ORA-00933:SQL命令未正确结束”。我的测试数据库版本是11GR2。

网上一些人说10G以前才会出现这样的错误,但是,我没有去验证这个说法了。反正我将密码修改成非全数字后就没有报这个错误。


然后,创建成功后,我运行以下语句的时候却报ORA-12154错误

select * from user_tables@remote_db ; 


由于我一直使用PL/SQL DEVELOPER10开发,而这个版本是不支持64位的数据库系统。所以,我就使用以下方法来访问数据库

64位oracle无法使用pl/sql dev 解决

所以,远程数据库的TNS配置标识,我也只是在客户端里配置。

后来看了下网上的一些帖子说,要在服务器的TNS文件里也加上remote_db的配置。

于是我将下面的配置添加到服务器的TNS文件里,问题解决。

remote_db =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = remote_ip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )


你可能感兴趣的:(ORACLE,ORACLE,ORA-12154)