Oracle Generic DB Link无法正常工作

时间:2009-06-25 15:55:21

标签: database oracle postgresql odbc dblink

我正在尝试使用oracle的hsodbc通用数据库链接驱动程序从我的oracle 10gr2数据库服务器访问postgresql数据库。我想我已经配置了所有内容但是在尝试远程查询后我从sqlplus promt收到此错误。

SQL> select * from temp_user@intranet;
select * from temp_user@intranet
                        *
ERROR at line 1:
ORA-28545: error diagnosed by Net8 when connecting to an agent
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: preceding 2 lines from INTRANET

如果我使用linux命令行中的“isql”(换句话说只测试odbc连接),查询就可以了。

我输入“isql intranet”(intranet是odbc连接的名称) 我收到提示我从temp_user输入select *,我在屏幕上收到了我的157条记录。

所以我知道odbc配置设置正确。这是我为oracle所做的。

%oracle_home/hs/admin/inithsodbc.ora
HS_FDS_CONNECT_INFO = intranet
HS_FDS_TRACE_LEVEL = OFF
HS_FDS_SHAREABLE_NAME = /usr/bin/ODBCConfig
%oracle_home/network/admin/tnsnames.ora
INTRANET =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.1)(PORT = 5432))
    )
    (CONNECT_DATA =
      (SID = INTRANET)
    )
    (HS = OK)

%oracle_home/network/admin/listener.ora
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = INTRANET)
      (PROGRAM = hsodbc)
      (SID_NAME = INTRANET)
      (ORACLE_HOME = /home/oracle/app/OraHomeTEST)
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracledb.andersen-const.com)(PORT = 5432))
    )
  )

我重新启动了监听器。它的状态如下。

Services Summary...
Service "INTRANET" has 1 instance(s).
  Instance "INTRANET", status UNKNOWN, has 1 handler(s) for this service...

然后我从数据库服务器命令行进入sqlplus并执行以下操作。

drop database link intranet;

使用'intranet'创建数据库链接Intranet连接到由apassword标识的用户;

这很成功。

然而,当我跑

 select * from temp_user@intranet

我收到错误

ERROR at line 1:
ORA-28545: error diagnosed by Net8 when connecting to an agent
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: preceding 2 lines from INTRANET

我花了很多时间回顾配置和尝试的事情,我总是得到这个错误。

任何人都有任何好主意,

1 个答案:

答案 0 :(得分:1)

“tnsping intranet”报告的内容是什么?

您确定您的hsodbc prorgram位于网关安装的Oracle_home / bin目录中吗?你的LD_LIBRARY_PATH设置正确吗?

我相信你的LD_LIBRARY_PATH应该是$ ORACLE_HOME / lib。对不起,不确定,因为这些天我对* Nix做的不多。