Python连接Oracle数据库问题解决及Linux服务器操作知识

背景说明

最近在做一个视频分析的项目,然后需要将视频分析的数据写入到oracle数据库,直接在服务器上测试数据库连接的时候出现了这个bug提示,自己通过不断的研究探讨,最终把这个问题成功进行了解决,在这里进行一下记录和分享。

数据库测试代码如下(数据库连接信息需要根据自己的实际需要进行改写):

# -*- coding='utf-8' -*-
'''
功能:使用python连接oracle数据库进行测试连接成功与否
'''
import cx_Oracle

try:
    db=cx_Oracle.connect('admin','admin','10.192.168.51:1526/fuck')
    cursor = db.cursor()
    db.close()
    print('数据库连接成功!')
except:
    print('数据库连接失败!')

也可以参考如下方式:

import cx_Oracle

# 连接数据库
def connect_to_database(username, password, host, port, service_name):
    try:
        dsn_tns = cx_Oracle.makedsn(host, port, service_name=service_name)
        connection = cx_Oracle.connect(username, password, dsn_tns)
        print("数据库连接成功")
        connection.close()
    except Exception as e:
        print("数据库连接失败:", e)

# 替换以下参数为您实际的数据库连接信息
username = 'your_username'
password = 'your_password'
host = 'your_host'
port = 1521  # 默认端口为1521
service_name = 'your_service_name'

# 调用连接数据库函数
connect_to_database(username, password, host, port, service_name)

在上面的代码中,我们使用了Python的cx_Oracle库来连接到Oracle数据库。您需要根据实际情况,将usernamepasswordhostservice_name参数替换为您的数据库连接信息。在安装完cx_Oracle依赖库后,运行代码弹出的bug如下: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".

问题分析及解决

这个错误表明您的系统缺少Oracle客户端库文件,导致cx_Oracle无法找到所需的库文件。要解决这个问题,您需要安装Oracle客户端库。以下是一些步骤,您可以尝试解决这个问题:

1.下载并安装Oracle Instant Client:您可以从Oracle官方网站下载适用于Linux的Oracle Instant Client。根据您的系统架构(32位或64位)选择适当的版本。解压缩安装包,并将目录添加到您的系统的LD_LIBRARY_PATH环境变量中。例如,您可以将以下行添加到您的.bashrc文件中:

export LD_LIBRARY_PATH=/path/to/instantclient_19_10:$LD_LIBRARY_PATH

确保将/path/to/instantclient_19_10替换为您解压缩安装包的实际路径。

2.设置ORACLE_HOME环境变量:在安装Oracle Instant Client后,您还可以设置一个ORACLE_HOME环境变量,指向Oracle Instant Client的安装目录。例如:

export ORACLE_HOME=/path/to/instantclient_19_10

3.重新运行cx_Oracle安装:一旦设置了Oracle客户端库,您可以重新运行pip install cx_Oracle来安装cx_Oracle库。这时应该能找到所需的Oracle客户端库文件。

通过这些步骤,通常应该能够解决Cannot locate a 64-bit Oracle Client library错误,并成功安装cx_Oracle库。

资料分享

自己使用的oracle客户端windows版本和Linux版本程序文件链接如下:

Linux:https://download.csdn.net/download/mzl_18353516147/89161065

windows: https://download.csdn.net/download/mzl_18353516147/89162575

服务器操作

在windows上添加oracle的系统路径比较容易,在Linux系统上,如果不是很熟悉的话,会有一点小麻烦,自己使用的是centos系统,这里也分享一下自己的经验和操作过程。

1.切换用户

有时候我们登录Linux服务器使用的是远端登录,一般为了安全起见,远端登录不支持使用root账号登录,我们可以使用别的账号登录后切换到root账号,这样方便我们操作。通常可以使用以下几种方式:

1.使用su命令:

  1. 打开终端。
  2. 输入以下命令并按Enter键:
   su
  1. 输入root账户的密码,然后按Enter键。
  2. 现在您已经切换到root账户。

2.使用sudo命令:

  1. 打开终端。

  2. 输入以下命令并按Enter键:

    sudo su
    
  3. 输入当前用户的密码,然后按Enter键。

  4. 现在您已经切换到root账户。

**提醒:**使用sudo切换到root账户的方法更为常见,因为它提供了更好的安全性和日志记录。确保在使用root账户时谨慎操作,以免意外删除重要文件或使系统不稳定。

2.下载和解压客户端文件

可以在本地登录oracle官网下载相应的oracle客户端程序(最好是直接搜索,通常需要注册oracle账号,一般是邮箱名),上传到服务器目录上,要注意客户端版本和数据库版本的匹配:

然后使用下列命令解压缩包:

unzip oracle_client_package.zip

tar -xzvf oracle_client_package.tar.gz

3. 查看当前系统相关的命令

在Linux系统中,您可以使用以下命令来查看当前系统的信息:

1.查看Linux发行版和版本号:

lsb_release -a

2.查看Linux内核版本:

uname -r

3.查看系统架构(32位或64位):

uname -m

4.查看CPU信息:

cat /proc/cpuinfo

5.查看内存信息:

free -h

6.查看硬盘空间:

df -h

7.查看当前登录用户:

who

8.查看系统启动时间:

uptime

这一步的目的主要是通过查看自己系统属性来确定一下自己的服务器系统是ubuntu还是centos,以及内核的相关信息,方便找到最合适的版本。

4.配置oracle系统路径

如果你的oracle客户端文件夹解压路径为**'/root',** 文件夹名字为**'instantclient_11_2** ':

则可以使用如下三行命令进行临时环境变量设置:

export ORACLE_HOME=/root/instantclient_11_2
export PATH=$PATH:$ORACLE_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME

也可以设置永久临时变量:

要将一个文件夹路径添加到 CentOS 的系统路径中,可以通过修改环境变量 PATH 来实现。以下是在 CentOS 中将一个文件夹路径添加到系统路径的步骤:

1.打开终端,并使用以下命令查看当前系统路径:

echo $PATH

2.确定要添加到系统路径的文件夹路径,假设要添加的路径为 /path/to/your/folder

3.使用以下命令将该文件夹路径添加到系统路径中:

export PATH=$PATH:/path/to/your/folder

请注意,这种添加方式只会在当前终端会话中生效,如果希望永久性地将该路径添加到系统路径中,需要将上述命令添加到 shell 的配置文件中。常用的配置文件包括 ~/.bashrc~/.bash_profile/etc/profile,具体添加方式可以根据您使用的 shell 而定。

4.如果要让修改立即生效,可以执行以下命令使配置文件生效:

source ~/.bashrc

或者直接注销并重新登录系统。

5.最后,可以使用 echo $PATH 命令验证已经成功将文件夹路径添加到系统路径中。

通过以上步骤,您可以在 CentOS 中将一个文件夹路径添加到系统路径中,以便系统能够找到该文件夹中的可执行文件。

5.Linux配置环境变量的文件有哪些

在 CentOS 系统中,可以在 /etc/profile 文件中添加全局环境变量,该文件会在用户登录时被加载。另外,可以在用户的个人配置文件中添加环境变量,如 ~/.bash_profile~/.bashrc 文件。以下是 CentOS 中常见的环境变量配置文件和其作用:

1./etc/profile
/etc/profile 文件是系统范围内的配置文件,用户登录时会加载该文件。可以在该文件中添加全局的环境变量,对所有用户生效。

2./etc/bashrc
/etc/bashrc 文件也是系统范围内的配置文件,用户每次启动新的交互式 Bash shell 时会加载该文件。通常会在该文件中设置系统范围的环境变量和 Bash shell 的配置。

3.~/.bash_profile
~/.bash_profile 文件是当前用户的个人配置文件,用户登录时会加载该文件。可以在该文件中添加个人的环境变量和其他配置。

4.~/.bashrc
~/.bashrc 文件也是当前用户的个人配置文件,每次启动新的交互式 Bash shell 时会加载该文件。通常会在该文件中设置个人的环境变量和 Bash shell 的配置。

如果需要添加全局的环境变量,可以编辑 /etc/profile/etc/bashrc 文件;如果需要添加个人的环境变量,可以编辑 ~/.bash_profile~/.bashrc 文件。编辑完成后,可以通过 source 命令使配置文件生效,例如:

source /etc/profile

请注意,在编辑配置文件时,请谨慎操作,确保语法正确且不会影响系统的正常运行。

相关推荐
州周几秒前
Ftp目录整个下载
linux·服务器·数据库
Jackey_Song_Odd1 分钟前
Ubuntu 24.04.1 解决部分中文字符(门、径)显示错误的问题
linux·ubuntu
码农君莫笑5 分钟前
使用blazor开发信息管理系统的应用场景
数据库·信息可视化·c#·.net·visual studio
NiNg_1_23412 分钟前
Echarts连接数据库,实时绘制图表详解
前端·数据库·echarts
kaixin_learn_qt_ing14 分钟前
Linux export命令
linux
余额不足1213816 分钟前
C语言基础十六:枚举、c语言中文件的读写操作
linux·c语言·算法
冷曦_sole21 分钟前
linux-19 根文件系统(一)
linux·运维·服务器
AI大模型学徒23 分钟前
Linux(二)_清理空间
linux·运维·服务器
Azoner27 分钟前
postgresql安装部署(linux)
数据库·postgresql
云川之下33 分钟前
【linux】 unshare -user -r /bin/bash命令详解
linux·bash·unshare