2012-02-22 63 views
2

我尝试此查询从Oracle:如何在Linux RedHat 64bit上将Oracle 10gR2上的dblink设置为Linux RedHat 64bit上的Postgresql 8.3?

select * from "a_table"@Postgres; 

以下是错误消息我得到:

ORA-28545: error diagnosed by Net8 when connecting to an agent 
Unable to retrieve text of NETWORK/NCR message 65535 
ORA-02063: précédant 2 lines de RECORD 
28545. 0000 - "error diagnosed by Net8 when connecting to an agent" 
*Cause: An attempt to call an external procedure or to issue SQL 
     to a non-Oracle system on a Heterogeneous Services database link 
     failed at connection initialization. The error diagnosed 
     by Net8 NCR software is reported separately. 
*Action: Refer to the Net8 NCRO error message. If this isn't clear, 
     check connection administrative setup in tnsnames.ora 
     and listener.ora for the service associated with the 
     Heterogeneous Services database link being used, or with 
     'extproc_connection_data' for an external procedure call. 
Erreur à la ligne 1, colonne 25 

这里是的tnsnames.ora

Postgres = 
    (DESCRIPTION = 
    (ADDRESS_LIST = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
    (SID = RECORD) 
    ) 
    (HS=OK) 
) 

这里是听众。 ora

在启动监听器后
LISTENER_HS = 
    (DESCRIPTION_LIST = 
    (DESCRIPTION = 
     (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1525)) 
     (ADDRESS = (PROTOCOL = IPC)(KEY = PNPKEY)) 
    ) 
    ) 
) 

SID_LIST_LISTENER_HS = 
    (SID_LIST = 
    (SID_DESC = 
     (SID_NAME = RECORD) 
     (ORACLE_HOME = /oracle/product/10.2.0) 
     (PROGRAM = hsodbc) 
     (ENVS = "LD_LIBRARY_PATH=/oracle/product/10.2.0/lib32:/oracle/product/10.2.0/hs/lib32:/user/lib") 
    ) 
    (SID_DESC = 
     (SID_NAME = PLSExtProc) 
     (ORACLE_HOME = /oracle/product/10.2.0) 
     (PROGRAM = extproc) 
    ) 
) 

注意,这里是输出

$ lsnrctl status LISTENER_HS 

LSNRCTL for Linux: Version 10.2.0.3.0 - Production on 22-FEB-2012 13:45:09 

Copyright (c) 1991, 2006, Oracle. All rights reserved. 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1525))) 
STATUS of the LISTENER 
------------------------ 
Alias      LISTENER_HS 
Version     TNSLSNR for Linux: Version 10.2.0.3.0 - Production 
Start Date    22-FEB-2012 13:45:05 
Uptime     0 days 0 hr. 0 min. 3 sec 
Trace Level    off 
Security     ON: Local OS Authentication 
SNMP      ON 
Listener Parameter File /oracle/product/10.2.0/network/admin/listener.ora 
Listener Log File   /oracle/product/10.2.0/network/log/listener_hs.log 
Listening Endpoints Summary... 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1525))) 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY))) 
Services Summary... 
Service "PLSExtProc" has 1 instance(s). 
    Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... 
Service "RECORD" has 1 instance(s). 
    Instance "RECORD", status UNKNOWN, has 1 handler(s) for this service... 
The command completed successfully 

这里initPostgres.ora

HS_FDS_CONNECT_INFO = Postgres 
HS_FDS_TRACE_LEVEL = DEBUG 
HS_FDS_TRACE_FILE_NAME = /oracle/product/10.2.0/hs/log/postgres.trc 
HS_FDS_SHAREABLE_NAME = /usr/lib/psqlodbc.so 

set ODBCINI= /etc/odbc.ini 

/oracle/product/10.2.0/hs/log/record.trc是空的。

我错过了什么?

的Oracle 10gR2中
完成RedHat的64位

PostgreSQL 8.3版本
完成RedHat的64位

编辑: 当我尝试手动ODBC驱动程序启动和运行检查,这是什么我得到:

$ isql postgres USER PASS -v 
[01000][unixODBC][Driver Manager]Can't open lib '/usr/lib/psqlodbc.so' : /usr/lib/psqlodbc.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou répertoire de ce type 
[ISQL]ERROR: Could not SQLConnect 

回答

2

我曾问Oracle论坛上的同一个问题,我得到了回应。

简单地说,我不能在Linux 64bit上使用hsodbc,Linux 32bit没有端口。 相反,我必须使用DG4ODBC与我的Oracle 10.2.0.3不兼容。 然后我的替代品之一:

  • 安装数据库网关ODBC 11.2.0.3
  • 迁移从Oracle 10.2.0.3到Oracle 10.2.0.4或更高
  • 或应用补丁5965763

详细的响应是here