zoukankan      html  css  js  c++  java
  • 【大数据课堂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.Developerinstantclient_11_2
    etworkadmin -----(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, 然后输入你的用户,密码,就可以登录了

     

  • 相关阅读:
    Lucene的分页查询
    Lucene索引库的简单优化
    Lucene的排序搜索
    Axure RP 6.5学习记录(1)界面介绍
    Lucene的高亮器Highlighter
    关于Lucene以及索引和搜索的流程
    Lucene初体验
    linux 下 ansi_x3.41968 java 邮件附件乱码
    SQL Server DBA工作内容详解
    SQL Server 导出 insert into 脚本
  • 原文地址:https://www.cnblogs.com/ljt1412451704/p/11250441.html
Copyright © 2011-2022 走看看