金句:若是沒把握,最好先Google一下。html
一、嚴格按照 https://oracle.github.io/odpi/doc/installation.html#linux 教程一步步作node
包括下載的軟件的版本,安裝的位置,都按照要求準確實施python
過程當中要求安裝 libaio ,原本是使用yum方式便可linux
可是採起各類方法git
(1)用系統自帶的yumgithub
提示:web
This system is not registered with RHN.sql
RHN support will be disabled.數據庫
Setting up Install Processvim
緣由是這個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/dw_user@10.1.65.118: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/dw_user@10.1.65.118: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程序有關。從此相似的報錯也能夠考慮這個方法