我已经在tnsnames.ora这个文件中进行了如下配置:
HNSB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.123.166.133)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = HNSB)
    )
  )
用户名和密码都是HNSB,并且在PL/SQL中连接正常,在tnsnames.ora这个文件中还有如下配置:
QYD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.123.166.186)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = cx)
    )
  )
在PL/SQL中成功登陆到QYD后,建立了如下连接:
create database link HNSB.US.ORACLE.COM
  connect to HNSB identified by HNSB
  using 'HNSB';
现在在QYD中远程查询时出错:ORA-12154 无法处理服务名!
select * from [email protected]
请高手们帮帮忙,谢谢!

解决方案 »

  1.   

    问题已解决,原来是oracle版本的问题,我用的是oracle92,服务器用的是oracle10g,再版本之间用上面的方法是没有问题的,不同版本的dblink这样建立就可以了:
    create database link HNSB.US.ORACLE.COM
      connect to HNSB identified by HNSB
      using '(DESCRIPTION =(ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.123.166.133)(PORT = 1521)))
          (CONNECT_DATA =(SERVICE_NAME = HNSB)))';
    可是这分该给谁呢?
    像这样建立dblink后,我就建视图进行远程连接访问,可是在查询视图之后(直接查询远程表也是一样),总会有事务还在运行,怎么能让它自动commit或rollback呢?
    请大家帮忙!