python语言linux操作系统oracle环境安装

金句:如果没把握,最好先Google一下。

1、严格按照 https://oracle.github.io/odpi/doc/installation.html#linux 教程一步步做

包括下载的软件的版本,安装的位置,都按照要求准确实施

过程中要求安装 libaio ,本来是使用yum方式即可

但是采取各种方法

(1)用系统自带的yum

提示:

This system is not registered with RHN.

RHN support will be disabled.

Setting up Install Process

原因是这个linux版本并没有花钱注册RHN服务,没办法直接从官方下载

(2)换软件源

yum软件源配置文件位置为

cd /etc/yum.repos.d/

公司版本的linux对应的配置文件名称是 rhel-debuginfo.repo

先用 mv rhel-debuginfo.repo rhel-debuginfo.repo_sysbak 命令 备份

然后下载、试用了各种yum源的配置文件,包括:

wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

等等

下载之后,都需要用 yum clean all  和 yum makecache 命令清除和生成一下本地缓存

但是,并没有什么卵用,于是尝试下载文件离线安装:

地址:https://pkgs.org/download/libaio

下载的rpm版本,直接执行

rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm 

报错了:

warning: libaio-0.3.109-13.el7.x86_64.rpm: Header V3 RSA/SHA256 signature: NOKEY, key ID f4a80eb5

error: Failed dependencies:

rpmlib(FileDigests) <= 4.6.0-1 is needed by libaio-0.3.109-13.el7.x86_64

rpmlib(PayloadIsXz) <= 5.2-1 is needed by libaio-0.3.109-13.el7.x86_64

缺少依赖包

于是,根据https://blog.csdn.net/jinwufeiyang/article/details/52069498 教程的方法

执行,注意后面的两个参数是不检测依赖包和强制安装

rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm --nodeps --force

结果如下:

warning: libaio-0.3.109-13.el7.x86_64.rpm: Header V3 RSA/SHA256 signature: NOKEY, key ID f4a80eb5

Preparing...                ########################################### [100%]

   1:libaio                 ########################################### [100%]

error: unpacking of archive failed: cpio: Bad magic

虽然最后还是有报错,不过从后面验证来看,算是成功了

然后,执行程序进行验证

首先,需要到新安装的python虚拟环境的/bin目录下,执行 source activate 这个指令确实是需要source来执行的,不信可以vim activate文件看看,里面第一行写着呢。如果今后有类似的文件,都可以这么效仿一下。

执行成功之后

命令提示符前面会有个新的标记 (虚拟环境名称)

例如这样:(pyenv) [root@webreport2 pyenv]# 

这时候就可以执行 python3 spidey.py 了

此处插播,如果oracle客户端安装不正确的话,会报错:

执行命令:

(pyenv) [root@webreport2 oracle]# python3 /app/pyenv/spider.py 2018-09-04 2018-09-05

报错:

Traceback (most recent call last):

  File "/app/pyenv/spider.py", line 229, in <module>

    main(viewdate)

  File "/app/pyenv/spider.py", line 93, in main

    sqlresult = query('dw_user.t_ciitc_sign_dict')

  File "/app/pyenv/spider.py", line 50, in query

    conn = cx_Oracle.connect('dw_user/[email protected]:1521/octopus_srv1')

cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help

从字面意思来看,安装错误就是找不到对应的系统文件。

此处的原因,是一开始按照网上的“野教程”实施的,另外考虑下载的客户端程序版本也不对,导致的问题。

后续严格执行 https://oracle.github.io/odpi/doc/installation.html#linux  的要求

再次执行命令:

(pyenv) [root@webreport2 pyenv]# python3 spider.py 2018-09-04 2018-09-05

报错:

Traceback (most recent call last):

  File "spider.py", line 229, in <module>

    main(viewdate)

  File "spider.py", line 93, in main

    sqlresult = query('dw_user.t_ciitc_sign_dict')

  File "spider.py", line 50, in query

    conn = cx_Oracle.connect('dw_user/[email protected]:1521/octopus_srv1')

cx_Oracle.DatabaseError: ORA-24454: client host name is not set

这么看来,oracle客户端是正常工作了,可以反馈正确的oracle错误了。从错误来看,是主机名称配置不对。但程序里用的是ip地址。

网上找答案,参考的这篇 https://blog.csdn.net/cd_home/article/details/80309167

执行:

sudo /bin/bash -c "echo '127.0.1.1 ${HOSTNAME}' >> /etc/hosts"

再次执行命令,就正常了

(pyenv) [root@webreport2 pyenv]# python3 spider.py 2018-09-04 2018-09-05

共65家数据待导入

insert into dw_user.T_CIITC_SIGN_LOG_AREA (C_CONTENT,T_INSERT_TM) values('安邦2018-09-04日数据导入完毕','2018-09-07 11:22:13')

安邦2018-09-04日数据导入完毕

insert into dw_user.T_CIITC_SIGN_LOG_AREA (C_CONTENT,T_INSERT_TM) values('安诚2018-09-04日数据导入完毕','2018-09-07 11:22:35')

安诚2018-09-04日数据导入完毕

insert into dw_user.T_CIITC_SIGN_LOG_AREA (C_CONTENT,T_INSERT_TM) values('安华2018-09-04日数据导入完毕','2018-09-07 11:22:48')

安华2018-09-04日数据导入完毕

insert into dw_user.T_CIITC_SIGN_LOG_AREA (C_CONTENT,T_INSERT_TM) values('安联2018-09-04日数据导入完毕','2018-09-07 11:22:53')

查看 配置文件 vim /etc/hosts

多了一行

127.0.1.1 webreport2

因此可见前面所提的主机名称配置不对,是运行程序的主机的名称没有被解析(不是数据库主机),这个似乎和python程序有关。今后类似的报错也可以考虑这个方法

猜你喜欢

转载自www.cnblogs.com/realnew/p/9645123.html