在Windows中使用oracle_fdw扩展创建时的问题

时间:2017-07-12 22:25:58

标签: windows postgresql oracle-fdw

我试图在postgresql 9.6中安装和使用oracle_fdw,但是每次运行以下命令时我都会遇到同样的问题:

create extension oracle_fdw;
ERROR:  could not load library "D:/PostgreSQL/pg96/../pg96/lib/postgresql/oracle_fdw.dll": 
    The specified module could not be found.

这里有两件事很奇怪:

  1. 它正在寻找dll的文件夹,有一个" .."在中间,所以它似乎只应该查看D:\PostgreSQL\pg96\lib,但我也有文件夹D:\PostgreSQL\pg96\lib\postgresql

  2. 我在系统中设置了以下变量,但似乎没有反映在命令中:

    Path: D:\PostgreSQL\pg96\lib\;C:\Program Files\Oracle Instant Client\instantclient_12_2; 
        D:\PostgreSQL\pg96\lib\postgresql
    
  3. 你们能帮帮我吗?我真的需要有关如何使其发挥作用的具体说明。

    韩国社交协会!

3 个答案:

答案 0 :(得分:0)

这看起来与您正在使用的Postgres发行版有关,而不是oracle_fdw本身。接触分发包装商可能是一个更好的主意。 查看错误中的路径我假设您使用的是Bigsql发行版。您可以尝试在他们的反馈页面上发布问题,他们通常都非常敏感。

答案 1 :(得分:0)

路径中的..很奇怪,但不应该是个问题。参数dynamic_library_path的值是什么?

oracle_fdw.dll中有D:/PostgreSQL/pg96/lib/postgresql吗?

我认为oci.dll位于C:\Program Files\Oracle Instant Client\instantclient_12_2 您是否检查过所有涉及的程序(PostgreSQL,oracle_fdw和Oracle)是32位还是64位?

如果一切正常,问题必定是oci.dll不在PostgreSQL服务器的共享库搜索路径上。

您确定PostgreSQL服务已经显示了PATH设置吗?更改了PATH环境变量后,您是否重新启动了PostgreSQL?

答案 2 :(得分:0)

许多人遇到了这个问题,我在大多数情况下都得到了恢复。 Oracle客户端库是使用特定版本的Visual C ++编译的。因此,我们需要在系统中使用特定版本的Visual Studio的Visual C ++可再发行组件包。 第二个依赖来自oracle_fdw.dll。使用Visual C ++ 2013准备了最新的oracle_fdw.dll社区版本。因此,我们需要在系统中使用Visual C ++ 2013 Redistributable软件包。 一旦解决了所有这些依赖关系,它就会起作用。

或者,您可以使用BigSQL项目准备的oracle_fdw.dll。由于项目是使用MSYS2构建的,因此Visual C ++没有任何依赖性。但是,无法避免Oracle客户端库创建的依赖性。