这两天要实现一个用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了。

参考资料:

最新文章

  1. NOIP2016滚粗计
  2. 20155315庄艺霖--对做中学的理解及对c语言和Java的看法
  3. 基于python编写的天气抓取程序
  4. SVN使用教程总结[转]
  5. 记录一些容易忘记的属性 -- UINavigationController
  6. NOI题库-小学奥赛QwQ
  7. U3D C#脚本的生命周期
  8. (兼容IE6)又一个提示框思密达,腾讯UED 201401242352
  9. 几年前再用exjts4,如今extjs5发布了,技术更新快,每次给人惊喜
  10. Spring Boot Admin Reference Guide
  11. Delphi 设置文件属性
  12. Loadrunner性能测试分类详(二)
  13. notify丢失、虚假唤醒
  14. Java之谜 —— 来自Neal Gafter的演讲
  15. Python3练习
  16. 洛谷P2257 YY的GCD 莫比乌斯反演
  17. taro Object(...) is not a function 版本更新后,H5端运行出错
  18. 题解-bzoj4221 JOI2012kangaroo
  19. C# 有哪些集合
  20. window server 2012 II8 假陌生 碰到的问题

热门文章

  1. vue-cli 在IE下兼容设置
  2. 攻防世界-进阶-[re1-100]
  3. Ubuntu16安装Nvidia驱动(GTX1060显卡)
  4. 使用.NET 6开发TodoList应用(28)——实现应用程序健康检查
  5. python极简教程06:生成式和装饰器
  6. [Android测试] Appium的一些坑问题错误解决 与 技巧集锦
  7. Servlet Session的使用
  8. Android Native -- Message/Handler/Looper机制(原理篇)
  9. zabbix_proxy3.4安装
  10. MongoDB常用运维命令