我的安装方法和步骤是参考以下链接进行的,这也是我从网上找到的最正确最有用的方法:https://blog.csdn.net/u011666720/article/details/41350897。其他的写的方法真是的是堆没用的。这里我根据上面博客的内容,加上自己安装过程中遇到的问题,也总结整理一篇文章。
想用Python通过cx_Oracle模块访问远程服务器的oracle数据库时,应当先安装Linux系统下的Oracel client(即oracle 客户端),然后才能安装cx_Oracle。
1. Oracle Instant Client安装步骤
如果是Ubuntu系统直接参考以下链接进行安装,如果系统是其他的,也可以按照上面说的来,只不过不同linux系统命令不一样罢了,步骤都一样,原博客作者装过一个centos 的,也成功了,下面是安装详细步骤,一步一步来,一般不会出错的:
https://help.ubuntu.com/community/Oracle%20Instant%20Client
这里再整理下这个步骤:
Install RPMs
1.从以下网址下载对应自己系统的rpm包,Linux系统下从以下网址下载:
https://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
按照提示,下载对应自己系统的rpm包,下载时是需要登录的,密码设置得需要大小写字母组合(我的是首字母大写),登录成功后,点击“Accept License Agreement”,然后才能开始下载,如
一般没有特殊要求下载其中三个包就可以了,分别是basic、devel、sqlplus,如图所示:
2.安装 “alien”,以将.rpm文件转换为.deb包,安装命令如下:
sudo apt-get install alien
3.以11.2.0.4.0.-1为例进行.rpm文件转换为.deb包,分别执行如下命令:
alien -i oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
alien -i oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
alien -i oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
4.通过"sqlplus" or "sqlplus64"链接数据库以测试客户端是否安装成功
sqlplus username/password@//dbhost:1521/SID
- 如果执行sqlplus,并得到"sqlplus: command not found"提醒,则根据ORACLE_HOME节说明进行ORACLE_HOME变量添加。
- 如果提示没有sqlplus命令,首先安装一个包libaio1,执行如下命令:
sudo apt-get install libaio1
如果是在64位机器上,安装32位的客户端则,执行如下命令:
sudo apt-get install libaio1:i386
如果执行上面语句安装不成功的话,可以考虑用以下语句进行安装:
sudo apt-get install libaio-dev
- 如果提醒“a missing libsqlplus.so”, 则根据下面的 "Integrate Oracle Libraries" 节中的说明进行修改。
Integrate Oracle Libraries
原来的网址中提供了多种方式添加Libraries,我这里选择如下方式:
sudo vi /etc/ld.so.conf.d/oracle.conf && sudo chmod o+r /etc/ld.so.conf.d/oracle.conf
输入:
/usr/lib/oracle/11.2/client64/lib/
继续执行 ldconfig:
sudo ldconfig
ORACLE_HOME
许多Oracle数据库应用程序在环境变量“ORACLE_HOME”中指定的位置查找Oracle软件。所以需要在系统范围的定义“ORACLE_HOME”指明软件的位置。
sudo sudo vi /etc/profile.d/oracle.sh && sudo chmod o+r /etc/profile.d/oracle.sh
添加如下:
export ORACLE_HOME=/usr/lib/oracle/<version>/client(64)
例如,我这里是
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export PATH=$PATH:$ORACLE_HOME/bin
export PATH=$PATH:$ORACLE_HOME/lib
保存退出。
接着执行
sudo ln -s /usr/include/oracle/11.2/client64 $ORACLE_HOME/include
检查环境是否配置完成:ls $ORACLE_HOME
但是我这里执行ls $ORACLE_HOME时并未出现“/usr/lib/oracle/11.2/client64” ,
我猜应该是环境未配置成功,但是我输入命令是却出现了“/usr/lib/oracle/11.2/client64”
echo $ORACLE_HOME”
因此在后面cx_Oracle执行其setup.py时出现了错误,就是因为通过ORACLE_HOME该变量未找到路径信息,后面我会说怎么解决这个问题。
到这里在终端输入"sqlplus" or "sqlplus64"来测试客户端是否安装成功,并通过以下指令访问数据库:
sqlplus username/password@//dbhost:1521/SID
cx_Oracle 安装步骤
当Oracle Instant Client的相关软件都已安装好的情况下,可以进行cx_Oracle的安装了。
首先下载cx_Oracle包,可以去python官网或者cx_Oracle官网下载,python官网下载地址:https://pypi.python.org/pypi/cx_Oracle/5.1.3
我下载的是最新版本是5.1.3
解压 cx_Oracle-5.1.2.tar.gz
tar -xvzf cx_Oracle-5.1.3.tar.gz
进入解压好的目录
cd cx_Oracle-5.1.3
执行安装:
python setup.py install
这时候问题就来了,总是报错
出现的问题及解决方法
- 如果出现错误类似以下1
则通过以下方式修改:
错误2,我在安装过程中遇到了
在我安装过程中提示的是在setup.py中的135行,通过查看文件,发现是$ORACLE_HOME找不到该变量的信息如下图所示:
明明之前设置了ORACLE_HOME变量,但是仍然找不到,所以就直接修改了setup.py源文件,修改方式如下:
再执行一遍:
python setup.py install
就没有问题了
然后通过执行:
Python
import cx_Oracle
来检查是否安装成功,如果刚执行setup.py时没有出现错误,但是在执行import cx_Oracle出现相关的字符时,重启一下机器再尝试一下,一般是成功的,如下图所示: