Centos 安装 cx_Oracle 模块

前言: 用的 Oracle 版本号位: 11.2.0.4.0. 特别注意这个,因为待会安装的 oracle instant client 以及 python 包 cx_Oracle 都要找其相兼容的版本。

Oracle Instant Client安装

oracle instant client version 11.2.0.4.0下载
可以是 zip 或是 rpm. 为了安装方便,我选择的是: oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

  • cksum
    下载完后,记得 cksum. 看看下载的文件有没损失,如果有,得重新下载。
alphafish@ar:~/Downloads$ cksum oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
526022028 59865008 oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

其中,第一个数字 526022028 要与官网上的 cksum 相同!第二个数字59865008 表示文件的大小。

  • 安装命令:
sudo rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
  • 添加环境变量

我的安装路径为: /usr/lib/oracle/11.2/client64/

vi /etc/profile

export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib

让配置文件马上生效

. /etc/profile
(or source /etc/profile)

安装 cx_Oracle

命令安装或是去 PYPI 下载

pip install cx_Oracle

测试

>>> import cx_Oracle
>>> conn = cx.Oracle.connect(...)
  • 1, 若报错:
    ORA-12170: TNS:Connect timeout occurred. 则可能是防火墙原因,访问不了。可以使用 telnet ip port 看是否能连通。

  • 2, 若报错

cx_Oracle.DatabaseError:dpi-1047:64-bit oracle client library cannot be loaded:"libclntsh.so:cannot open shared object file:no such file or directory".see https://oracle.github.io/odpi/doc/installation.html#linux for help

  • 可能一:
    环境变量没配对, 或是没让配置文件生效

  • 可能二:
    缺少libaio 包(Ubuntu 上是 libaio1)

sudo yum install libaio
sudo apt-get install libaio1
  • 可能三:
    libclntsh.so 没相应连接
$ cd $ORACLE_HOME
$ ln -s libclntsh.so.11.1   libclntsh.so

或编辑 /etc/ld.so.conf.d/oracle.conf文件(之前没有 oracle.conf文件,新建的) , 输入如下:

/usr/lib/oracle/11.2/client64/lib

最后让其生效

sudo ldconfig

参考

誓词倾城 同学的 【CentOS】Python + cx_Oracle 配置

[SOLVED] NJS-045 DPI-1047: 64-bit Oracle Client library cannot be loaded

哇哇小仔 同学的 Ubuntu 16.04LTS 安装cx_Oracle

cx_Oracle 官方安装文档

你可能感兴趣的:(Centos 安装 cx_Oracle 模块)