【问题标题】:How to get MacOS Oracle ODBC client working with unixodbc?如何让 MacOS Oracle ODBC 客户端与 unixodbc 一起工作?
【发布时间】:2018-07-16 01:27:03
【问题描述】:

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

将两个 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 上做的更深入),我希望不会出现如此激烈和不可移植的东西必需的。我缺少安装过程的步骤来使其正常工作吗?

提前致谢!

【问题讨论】:

    标签: oracle macos unixodbc


    【解决方案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 和我的真正目标 R 的 odbc 和 DBI 使用 unixODBC 进行连接。

    【讨论】:

    • 这看起来很痛苦,我的哀悼。我刚刚为 pymssql stackoverflow.com/questions/37771434/… 完成了此操作,因为有一个依赖项更改未决。感谢分享!
    • 即使我可以通过isql 连接,我也很难在 iODBC 连接器中找到 ODBC 连接。您对如何实现这一目标有任何提示吗?
    • 这太痛苦了!我花了 20 多个小时试图让它工作,但我仍然收到libsqora.dylib.12.1 的文件未找到错误。你能以任何方式提供帮助吗?你把你的tnsnames.ora放在哪里了?我也在尝试使用 R 的 odbc 和 DBI!谢谢!
    猜你喜欢
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    相关资源
    最近更新 更多