debian9 python3.6连接oracle10.2

环境:
os:debian9
pyenv:python3.6.5
django 2.0
oracle Client 12.2
oracle server 10.2
cx_Oracle 6.2

本来以为oracle的客户端必须和服务器端版本一致,这是个大坑
再次,我是下载zip版本的客户端安装的,配置的比较多,我少配了几处。还有,cx_Oracle 提示只支持oracle client 11.2以上版本。网上搜索出来的都是让降cx_Oracle 的版本,试着pip装3.5版本,但是各种报错不支持,都是坑,所以直接升级客户端就是了
https://oracle.github.io/odpi/doc/installation.html#linux
https://blog.csdn.net/andy_wcl/article/details/79470705
上面两个是安装oracle 客户端的安装说明,对我帮助比较大,感谢作者

先新建个目录,好将软件包下载并解压缩到应用程序可访问的单个目录中。

mkdir -p /opt/oracle   #新建一个安装的文件夹
cd /opt/oracle            #切换到文件夹

oracle客户端官网下载地址,选择相应的版本下载
http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html
我一共下了三个文件basic,sql,CDK,官网注册个账号下载就好
我是直接复制链接,用wget下载的

unzip instantclient-basic-linux.x64-12.2.0.1.0.zip   #解压下载到客户端文件

全部解压到同一个文件夹就好,解压的时候会自动创建instantclient_12_2目录,然后

sudo mkdir -p /opt/oracle/instantclient_12_2/network/admin  #新建admin文件夹
cd /opt/oracle/instantclient_12_2/network/admin
sudo nano tnsnames.ora

在上述目录新建tnsnames.ora文件,并编辑数据库链接信息,内容如下

oracle =  
(DESCRIPTION =  
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.197.1)(PORT = 1521))  
    (CONNECT_DATA =  
      (SERVER = DEDICATED)  
      (SID =xxx)  
    )  
)  

说是要装 libaio1 包

sudo apt-get install libaio1

如果计算机上没有其他受影响的Oracle软件,将Instant Client永久添加到运行时链接路径。

sudo sh -c "echo /opt/oracle/instantclient_12_2 > etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig

接着配置环境变量

sudo nano ~/.zshrc  

我装了zsh,默认为.bash_profile
在文档结尾添加下面内容

export ORACLE_HOME=/opt/oracle/instantclient_12_2  
export TNS_ADMIN=$ORACLE_HOME/network/admin  
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8  
export LD_LIBRARY_PATH=$ORACLE_HOME  
export PATH=$ORACLE_HOME:$PATH 

然后运行

source ~/.zshrc  #使配置生效
sqlplus username/password@oracle   #测试连接是否成功‘oracle’与之前配置的tnsnames.ora中的相同就可以

然后进ipython测试(没有的pip安装,很好用)

ipython

import os
import cx_Oracle
conn_str = u"用户名/密码@ip:端口/数据库名"
cx_Oracle.connect(conn_str) 

你可能感兴趣的:(debian9 python3.6连接oracle10.2)