Oracle即时客户端仍无法在Mac OS Catalina 10.15.4上工作。

3
我在我的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

$: 查看 .zprofile 文件

设置 Python 3.8 的路径

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

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

设置 Python 3.7 的路径

原始版本保存在 .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.3.0.0.0 - 正式版发布 版本号 19.0.0.0.0

请有人帮帮我吗?


你找到解决问题的方法了吗?我也遇到了同样的问题。 - naderhat
3个回答

2

在你从这里下载完instant client之后,需要在/usr/local/lib文件夹中创建一个符号链接(这是所有.dylib文件保存符号链接的地方)。

以我的情况为例,我将instant client提取到了/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)。

2
  • 转到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')

会弹出一些窗口,所以前往系统偏好设置 --> 安全性与隐私 --> 通用并在那里看到一个通知。 点击仍要打开。 您将需要重复最后一步3-4次。


0
也许这个错误信息会给你带来误导,实际上和 MacOS Catalina 上的 Oracle Instant Client 有关系呢?可以通过查看以下博客文章了解更多信息:

Gary's Oracle On Tap

希望这能帮到你!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接