我的目标是从Ubuntu连接到VMWare来宾计算机(OpenSuse)上的oracle数据库。
现在,我只安装了oracledb驱动程序,并试图运行给出的示例连接程序。
我要遵循的步骤来自github安装页面。我到目前为止所做的是:
1)因为我已经安装了node.js,所以跳过了步骤3.1。
2)我已经成功下载并提取了3.2中提到的basic和sdk。
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
时,出现此错误。
/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 guest虚拟机,因此,我希望收到有关找不到此类数据库实例的错误。然后只有在那之后运行VMWare计算机并连接到其中的数据库。但是相反,我得到了cannot open shared object file
for的错误libclntsh.so.12.1
。
我的第一个怀疑是LD_LIBRARY_PATH实际上没有正确设置或导出。对其进行三次检查,尝试启动节点的实际shell可以读取该目录。
export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2
您需要在任何启动Node.js的外壳中执行此操作。
我还要检查计算机上还安装了哪些其他Oracle库,并确保没有冲突。
几乎可以肯定,使用ldconfig全局设置路径比设置LD_LIBRARY_PATH更容易。您可以执行以下操作:
sudo sh -c "echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig
有关详细信息,请参见Instant Client安装说明。
如果您有可选的Net配置文件(例如sqlnet.ora
或)tnsnames.ora
,则可以将它们放在目录中/opt/oracle/instantclient_12_2/network/admin
,该目录是配置文件的默认位置。请参阅可选的Oracle Net Configuration。
更新:如果您安装Instant Client 19.3 RPM软件包,该ldconfig
步骤将自动完成。(对于19.3 ZIP文件安装,您仍然需要/可能/应该这样做)
Instant Client 19将连接到Oracle Database 11.2或更高版本,因此,除非对旧版本有特殊要求,否则请使用Instant Client 19。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句