我试图在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.
这里有两件事很奇怪:
它正在寻找dll的文件夹,有一个" .."在中间,所以它似乎只应该查看D:\PostgreSQL\pg96\lib
,但我也有文件夹D:\PostgreSQL\pg96\lib\postgresql
。
我在系统中设置了以下变量,但似乎没有反映在命令中:
Path: D:\PostgreSQL\pg96\lib\;C:\Program Files\Oracle Instant Client\instantclient_12_2;
D:\PostgreSQL\pg96\lib\postgresql
你们能帮帮我吗?我真的需要有关如何使其发挥作用的具体说明。
韩国社交协会!
答案 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客户端库创建的依赖性。