Ubuntu下python通过cx_Oracle访问oracle数据库需要安装的环境及步骤

我的安装方法和步骤是参考以下链接进行的,这也是我从网上找到的最正确最有用的方法: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. 如果出现错误类似以下1

则通过以下方式修改:

错误2,我在安装过程中遇到了

在我安装过程中提示的是在setup.py中的135行,通过查看文件,发现是$ORACLE_HOME找不到该变量的信息如下图所示:

明明之前设置了ORACLE_HOME变量,但是仍然找不到,所以就直接修改了setup.py源文件,修改方式如下:

再执行一遍:

python setup.py install

就没有问题了

然后通过执行:

Python 
import cx_Oracle

来检查是否安装成功,如果刚执行setup.py时没有出现错误,但是在执行import cx_Oracle出现相关的字符时,重启一下机器再尝试一下,一般是成功的,如下图所示:

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页