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
最新文章
- NOIP2016滚粗计
- 20155315庄艺霖--对做中学的理解及对c语言和Java的看法
- 基于python编写的天气抓取程序
- SVN使用教程总结[转]
- 记录一些容易忘记的属性 -- UINavigationController
- NOI题库-小学奥赛QwQ
- U3D C#脚本的生命周期
- (兼容IE6)又一个提示框思密达,腾讯UED 201401242352
- 几年前再用exjts4,如今extjs5发布了,技术更新快,每次给人惊喜
- Spring Boot Admin Reference Guide
- Delphi 设置文件属性
- Loadrunner性能测试分类详(二)
- notify丢失、虚假唤醒
- Java之谜 —— 来自Neal Gafter的演讲
- Python3练习
- 洛谷P2257 YY的GCD 莫比乌斯反演
- taro Object(...) is not a function 版本更新后,H5端运行出错
- 题解-bzoj4221 JOI2012kangaroo
- C# 有哪些集合
- window server 2012 II8 假陌生 碰到的问题
热门文章
- vue-cli 在IE下兼容设置
- 攻防世界-进阶-[re1-100]
- Ubuntu16安装Nvidia驱动(GTX1060显卡)
- 使用.NET 6开发TodoList应用(28)——实现应用程序健康检查
- python极简教程06:生成式和装饰器
- [Android测试] Appium的一些坑问题错误解决 与 技巧集锦
- Servlet Session的使用
- Android Native -- Message/Handler/Looper机制(原理篇)
- zabbix_proxy3.4安装
- MongoDB常用运维命令