【大数据课堂0006】【oracle】python3/plsql 使用cx_Oracle遇到到的坑

不想你离开。 提交于 2020-04-24 08:35:20

     先说一下我运到的坑:工作环境win64,数据存在Oracle数据库中,并不清楚instantclient是多少位。cx_Oracle 64,导致数据库连接不上报错,需要重新下载/安装等。下面简单总结一下我的环境部署。我之前连接过oracle18.5,现在客户是oracle11.2,需要重新安装配置。我电脑是Python37,但是cx_Oracle的版本需要Python36,那就在安装python36.

0. 时刻切记

安装配置时,必须把握一个点,就是版本一致!包括:系统版本,python版本、依赖包版本。

【笔记】

2,安装cx_Oracle https://blog.csdn.net/wangshuang1631/article/details/71057054
2.1 $uname -a //查看系统是否是 Linux x86-64
2.2 下载以下两个文件,两个文件放在同一目录下:basic和sdk。http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
instantclient-basic-linux.x64-11.2.0.3.0.zip
instantclient-sdk-linux.x64-11.2.0.3.0.zip
2.3 解压到instantclient_11_2目录下,

unzip instantclient-basic-linux.x64-11.2.0.3.0.zip
unzip instantclient-sdk-linux.x64-11.2.0.3.0.zip
2.4 设置环境变量
root用户:
# vim /etc/profile //修改
export ORACLE_HOME=/home/downloads/instantclient_11_2/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
# cat /etc/profile //查看
# source /etc/profile //使文件生效

普通用户:
修改.bashrc文件来设置环境变量。
通过指令:vi ~/.bashrc,添加如下两行内容:

ORACLE_HOME=/你的目录/instantclient_11_2/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME

修改完成之后,使你的修改生效,使用指令 source ~/.bashrc
2.5 建立一个连接libclntsh.so
cd /你的目录/instantclient_11_2/
ln -s libclntsh.so.11.1 libclntsh.so
2.6 安装cx_Oracle 下载cx_Oracle-5.2.1.tar.gz
tar -xvf cx_Oracle-5.2.1.tar.gz
cd cx_Oracle-5.2.1
python setup.py install
2.7 验证 使用python指令验证:

import cx_Oracle

 

 

1. 准备

查看要连接的oracle数据库版本:执行:select * from v$version; 结果:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

比如我要连接11.2版本,之前也练过18.5版本

2. Python环境

Python3.6:cmd查看 python -V  ,系统:windows64位或者32位。

注意事项:需要根据现场系统版本位数、数据库的服务端和客户端的版本位数确定。如oracle的server端是32位,则客户端instantclient需要是32位, anaconda对应win32版本。

当然,你64位的操作系统也是可以安装32位的开发环境。反之则不行!切记!

oracle客户端的版本,cx_Oracle的版本,要与Python版本和位数对应:

3 数据库

数据库版本:须要确保数据库的客户端版本不低于服务端的版本,如果连接oracle数据,可通过select * from v$version查看版本信息或者通过plsql(navicat)配置查看目录instactcliet的目录所在,确定使用的oracle客户端的版本,然后确定下载cx_Oracle的版本。

客户端及anaconda位数:与服务端保持一致,即服务端是32位,版本11g,则客户端选择11g,32位。

比如服务端版本:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 32bit Production

选择对应

Python版本:Anaconda3-5.2.0-Windows-x86,python3.6;

cx_Oracle的版本:cx_Oracle-6.2-cp36-cp36m-win32

oracle客户端的版本:instantclient-basic-win32-11.2.0.4.0;

若是: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

oracle客户端的版本:instantclient-basic-windows.x64-11.2.0.4.0.zip。下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

这里还需要注意:

cx_Oracle和python版本对应,都是3.6;

cx_Oracle和instantclient版本对应,都是11g

4 安装   

  (1)    解压instantclient-basic-windows.x64-11.2.0.4.0.zip到你的目录,比如我的是,D盘根下。

(2) 进入安装目录instantclient_11_2,修改network/admin/tnsnames.ora 文件,若没有,就新建两级文件夹 和文件tnsnames.ora 。

 

(3)写文件。tnsnames.ora 文件内容

复制代码

cs_de_o=
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.145.62)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = CSZHANG01)
    )
)

复制代码

HOST = 192.168.145.62  --服务器ip
SERVICE_NAME=CSZHANG01 --服务器的实例名
cs_de_o                --给这个tns的别名吧(反正是你自己看,你能区别出来就行)

(4)配置环境变量

安装 Anaconda:首先安装Anaconda,然后安装依赖包,这里需要注意一下,有可能cx_Oracle依赖的包和做EDA分析依赖的其他包有冲突,这里建议先安装其他依赖包,最后安装cx_Oracle。

安装完毕后,须把oracle客户端instantclient中的三个文件oci.dll,oraocci11.dll和oraocei11.dll至anaconda根目录。

      手动安装:把下载的文件解压,复制oci,oraocci11,oraociei11的3个DLL粘贴到你的PY目录的Lib/site-packages文件夹下面。

(2)下载plsql 工具(解压)

 

 (3)配置环境变量

TNS_ADMIN    D:\PL.SQL.Developer\instantclient_11_2\network\admin -----(instantclient_12_1的路径,我是将instantclient 解压在plsql中)

 NLS_LANG      SIMPLIFIED CHINESE_CHINA.ZHS16GBK   ----(设置语言)

 

 

(4)启动plsql,因为还没有配置好,所以你就cancel ,

进入到plsql,在上方的选项栏中 tools-->connection 设置 oracle home  路径 和  oci library 路径

然后apply,重启plsql,就会发现,database 就会显示 cs_de_o, 然后输入你的用户,密码,就可以登录了

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!