rust连接oracle数据库遇到DPI-1047: Cannot locate a 64-bit Oracle Client library的解决方案
这两天要实现一个用rust连接远程的oracle数据库的需求,所以就需要用rust连接oracle。
在github上面找到一个库,地址:https://github.com/kubo/rust-oracle
直接使用时,发现报错,打印报错信息:
Err(DpiError(DbError { code: 0, offset: 3416999480, message: "DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help", fn_name: "dpiContext_createWithParams", action: "load library" }))
根据 https://oracle.github.io/odpi/doc/installation.html#linux 上的说明,大概查了一下,大概明白了。
这个rust-oracle不是直接连接远程oracle的,而是需要在服务器上加载一个oracle客户端的库,然后调用这个库才可以连接到oracle上。
本来是在macos m1上面开发的,但是m1是arm架构的,而官网只有x64架构的,所以就只能使用虚拟机上的ubuntu了。
下面是操作步骤:
1. sudo mkdir -p /opt/oracle #创建一个目录来保存oracle客户端文件
2. cd /opt/oracle #进入上面创建的这个目录
3. wget https://download.oracle.com/otn_software/linux/instantclient/191000/instantclient-basic-linux.arm64-19.10.0.0.0dbru.zip #下载客户端文件,我下载的是zip格式的,等下再解压
4. unzip instantclient-basic-linux.arm64-19.10.0.0.0dbru.zip #解压下载好的文件到当前目录
解压好之后,ls看一下,可以看到当前目录多了一个目录instantclient_19_10 这个目录里面的文件就是需要的.so库文件,剩下的任务就是要在rust里面能够加载到这个库.
//意思是把/opt/oracle/instantclient_19_10写入到/etc/ld.so.conf.d/oracle-instantclient.conf文件,文件不存在则新建
5. sudo sh -c "echo /opt/oracle/instantclient_19_10 > /etc/ld.so.conf.d/oracle-instantclient.conf"
//用ldconfig 执行文件将 /etc/ld.so.conf(也就是/etc/ld.so.conf.d/文件夹下面的所有conf文件)的数据读入高速缓存中,同时记录到/etc/ld.so.cache文件中。
6.ldconfig
这样的话,linux系统就能把客户端库加载到,然后rust-oracle就能连接到oracle了。
参考资料:
- https://oracle.github.io/odpi/doc/installation.html#oracle-instant-client-zip-files
- https://man7.org/linux/man-pages/man8/ld.so.8.html
rust连接oracle数据库遇到DPI-1047: Cannot locate a 64-bit Oracle Client library的解决方案的更多相关文章
- Actix-web Rust连接Postgres数据库
Actix-web Rust连接Postgres数据库 Rust1.39支持了异步async,await,Actix-web在2.0.0-alpha支持了原生异步写法,所以本文中使用的Actix- ...
- 用Navicat连接Oracle数据库时报错ORA-28547:connection to server failed,probable Oracle Net admin error
用Navicat连接Oracle数据库时出现如下错误 上网一查原来是oci.dll版本不对.因为Navicat是通过Oracle客户端连接Oracle服务器的,Oracle的客户端分为两种,一种是标准 ...
- ORA-12538;ORA-12154;使用PL/SQL dve无法连接远程服务器上的oracle数据库,同时本机上也安装了一个oracle数据库
问题描述:本人使用PL/SQL dve连接远程服务器上的oracle数据库,一直是没有问题的.我想提高下自己在数据库方面的能力就在自己的笔记本上安装了一个oracle数据库实例,安装并配置好之后,使用 ...
- Rust 连接 PostgreSQL 数据库
这次,我们使用 postgres 这个 crate 来连接和操作 PostgreSQL 数据库. 创建好项目后,在 cargo.toml 里添加 postgres 的依赖: 首先,导入相关的类型,并创 ...
- oracle数据库锁表,什么SQL引起了锁表?ORACLE解锁的方法
--查询数据库锁表记录 select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.l ...
- Oracle数据库表索引失效,解决办法:修改Oracle数据库优化器模式
ALTER SYSTEM SET OPTIMIZER_MODE=RULE scope=both; 其他可以选择的模式还有ALL_ROWS/CHOOSE/FIRST_ROWS/ALL_ROWS. 应用系 ...
- python——连接Oracle数据库
前言 Python自带的模块中有很多操纵文件的.我们可以把文件的数据读出来,经过处理还可以将数据写入文件中.但是对于数据的管理和分析来说,数据库还是专业一些.如果Python能和数据库结合在一起,那么 ...
- ASP.NET连接远程Oracle数据库,提示试图加载格式不正确的程序
VS调试远程连接Oracle数据库,一直报错 由于本地计算机是64位的操作系统,而且也确定安装的Oracle客户端是64位的 ,但是一直提示这个错误. 试了很多方法,终于发现可能是 不能在VS中调试的 ...
- JavaWeb项目连接Oracle数据库
参考网址:http://jingyan.baidu.com/article/0320e2c1d4dd0b1b87507b38.html 既然你要链接oracle数据库 ,那么首先就是先打开我们的ora ...
随机推荐
- 使用 navigator.userAgent.toLowerCase() 区别 浏览器 类型
userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值 var ua = navigator.userAgent.toLowerCase(); 返回的是个字符串 ...
- react中实现css动画
- 403 Invalid CORS request 跨域问题 invalid+cors+request什么意思
5.跨域问题 跨域:浏览器对于javascript的同源策略的限制 . 以下情况都属于跨域: 跨域原因说明 示例 域名不同 www.jd.com 与 www.taobao.com 域名相同,端口不同 ...
- Linux环境下的Docker的安装和部署、学习-一
CentOS Docker 安装Docker支持以下的CentOS版本:CentOS 7 (64-bit)CentOS 6.5 (64-bit) 或更高的版本 前提条件目前,CentOS 仅发行版本中 ...
- react中引入图片路劲正确但是页面上不显示或者打包后不能正常显示的问题
一.react中图片引入方式 以前我们用img引入图片只需要如下即可,在react中这样写会报错: <img src="../assets/zzsc1.png" /> ...
- leetcode 718. 最长重复子数组
问题描述 给两个整数数组 A 和 B ,返回两个数组中公共的.长度最长的子数组的长度. 示例: 输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出:3 解释: 长度最长的公共子数 ...
- 进程池与线程池基本使用、协程理论与实操、IO模型、前端、BS架构、HTTP协议与HTML前戏
昨日内容回顾 GIL全局解释器锁 1.在python解释器中 才有GIL的存在(只与解释器有关) 2.GIL本质上其实也是一把互斥锁(并发变串行 牺牲效率保证安全) 3.GIL的存在 是由于Cpyth ...
- Git:解决报错:fatal: The remote end hung up unexpectedly
使用全局代理即可.字面意思连接时间过长,被github中断了连接.
- django-环境搭建-开使hello world!
django的环境安装非常简单,只需用pip安装一个django库就可以了,编辑器选择pycharm pip install django==2.1.2 查看版本号:pip show django C ...
- Typora基础快捷键使用流程
Typora简介 Typora是一个所见即所得的Markdown格式文本编辑器,支持windows.macOS和GNU\Linux操作系统,包括对GitHub Flavored Markdown扩展格 ...