使用python登录远程Oracle 19c数据库

使用python登录远程Oracle 19c数据库

测试需求:
oracle数据库安装在linux PC1上,想要在另外一台Linux PC2上跑python脚本登录oracle数据库

Linux PC1配置环境:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
CentOS Linux release 7.8.2003 (Core)

Linux PC2配置环境:
CentOS Linux release 7.7.1908 (Core)
python3.6

安装配置环境

  1. 下载cx-Oracle
    安装命令 pip3 install cx-Oracle

如果没有安装pip3,使用yum install python3-pip

  1. 下载Oracle Instant Client
    想要连接远程oracle数据库必须要安装Oracle Instant Client。从cx_Oracle说明文档可以看到,要连接远程oracle数据库需要Oracle Client libraries,这个可以从Oracle Instant Client获取。
    在这里插入图片描述
    Oracle Instant Client下载地址https://www.oracle.com/database/technologies/instant-client/downloads.html
    本地下载版本instantclient-basic-linux.x64-19.8.0.0.0dbru.zip

上传到linux PC2解压

unzip instantclient-basic-linux.x64-19.8.0.0.0dbru.zip

进入解压路径 network/admin

[root@abc admin]# pwd
/root/server/instantclient_19_8/network/admin
[root@abc admin]# ls
README  tnsnames.ora

新建tnsnames.ora文件,添加oracle数据库信息,具体内容可以参考linux PC1上oracle数据库的tnsnames.ora文件(路径为Oracle安装路径network/admin下)

ORCL =
  (DESCRIPTION =
	(ADDRESS = (PROTOCOL = TCP)(HOST = 10.180.149.209)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

主要确保数据名称,HOST的IP地址正确。

  1. 安装libaio
sudo yum install libaio

有些linux叫libaio1, 如果是Oracle Linux 8安装libnsl

  1. 添加动态链接
    把解压的instantclient_19_8文件夹路径添加动态链接
[root@abc instantclient_19_8]# pwd
/root/server/instantclient_19_8
[root@abc instantclient_19_8]#  sh -c "echo /root/server/instantclient_19_8 > /etc/ld.so.conf.d/oracle-instantclient.conf"
[root@abc instantclient_19_8]# ldconfig

  1. 修改环境变量LD_LIBRARY_PATH
    把解压的instantclient_19_8文件夹路径添加到LD_LIBRARY_PATH
[root@abc instantclient_19_8]# export LD_LIBRARY_PATH=/root/server/instantclient_19_8:$LD_LIBRARY_PATH

如果不执行第4,5步,直接连接数据库会报

cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory".

登录数据库

输入用户名密码,测试登录成功

[root@abc instantclient_19_8]# python3
Python 3.6.0 (default, May 20 2019, 15:40:25)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
>>> conn = cx_Oracle.connect('user/[email protected]:1521/ORCL')
>>> conn.close()

之前琢磨了好久都报错,还是在cx_Oracle的官方指导下才找到的解决方法,附上链接
参考链接:https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html

猜你喜欢

转载自blog.csdn.net/ly_6118/article/details/109181689
今日推荐