首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >libclntsh.so.12.1 :无法在运行节点-oracledb示例时打开共享对象文件错误

libclntsh.so.12.1 :无法在运行节点-oracledb示例时打开共享对象文件错误
EN

Stack Overflow用户
提问于 2015-03-29 15:14:12
回答 2查看 36K关注 0票数 12

我的目标是从Ubuntu连接到VMWare来宾计算机(OpenSuse)上的oracle数据库。

目前,我只安装了先知b驱动程序,并试图运行给定的示例连接程序

下面的步骤来自github 安装页面。到目前为止,我所做的是:

1)由于我已经安装了node.js,所以跳过了步骤3.1

2)成功下载并提取了basicsdk

3)因为我找不到任何名为libaio的包,但我确实找到了libaio1。所以我安装了libaio1

4)将环境变量设置为LD_LIBRARY_PATH,PC机上的内容为/opt/oracle/instantclient

5)正如在步骤3.3中提到的那样;尽管在我的例子中它不是强制性的,但我创建了两个环境变量:OCI_LIB_DIR和Content/opt/oracle/instantclient以及OCI_INC_DIR和Content/opt/oracle/instantclient/sdk/include

6)安装node-oracledb

我正在尝试运行示例连接程序。我正在使用的代码是在这里https://github.com/ishanatmuz/oracle-test。当我运行node connect.js时,我会得到这个错误。

代码语言:javascript
运行
复制
/home/ishan/node.js/oracle-test/node_modules/oracledb/lib/oracledb.js:28
throw err;
          ^
Error: libclntsh.so.12.1: cannot open shared object file: No such file or directory
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/home/ishan/node.js/oracle-test/node_modules/oracledb/lib/oracledb.js:23:15)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (modullibclntsh.so.12.1e.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)

因为我还没有启动VMware来宾机器,所以我希望得到一个关于没有找到这样的数据库实例的错误。然后只在此之后运行VMWare机器并连接到其中的数据库。但是,相反,我得到了cannot open shared object file用于libclntsh.so.12.1的错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-17 00:57:15

我的第一个怀疑是,LD_LIBRARY_PATH实际上没有正确设置或导出。三次检查,它是设置和目录是可读的实际外壳,试图启动节点。

代码语言:javascript
运行
复制
export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2

在启动Node.js的任何shell中都需要这样做。

我还会检查机器上安装了哪些其他Oracle库,并确保没有冲突。

使用ldconfig全局设置路径几乎肯定比设置LD_LIBRARY_PATH容易。你可以这样做:

代码语言:javascript
运行
复制
sudo sh -c "echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig

有关详细信息,请参阅即时客户端安装说明。

如果您有可选的网络配置文件(如sqlnet.oratnsnames.ora ),则可以将它们放在一个目录/opt/oracle/instantclient_12_2/network/admin中,该目录是配置文件的默认位置。见可选Oracle网络配置

更新:如果安装InstantClient19.3RPM包,ldconfig步骤将自动完成。(对于19.3 ZIP文件的安装,仍然需要/ZIP/应该这样做)

即时客户端19将连接到Oracle数据库11.2或更高版本,因此除非您对旧版本有特殊要求,否则请使用即时客户端19。

票数 20
EN

Stack Overflow用户

发布于 2016-06-29 10:23:08

导出只适用于一个过程。它似乎不存在于您的终端窗口(它是单独的进程)。因此,您应该在启动node connect.js之前再次执行以下命令(在要启动节点的同一终端窗口中):

代码语言:javascript
运行
复制
export LD_LIBRARY_PATH=/opt/oracle/instantclient:$LD_LIBRARY_PATH
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29330841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档