zoukankan      html  css  js  c++  java
  • Python源码安装cx_Oracle

      最近线上有个数据表一个月竟然没有数据,都没有监控,老大让我做一个监控,让Python写脚本监控oracle数据是否正常。

    【注意】要把原来的Python2.7 升级到Python3.3以上。不然会报错。

    一、涉及软件包

    1、cx_Oracle

    下载地址:http://sourceforge.net/projects/cx-oracle/files/?source=navbar

    我下载的是最新版的cx_Oracle-5.1.2.tar.gz

    2、Oracle_client

    使用cx_Oracle必须要安装Oracle_client端,或者你已经安装了Oracle数据库

    下载地址:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

    oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
    oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm
    oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
    oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
    oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm
    oracle-instantclient11.2-tools-11.2.0.4.0-1.x86_64.rpm

    软件包都下载完后,我们开始来安装。

     二、源码安装

    1、Oracle_client端安装:

    # rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm  oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm  oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm  oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm  oracle-instantclient11.2-tools-11.2.0.4.0-1.x86_64.rpm
    # echo /usr/lib/oracle/11.2/client64/lib/ >> /etc/ld.so.conf
    # ldconfig

    如果不进行ldconfig配置,在运行cx_Oracle时会报以下错误:

    libclntsh.so.11.1: cannot open shared object file: No such file or directory

    2、设置相应用户的环境变量:

    在这里需要说明下,你使用哪个帐户装cx_Oracle就需要配置哪个帐户的环境变量,以下已root帐户为例;

    如果不配置环境变量、或环境变量配置不正确,在安装cx_Oracle时,会报各种错误,比如说:

    oci.h: No such file or directory
    #vi ~/.bashrc
    export TNS_ADMIN="/usr/lib/oracle"
    export ORACLE_HOME="/usr/lib/oracle/11.2/client64"
    export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${ORACLE_HOME}/lib"
    export PATH="${PATH}:${ORACLE_HOME}"
    #source ~/.bashrc

    3、源码安装

    #tar -zxvf cx_Oracle-5.1.2.tar.gz
    #cd cx_Oracle-5.1.2
    #python setup.py install

    4、安装成功后相应检查

    [root@HAProxy01 Scripts]# python
    Python 3.3.0 (default, Sep 14 2017, 14:53:20) 
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import cx_Oracle
    >>>

    三、脚本实例:

    #!/usr/bin/python  
    # -*- coding: UTF-8 -*-  
    
    import cx_Oracle as db
    import os
    os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
    
    def queryOracle(sql):
        username = "US_ORDER"      #用户名
        passwd = "******"          #用户密码
        host = "192.168.1.203"     #服务器IP
        port = "1521"              #oracle端口
        sid = "ORCL"               #oracle的
        dsn = db.makedsn(host, port, sid)
        con = db.connect(username, passwd, dsn)
        cur = con.cursor()
        cur.execute(sql)
        result  = cur.fetchall()
        cur.close()
        con.close()
        return result
    
    if __name__=="__main__":
        sql = "select sysdate from dual"    #需要执行的SQL
        result = queryOracle(sql)
        print(result)

    执行结果:

    [root@HAProxy01 Scripts]# ./check_oracle_tables.py
    [(datetime.datetime(2017, 9, 15, 12, 1, 51),)] 
  • 相关阅读:
    HDU 1850 Being a Good Boy in Spring Festival
    UESTC 1080 空心矩阵
    HDU 2491 Priest John's Busiest Day
    UVALive 6181
    ZOJ 2674 Strange Limit
    UVA 12532 Interval Product
    UESTC 1237 质因子分解
    UESTC 1014 Shot
    xe5 android listbox的 TMetropolisUIListBoxItem
    xe5 android tts(Text To Speech)
  • 原文地址:https://www.cnblogs.com/sheng-247/p/7529289.html
Copyright © 2011-2022 走看看