Проблемы при создании с использованием расширения oracle_fdw в Windows

Я пытаюсь установить и использовать oracle_fdw в postgresql 9.6, однако я получаю одну и ту же проблему каждый раз, когда запускаю следующую команду:

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
    

Ребята, вы можете мне помочь? Мне действительно нужны конкретные инструкции о том, как заставить это работать.

Tks!

3 ответа

.. на вашем пути странно, но не должно быть проблем. Каково значение параметра 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 Задание тебе показать? Вы перезапустили PostgreSQL после того, как изменили PATH переменная окружения?

Многие сталкиваются с этой проблемой, и я получил ее в большинстве случаев. Клиентские библиотеки Oracle компилируются с использованием определенной версии Visual C++. Поэтому нам необходимо иметь распространяемый пакет Visual C++ для этой конкретной версии Visual Studio. Вторая зависимость исходит от oracle_fdw.dll, Последняя версия сообщества oracle_fdw.dll подготовлен с использованием Visual C++ 2013. Таким образом, мы должны иметь распространяемый пакет Visual C++ 2013 для присутствия в системе. Как только все такие зависимости решены, это работает.

В качестве альтернативы, вы можете использовать oracle_fdw.dll подготовлено проектом BigSQL. Поскольку проект построен с использованием MSYS2, нет никаких зависимостей от Visual C++. Однако нельзя избежать зависимости, создаваемой клиентскими библиотеками Oracle.

Это похоже на проблему с дистрибутивом Postgres, который вы используете, а не с самим oracle_fdw. Может быть, лучше обратиться к дистрибьюторам. Глядя на пути в ваших ошибках, я предполагаю, что вы используете дистрибутив Bigsql. Вы можете попробовать разместить вопрос на их странице обратной связи, они, как правило, довольно отзывчивы.

Другие вопросы по тегам