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键:
  3. su
    
  4. 输入root账户的密码,然后按Enter键。
  5. 现在您已经切换到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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/554577.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Avi Wigderson:理论计算机科学的巨人

🏆个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🐍 Python工具 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 A…

LeetCode-热题100:98. 验证二叉搜索树

题目描述 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1&#x…

Java项目:基于SSM框架实现的心遗非遗文创电商平台(源码+数据库)

一、项目简介 本项目是一套基于SSM框架实现的心遗非遗文创电商平台 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、…

Linux_CentOS7/8系统 - 关闭图形界面新增用户机制手册

Linux_CentOS7/8系统 - 关闭图形界面新增用户机制手册 在系统完成图形界面安装后重新启动后第一次登入,在图形界面会有新增用户页面,那如果取消关闭可以按以下操作: CTRLALTF2 root账号登录 yum remove gnome-initial-setup -y init 3 init …

微信小程序公共组件封装使用

1.在components目录下创建公共组件,以navbar为例 2.完成组件功能 3.调用,如果很多地方都会用到,建议放全局,如果不是则放在需要引用的文件中 3.1全局引用,在app.json做全局引用配置 3.2局部引用,在需要引入…

【C++庖丁解牛】C++11---统一的列表初始化 | auto | decltype | nullptr | STL中一些变化

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1. C11简介2. 统一的列表…

3.1 海思SS928开发 - 烧写工具 - ToolPlatform 安装及配置

3.1 烧写工具 - ToolPlatform 安装及配置 ToolPlatform 安装 进入到开发虚拟机,将文件 ~/hiss928/sdk/ema_2.0.2.2/pc/ToolPlatform/ToolPlatform-1.0.11-win32-x86_64.zip 拷贝至 PC 上。PC 要求安装了 win7 及以上的操作系统。解压压缩包 ToolPlatform-1.0.11-w…

49-PCIE转网口电路设计

视频链接 PCIE转网口电路设计01_哔哩哔哩_bilibili PCIe转网口电路设计 1、PCIE转网口电路设计基本介绍 pcie转网口的设计,一般有intel (i350)和网讯(wx1860)两种方案。 2、PCIE转网口的方案 2.1、I350 2.2、WX1860 (网迅) 国产化&#…

java文件夹文件比较工具

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.HashSet; import java.util.Set;public class FolderFileNames {public static void main(String[] args) {// 假设您要读取的文件夹路径是 &q…

强大的系统监测工具 iStat Menus for mac最新中文激活版

iStat Menus for Mac是一款功能强大的系统监控工具,专为Mac用户设计,旨在帮助用户全面了解电脑的运行状态,提高电脑的性能和稳定性。 iStat Menus for mac最新中文激活版下载 该软件可以实时监测CPU使用率、内存占用、网络速度、硬盘活动等各…

AGV在提高物流效率方面的优势

agv “仓库是非常讲究高科技的地方” 因为降低成本 提高效率的唯一办法 就是自动化。” 仓储作为物流整个链条的核心点,做好仓储的生产调节才能有效的降低整体物流成本和提升效率,并通过高效、安全、低成本的物流来帮助提升整体供应链效率和能力。 a…

C++异常学习

C语言传统的处理错误的方式 传统的错误处理机制: 终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。返回错误码,缺陷:需要程序员自己去查找对应的错误。如系统的…

Mac 部署 llamafile 大语言模型LLM

文章目录 Github官网本地部署 llamafile 是一种可在你自己的电脑上运行的可执行大型语言模型(LLM),它包含了给定的开放 LLM 的权重,以及运行该模型所需的一切。让人惊喜的是,你无需进行任何安装或配置。 Github https…

scala---基础核心知识(变量定义,数据类型,流程控制,方法定义,函数定义)

一、什么是scala Scala 是一种多范式的编程语言,其设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。 二、为什么要学习scala 1、优雅 2、速度快 3、能融合到hado…

突破深度模型线上耗时瓶颈,我们做了什么?

广告投放是深度模型应用较为普遍的场景之一,虽然深度模型能够提升业务效果,但往往也会付出更加高额的耗时开销。滴滴现今 DSP(Demand-Side Platform) 业务场景中,耗时问题已然成为限制模型发挥的魔咒,为了打…

选课成绩管理系统

文章目录 员工管理系统一、项目演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目(9.9¥) 员工管理系统 一、项目演示 课程管理系统 二、项目介绍 基于springbootvue的前后端分离选课成绩管理系统 该系统可做课程管理…

nginx使用http2,并配置ssl证书

** nginx使用http2,并配置ssl证书 ** 想要使用http2,需要在安装nginx时安装http2模块和ssl模块 前置条件nginx版本需要在1.9.5以上 #解压nginx包 tar -zxvf nginx-1.18.0.tar.gz #进入nginx目录 cd nginx-1.18.0 #执行 ./configure --prefix/usr/lo…

使用 object-fit 属性完美过渡图片

object-fit 属性指定元素的内容应该如何去适应指定容器的高度与宽度, 一般用于 img 和 video 标签,一般可以对这些元素进行保留原始比例的剪切、缩放或者直接进行拉伸等 在我们工作中,经常会遇到附件上传,然后展示多张图片的&…

数字化应用标杆 | 利驰软件助力博方电气提效高达99.8%

数字制造应用标杆合作——利驰✍博方 近日,利驰数字科技(苏州)有限公司(简称 利驰软件)与河南博方电气有限公司(简称 博方电气)成功签订了数字制造应用标杆合作协议,这一里程碑式的合…