前言: 用的 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
网友评论