使用DB LINK从Oracle连接到Postgres可以获得NativeErr 202

时间:2016-09-14 22:00:00

标签: oracle postgresql dblink

我按照here的说明从Oracle DB客户端内部连接到PostgreSQL服务器,并在Postgres表上执行查询。

Oracle版本:Oracle Database 12c企业版12.1.0.2.0版 - 64位

Postgres版本: x86_64-unknown-linux-gnu上的PostgreSQL 9.4.4,由gcc编译(Debian 4.7.2-5)4.7.2,64位

我运行像这样的查询时遇到的错误

select * from "myschema.mytable"@PG_LINK
来自Oracle客户端的

是:

ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
connction string lacks some options {08001,NativeErr = 202}
ORA-02063: preceding 2 lines from PG_LINK

(如果构建这个的开发人员有常识来说明缺少哪些选项以及连接字符串在哪里,而不是说“某些选项”,那会很好!)

我可以使用psql命令从Oracle DB服务器连接到Postgres服务器,因此连接不是问题。

我甚至更新了Postgres服务器上的pg_hba.conf,以便像这样明确访问Oracle服务器:

# added to test Oracle's PG LINK
host    all     all     10.XX.XXX.XXX/32       md5
# added to test Oracle's PG LINK
host    all     all     192.XXX.XX.X/32        md5

并重新启动Postgres服务器。 (以10.开头的地址是内部服务器IP,192.是Oracle服务器的公共IP。)

我将身份验证从md5更改为trust,重新启动了Postgres,重新启动了Oracle侦听器,删除并再次重新创建了DB LINK,但同样的错误正在发生。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用unixODBC驱动程序和odbcinst_64 -jisql_64工具。

检查" DRIVERS"以及"用户数据源"文件。

  

odbcinst_64 -j

     

DRIVERS ............:/.../ odbcinst.ini

     

USER DATA SOURCES ..:/ .. / /。odbc.ini

然后isql_64 -v DNS UID PWD

请注意,使用dg4odbc时,您应该使用64位驱动程序。

致以最诚挚的问候,

S上。