linux连接oracle数据库
有时候需要通过linux服务器连接远程的oracle数据库,那么应该如何操作呢
环境:centos7
工具:
1、Oracle即时客户端(instantclient_18_5)
2、sqlplus软件包,用来执行sqlplus语句
3、cx_Oracle(可选,如果用python去连接就需要,否则不用)

依赖包:libaio
yum -y install libaio*
安装步骤:
1、首先将上述两个客户端文件解压到同一文件夹下,下图表示解压到/usr/local/instantclient_18_5路径下,如图:

2、在network/admin目录下创建文件tnsnames.ora文件,写入连接oracle数据库的文件内容,如图:

上图中HOST位置写入oracle的IP地址,PORT写上端口,SERVICE_NAME写数据库实例名,最左上角的名字可定义
3、接下来配置环境变量,修改文件vim /etc/profile,添加内容如下:
export ora_home=/usr/local # instantclient_18_5所在目录
export PATH=$PATH:$ora_home/instantclient_18_5
export ORACLE_BASE=$ora_home
export ORACLE_HOME=$ORACLE_BASE/instantclient_18_5
export LD_LIBRARY_PATH=$ORACLE_HOME
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
4、 如果机器上没有其他 Oracle 软件会受到影响,请将 Instant Client 永久添加到运行时链接路径, 使用 sudo 或作为 root 用户:
sudo sh -c "echo /usr/local/instantclient_18_5 > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig
#注意:如果不配置这个库,那么将会出现错误提示,DPI-1047: 64-bit Oracle Client library cannot be loaded: "libclntsh.so: cannot open shared object file: No such file or directory"
4、接下来在linux命令窗口执行命令sqlplus登录oracle,命令如下:
sqlplus username/password@//ip:port/orcl
#注意:orcl名字为oracle的实例名字,每个系统不一定,以具体情况为准

执行查询命令后,如图:

从上图可以看出,通过Linux连接oracle成功,并可以查询数据
通过Python方式查询数据
环境:python3
模块名:json、subprocess、cx_Oracle、time
cx_Oracle模块可以通过pip3 install cx_Oracle的方式来安装
python3脚本文件内容如下:

#!/usr/bin/python3
import cx_Oracle #导入魔窟四
import subprocess
import time
import json
def get_value():
ip = subprocess.getoutput("hostname -I") #获取IP
timestamp = int(time.time())
result = []
db = cx_Oracle.connect('username','password','ip:1521/orcl')
r = db.cursor()
sql = "select sysdate - (select max(insert_date) from t7107 ) from dual"
r.execute(sql)
get_all = r.fetchall()
get_result = get_all[0][0]
db.close()
get_value = round(get_result,2)


