2012-02-22 57 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