Как заставить MacOS Oracle ODBC client работать с unixodbc?

Мне сложно заставить драйверы Oracle 12.2.0.1.0-2 ODBC и Instant Client (версия Basic Lite) работать с установленным homebrew unixODBC 2.3.5 под MacOS 10.12.6 (Sierra).

Извлечение обоих файлов Oracle ZIP в /opt/ora12/instantclient_12_2, создание символических ссылок для libclntsh.dylib и libclntsh.dylib.12.1, а затем указание odcb на /opt/ora/12/instantclient_12_2/libsqora.lib дает ошибку «файл не найден». Хотя путь определенно существует и имеет хорошие разрешения, проверка dylib с помощью otool -L показывает, что каталоги @rpath не находят вспомогательные библиотеки.

Если я открою клиент sqlplus версии 12.2, извлечу его в то же дерево мгновенных клиентов и запущу двоичный файл, интерфейс командной строки будет работать нормально. Кажется, это какая-то проблема с загрузкой dylib с odbc, но я не знаю, как это исправить. Я пробовал установить DYLIB_LIBRARY_PATH, скопировав все библиотеки прямо в /usr/local/lib, но безрезультатно.

Я еще не пробовал вытаскивать install_name_tool и пути поиска с жестким кодированием (углубляясь в сорняки, чем я делал раньше в MacOS), и я надеюсь, что что-то столь радикальное и непереносимое не потребуется. Есть ли какой-то шаг в процессе установки, который мне не хватает, чтобы это работало?

Заранее спасибо!


person David F. Severski    schedule 06.02.2018    source источник


Ответы (1)


После долгих обсуждений на форумах сообщества Oracle сжатое решение задокументировано в этом сообщении в блоге: https://blogs.oracle.com/opal/installing-the-oracle-odbc-driver-on-macos?dd

Короче говоря, предоставленный Oracle ODBC odbc_update_ini.sh необходимо запустить после первого исправления, чтобы изменить ссылку с libsqora.so.12.1 на libsqora.dylib.12.1. Затем две библиотеки (libclntsh.dylib.12.1 и libclntshcore.dylib.12.1) необходимо связать с местом расположения библиотеки на вашем PATH (я использовал /usr/local/lib).

С помощью приведенной выше конфигурации (с использованием клиента Basic вместо Basic Lite, хотя Basic Lite должен работать) и необходимой tnsnames.ora черной магии (строки подключения TNS рассматриваются во многих других вопросах SO), я смог соединяйтесь как с командной строкой isql, так и с моей истинной целью, odbc и DBI R, используя unixODBC.

person David F. Severski    schedule 23.02.2018
comment
Мои соболезнования, это выглядит болезненно. Я просто прошел через это для pymssql https://stackoverflow.com/questions/37771434/mac-pip-install-pymssql-error#51608486, так как ожидается изменение зависимости. Спасибо, что поделился! - person JayRizzo; 01.08.2018
comment
Несмотря на то, что я могу подключиться через isql, мне сложно найти соединение ODBC в разъеме iODBC. У вас есть какие-нибудь подсказки, как этого добиться? - person Markus; 05.09.2018