python调用oracle过程 权限不足_【大数据课堂0006】【oracle】python3/plsql 使用cx_Oracle遇到到的坑...

先说一下我运到的坑:工作环境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, 然后输入你的用户,密码,就可以登录了


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部