1.安装
首先是安装
pip install cx_Oracle
Python3.6
参考链接: python3连接oracle数据库
2. 配置环境变量
2.1 问题
首先在Linux上使用python运行数据库脚本的时候报:cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded
cx_Oracle:将Python连接到Oracle数据库
cx_Oracle是允许访问Oracle数据库并符合Python数据库API规范的模块。有关更多详细信息,请参见cx_Oracle文档。
关于Oracle Instant Client
cx_Oracle依赖于Oracle Instant Client。在Oracle Linux yum服务器上,Oracle Instant Client 18.3 RPM位于ol7_oracle_instantclient和ol6_oracle_instantclient存储库中。假设您已为适用于您的Oracle Linux版本的Oracle Instant Client启用了存储库,则它将作为依赖项安装。请确保按照以下步骤设置环境,以使cx_Oracle可以找到所需的Oracle Instant Client库。cx_Oracle使用Oracle Client 18.3构建,该客户端连接到Oracle Database 11.2和更高版本。OTN上提供了旧版本的Oracle Instant Client 。
2.2 解决方法
以下是按照官网文档操作的,自测没有问题.
下载instantclient-basic的RPM包或者ZIP包,64-bit or 32-bit,这里下载64位。
以下分别是RPM包和ZIP包的安装方法,两者皆可
1> ZIP安装方法
- 1.解压ZIP包并放到新建的目录中
mkdir -p /opt/oracle
cd /opt/oracle
unzip instantclient-basic-linux.x64-12.2.0.1.0.zip
- 2.使用root用户安装 libaio 包(主:在一些发行版中这个包称为libaio1)
sudo yum install libaio
- 3.如果服务器上没有其他的Oracle软件会受到影像,那么可以永久将客户端添加到运行时链接路径中,列如,使用sudo或作为根用户
sudo sh -c "echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig
或者将环境变量LD_LIBRARY_PATH设置为instantclient版本适当的目录
export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib:$LD_LIBRARY_PATH
- 4.创建及时客户端的应用程序的Oracle配置目录
mkdir -p /opt/oracle/instantclient_12_2/network/admin
2> RPM安装方法
- 1.使用root用户安装下载的RPM包,yum安装会自动安装所需要的依赖包,比如libaio
sudo yum install oracle-instantclient-basic-21.1.0.0.0-1.x86_64.rpm
有可能下载失败,亲自下载rmp包,然后,
安装你要离线安装的rpm包
yum install xxx.rpm -y
- 2.如果服务器上没有其他的Oracle软件会受到影像,那么可以永久将客户端添加到运行时链接路径中,列如,使用sudo或作为根用户
sudo sh -c "echo /usr/lib/oracle/21/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig
或者将环境变量LD_LIBRARY_PATH设置为instantclient版本适当的目录
export LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib:$LD_LIBRARY_PATH
- 3.创建及时客户端的应用程序的Oracle配置目录
sudo mkdir -p /usr/lib/oracle/21/client64/lib/network/admin
3> 补丁
自已亲测的RPM安装方法,上面配置后,有点问题,最终
具体配置如下,在vim /etc/profile编辑器下的后添加如下内容:
export LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib:$LD_LIBRARY_PATH
然后,让配置好的环境变量生效。
source /etc/profile
网友评论