python调用oracle报错:Linux oracle DPI-1047: Cannot locate a 64-bit Oracle Client library: libclntsh.so

报错信息

cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help

问题描述:
运行python程序调用oracle数据库,出现上述错误。

解决办法:

找到orcale客户端安装路径,我的安装路径在:/home/oracle/instantclient_11_2

注意orcale 客户端目录按自己实际安装路径配置。

  • 方案一:修改LD_LIBRARY_PATH(在 ~/.bashrc)

vi ~/.bashrc

# 把一下内容添加到最后行,注意调整oracle客户端安装目录 /home/oracle/instantclient_11_2
export LD_LIBRARY_PATH=/home/oracle/instantclient_11_2:$LD_LIBRARY_PATH

# 保存运行
source ~/.bashrc

  • 方案二:修改/etc/ld.so.conf
vi /etc/ld.so.conf;
--------------------------------------
#末尾追加 根据你安装oracle版本驱动路径
/home/oracle/instantclient_11_2

#保存运行
ldconfig;
  •  方案三:用ln将需要的so文件链接到/usr/lib或者/lib这两个默认的目录下边
ln -s /home/oracle/instantclient_11_2/*.so* /usr/lib

ldconfig

原因:

libclntsh.so是OCI客户端运行时库,Oracle如果程序使用了oci读写数据库必定会装载这个库。一般位于你安装的oracle客户端目录下,比如我的位于/home/oracle/instantclient_11_2中。
程序运行时会去两个路径下寻找:1、/etc/ld.so.conf所列路径下;2、当前用户的环境变量LD_LIBRARY_PATH。如果这两个地方都找不到就会报错,说找不到这个库。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值