如何让MacOS Oracle ODBC客户端与unixodbc一起使用?

时间:2018-02-06 04:01:52

标签: oracle macos unixodbc

我很难在MacOS 10.12.6(Sierra)下使用自制软件安装的unixODBC 2.3.5获得Oracle 12.2.0.1.0-2 ODBC驱动程序和Instant Client(Basic Lite版本)。

将两个Oracle ZIP文件提取到/opt/ora12/instantclient_12_2,为libclntsh.dyliblibclntsh.dylib.12.1创建符号链接,然后将odcb指向/opt/ora/12/instantclient_12_2/libsqora.lib,会发现找不到文件错误。虽然路径肯定存在且具有良好的权限,但使用otool -L检查dylib会显示@rpath目录未找到支持库。

如果我下载12.2 sqlplus客户端,将其解压缩到同一个instantclient树并运行二进制文件,CLI工作正常。这似乎与odbc有某种dylib加载问题,但我不确定如何解决它。我尝试过设置DYLIB_LIBRARY_PATH,将所有库直接复制到/usr/local/lib,一切都没有效果。

我还没有试图提取install_name_tool和硬编码搜索路径(在杂草上比我之前在MacOS上做的更深入)并且我希望如此不需要剧烈和不便携。是否有一个安装过程的步骤我没有让它工作?

提前致谢!

1 个答案:

答案 0 :(得分:3)

在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.1libclntshcore.dylib.12.1)符号链接到PATH上的库位置(我使用/usr/local/lib)。

使用上面的配置(使用Basic客户端而不是Basic Lite,虽然Basic Lite 应该工作)和必要的tnsnames.ora黑魔法(TNS连接字符串涵盖在许多其他SO中)问题),我能够使用unixODBC连接命令行isql和我的真实目标,R odbcDBI