【问题标题】:Oracle Instant Client still not working on Mac OS Catalina 10.15.4Oracle Instant Client 仍然无法在 Mac OS Catalina 10.15.4 上运行
【发布时间】:2020-04-27 14:39:58
【问题描述】:

我在 Mac Os Catalina 版本 10.15.4 上安装了 Oracle Instant Client 版本 19.3 但是我在 python3.7 和 python3.8 上仍然有同样的错误:

来源:(cx_Oracle.DatabaseError) DPI-1047:找不到 64 位 Oracle 客户端库:“dlopen(libclntsh.dylib, 1):找不到合适的图像。确实找到了: 强化程序中不允许的文件系统相对路径”。请参阅https://oracle.github.io/odpi/doc/installation.html#macos 以获取帮助 (此错误的背景:http://sqlalche.me/e/4xp6

这是我的安装:

$: ls-l ~/lib
ls -l ~/lib
total 0
lrwxr-xr-x 1 giacomocallegaro staff 58 22 Apr 09:13 libclntsh.dylib -> /Users/giacomocallegaro/instantclient_19_3/libclntsh.dylib

$: cat .zprofile

为 Python 3.8 设置 PATH

原始版本保存在.zprofile.pysave中

PATH="/Library/Frameworks/Python.framework/Versions/3.8/bin:${PATH}" 导出路径

为 Python 3.7 设置 PATH

原始版本保存在.zprofile.pysave中

PATH="/Library/Frameworks/Python.framework/Versions/3.7/bin:${PATH}"
export PATH=$PATH:~/instantclient_19_3
export PATH

$: echo $PATH

/Users/giacomocallegaro/.nvm/versions/node/v12.14.1/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/Library/Apple/usr/bin:/Applications/Postgres.app/Contents/Versions/latest/bin:/Users/giacomocallegaro/.nvm/versions/node/v12.16.1/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/opt/openssl/bin:/Users/giacomocallegaro/instantclient_19_3:/Users/giacomocallegaro/instantclient_19_3

$: which python:
/usr/bin/python

当我运行 sqlplus 时:

$: sqlplus -v

SQL*Plus:版本 19.0.0.0.0 - 生产 版本 19.3.0.0.0

有人可以帮帮我吗?

【问题讨论】:

  • 您找到解决问题的方法了吗,我也遇到了同样的问题

标签: oracle macos python-3.7 macos-catalina instantclient


【解决方案1】:
  • 转到https://www.oracle.com/technical-resources/
  • 下载 --> Oracle Instant Client --> macOS(Intel x86) --> 基本包
  • 在您的下载文件夹中,您将找到一个名为 instantclient_19_3 的文件夹
  • 将以下内容添加到您的 python 脚本中
import cx_Oracle

cx_Oracle.init_oracle_client(lib_dir=r'/Users/<username>/Downloads/instantclient_19_3')

会弹出一些窗口,所以转到System preferences --&gt; Security &amp; Privacy --&gt; General,你会看到一个通知。点击open anyway。您必须将最后一步重复 3-4 次。

【讨论】:

    【解决方案2】:

    download instant client from here 之后,创建一个符号链接到 /usr/local/lib 文件夹(所有 .dylib 文件都保留其符号链接的位置)。

    就我而言,我将即时客户端提取到/opt/oracle/instantclient_19_3。所以命令是:

    $ ln -s /opt/oracle/instantclient_19_3/libclntsh.dylib /usr/local/lib/
    

    但是,当我尝试从 python 创建连接时还有另一个问题:

    Error while trying to retrieve text for error ORA-01804
    

    Oracle 说:“Instant Client 19.3 和 18.1 支持 macOS Mojave 和 High Sierra”,我有 macOS Catalina 10.15,不知道这是否与此有关,错误 01804 说该时区信息无效。

    更多信息:http://www.dba-oracle.com/t_ora_01804_start_oracle.htm

    编辑:问题已解决。

    下载 SQL*Plus 包后,我设法连接并验证了即时客户端是否正常工作。当我重新启动 IntelliJ 时,我的 python 问题也得到了解决(我从内部运行服务器,因此 PATH 可能尚未更新)。

    【讨论】:

      【解决方案3】:

      也许该错误具有误导性,它与 MacOS Catalina 上的 Oracle Instant Client 的一般问题有关?看看这篇博文:

      Gary's Oracle On Tap

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-13
        • 2016-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-23
        • 2020-07-21
        相关资源
        最近更新 更多