OmniDB 连接 ORACLE 报错提示DP-1047:Cannot locate a 32-bit Oracle Client library

使用 OmniDB 软件 连接Oracle数据库时 ,报错 Cannot locate a 32-bit Oracle Client library ;

在网上查看说这是由于Oracle客户端instanceclient, 系统, Python 三者版本位数不对应。

解决过程

  1. 首先查看数据库服务端的版本:
    SELECT * FROM V$VERSION
    OmniDB 连接  ORACLE   报错提示DP-1047:Cannot locate a 32-bit Oracle Client library
    查询结果是64位

  2. 查看python版本:
    OmniDB 连接  ORACLE   报错提示DP-1047:Cannot locate a 32-bit Oracle Client library
    也是64位;
    按理说Oracle客户端instanceclient不匹配的话应该要报错
    Cannot locate a 64-bit Oracle Client library
    64位才对,而不是32位

  3. 先到Oracle client官网下载https://www.oracle.com/database/technologies/instant-client/downloads.html instantclient-basic-windows.x64-12.2.0.1.0.zip 12版本的64位客户端文件,把Oracle服务端下的oci.dll文件替换为下载的压缩包中的,然而还是报错(其中重启了软件和数据库也没用);

  4. 没办法,只能先抱着试一试的心态下载32位的客户端文件,并再次替换数据库中的oci.dll,结果这次连启动Oracle也不行了。

  5. 再次查看网上的解决方案,其中说到需要配置客户端的环境变量;因为数据库就安装在本机,我是没有配置的,鉴于之前的报错问题为32bit,还是把32位的客户端文件路径配置上去。如下:
    将客户端的文件路径放于服务端之前,避免又读到服务端64位的oci.dll。

OmniDB 连接  ORACLE   报错提示DP-1047:Cannot locate a 32-bit Oracle Client library

重启系统后,连接未报错。

后续:

之前困惑于这个报错提示,DP-1047:Cannot locate a 32-bit Oracle Client librarypythonCx_oracle包连接时的错误,为什么用这个软件连接会有。

后面看到软件安装路径下全是python文件,这才意识到OmniDB 是 python写的,所以。。
OmniDB 连接  ORACLE   报错提示DP-1047:Cannot locate a 32-bit Oracle Client library

上一篇:python用cx_Oracle连接数据库,出现错误cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client li


下一篇:linux下常用的五个查找命令