我很难在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.dylib
和libclntsh.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上做的更深入)并且我希望如此不需要剧烈和不便携。是否有一个安装过程的步骤我没有让它工作?
提前致谢!
答案 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.1
和libclntshcore.dylib.12.1
)符号链接到PATH上的库位置(我使用/usr/local/lib
)。
使用上面的配置(使用Basic客户端而不是Basic Lite,虽然Basic Lite 应该工作)和必要的tnsnames.ora
黑魔法(TNS连接字符串涵盖在许多其他SO中)问题),我能够使用unixODBC连接命令行isql和我的真实目标,R odbc
和DBI
。