12

私の目標は、Ubuntu から VMWare ゲスト マシン (OpenSuse) 上の oracle データベースに接続することです。

今のところ、oracledbドライバーのみをインストールし、指定された接続プログラムの例を実行しようとしました。

私が従う手順は、github INSTALLページからのものです。私が今までやったことはこれらです:

1) node.js が既にインストールされているため、ステップ 3.1をスキップしました。

2)手順 3.2で説明したように、 basicsdkを正常にダウンロードして展開しました。

3) という名前のパッケージが見つからなかったので、libaio見つかりましlibaio1た。ということでインストールしlibaio1ました。

4) 私は環境変数を作成しました。LD_LIBRARY_PATH私の PC 上の内容は です/opt/oracle/instantclient

5)ステップ 3.3で述べたように。私の場合は必須ではありませんでしたが。OCI_LIB_DIRwith contents/opt/oracle/instantclientOCI_INC_DIRwith contentsの 2 つの環境変数を作成し/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 ゲスト マシンを起動していないため、そのようなデータベースインスタンスが見つからないというエラーが発生することを望んでいました。その後、VMWare マシンを実行し、その中のデータベースに接続します。しかし、代わりにcannot open shared object fileforのエラーが発生していますlibclntsh.so.12.1

4

2 に答える 2

20

私の最初の疑いは、LD_LIBRARY_PATH が実際には正しく設定またはエクスポートされていないということです。設定されていることと、ノードを起動しようとする実際のシェルがディレクトリを読み取れることをトリプルチェックします。

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 のインストール手順を参照してください。

sqlnet.oraまたはのようなオプションのネット構成ファイルがある場合、構成ファイルのデフォルトの場所でtnsnames.oraあるディレクトリに配置できます。オプションのOracle Net構成/opt/oracle/instantclient_12_2/network/adminを参照してください。

更新: Instant Client 19.3 RPM パッケージをインストールすると、このldconfig手順は自動的に実行されます。(19.3 ZIPファイルのインストールには、まだ必要/できる/すべきです)

Instant Client 19 は Oracle Database 11.2 以降に接続するため、古いバージョンに対する特別な要件がない限り、Instant Client 19 を使用してください。

于 2015-04-17T00:57:15.117 に答える