2

Oracle データベースからデータを取得する Node.js アプリケーションを作成しています。最近、DBA がデータベースを別のマシンに移行したところ、すべてが壊れました。

tnsnames.ora および sqlnet.ora ファイルを再作成しようとしました。sqlplus は問題なくサービスに接続できるので、それらが正しいと確信しています。しかし、node-oracle は「ORA-12154: TNS: 指定された接続識別子を解決できませんでした」というエラーを報告し続けます。

これは私には説明がつきません。ORACLE_HOME 環境変数が設定されている場合、node-oracle と sqlplus の両方が同じように機能するはずです。私は何を間違っていますか?

代わりに node-db-oracle に切り替えようとしましたが、同じ問題が報告されます。私は困惑しています。

編集:これは私が接続する方法です:

    database = new oracle.Database({
            hostname: Preferences["oracle_host"],  // FQDN of the database
            port: Preferences["oracle_port"],
            user: Credentials["oracle_login"],
            password: Credentials["oracle_password"],
            database: Preferences["oracle_database"]
        });

    connection = database.connect(function(error) {
            if(error) {
                Utilities.logger.error(error);
            }
            else {
                Utilities.logger.info("Connected to Oracle database " + Preferences["oracle_host"]);    
                if(callback) callback.call(this, collection, options);
                connection = this;
            }

        });
4

3 に答える 3

2

sqlplus を使用して接続できましたが、nodejs を使用して接続できませんでした。私はこのような接続をしていました

oracledb.getConnection(
  {
    user          : "test",
    password      : "test",
    connectString : "150.150.50.50:1521/MYDB"
  }

私にとってうまくいった解決策は、sqlnet.oraファイルを編集して変更することです

names.directory_path = (TNSNAMES)

names.directory_path = (TNSNAMES, EZCONNECT)
于 2015-12-01T10:48:45.230 に答える
0

TNS_ADMIN環境変数を指定してみてください。

Oracle tnsnamesファイルの場所を構成するにはどうすればよいですか?

于 2012-07-19T20:59:10.597 に答える
0

このドキュメントは、を使用して Oracle データベースに接続するのに役立ちましたnode-oracle。私が間違っていたのは、databaseプロパティがデータベースの名前だと思っていたのですが、実際にはservice_name(つまり、Oracle データベースGLOBAL_DBNAMEのファイルで定義されたものであり、 .listener.oraSID_NAME

オプションを使用しnode-oracleて.tnsnames.ora//{hostname}:{port}/{database}

于 2012-12-05T16:42:45.813 に答える