0

我正在尝试在 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
    

你们能帮助我吗?我真的需要关于如何使它工作的具体说明。

谢!

4

3 回答 3

0

你的..路径很奇怪,但应该不是问题。参数的值是dynamic_library_path多少?

oracle_fdw.dll在吗D:/PostgreSQL/pg96/lib/postgresql

我假设oci.dllC:\Program Files\Oracle Instant Client\instantclient_12_2.
您是否检查过所有涉及的程序(PostgreSQL、oracle_fdw 和 Oracle)都是 32 位还是 64 位?

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

你确定 PostgreSQL 服务有PATH你显示的设置吗?PATH更改环境变量后是否重新启动了 PostgreSQL ?

于 2017-07-14T10:12:13.580 回答
0

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

或者,您可以使用oracle_fdw.dll由 BigSQL 项目编写的。由于该项目是使用 MSYS2 构建的,因此不依赖于 Visual C++。但是,无法避免 Oracle 客户端库创建的依赖关系。

于 2017-12-08T14:06:13.087 回答
0

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

于 2017-07-12T23:26:05.483 回答