3

Oracle JDBC シン ドライバー (11.2.0.2.0 の場合は ojdbc6.jar) と次の JDBC URL 構文を使用して、Oracle (11.2.0.2.0) データベースに接続しようとしています。

jdbc:oracle:thin:@abcd

「abcd」は、以下に示すように、tnsnames.ora ファイルで定義されています。

    abcd, abcd.world, abcd.dk.xyz.com  =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = abcd.dk.xyz.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = abcd)
    )
  )

Oracle® Database JDBC Developer's Guide and Reference-Doracle.net.tns_admin=/etc/tnsnames.oraに従ってVM オプションを提供しました。

アプリケーションを実行すると、次のエラーが発生します。

    Listener refused the connection with the following error:
ORA-12504, TNS:listener was not given the SID in CONNECT_DATA

しかし、エイリアス abcd.world と abcd.dk.xyz.com を tnsnames.ora から削除すると、アプリケーションはデータベースに接続できるようになります。

tnsnames.ora ファイルに複数のエイリアスがある場合、ojdbc ドライバーに問題はありますか?

私のJDKバージョンは1.6.0_31です。

ありがとう、VJ

4

3 に答える 3

0

次の方法で tnsnames.ora 経由で oracle に正常に接続できます

  1. フライウェイをダウンロードして抽出する

  2. Oracle サイトから最新の ojdbcX.jar をダウンロードします。

  3. driversディレクトリのファイルをflywayフォルダーに入れます

  4. flyway フォルダー (flyway cli スクリプトを見つける場所) をパスに配置します (es: Linux エクスポートでは PATH=/home/matteo/opt/flyway

  5. Flyway バイナリ /home/matteo/opt/flyway/flyway を編集して、JAVA_ARGS="-Doracle.net.tns_admin= を入力し、tnsnames.ora を含むフォルダーを指定します。

  6. : Linux の flyway スクリプトには、次の行 JAVA_ARGS="-Djava.security.egd=file:/dev/../dev/urandom $JAVA_ARGS" にバグがあります。上書きされないように $JAVA_ARGS を追加する必要があります。

  7. たとえば flyway.conf のように、プロジェクト フォルダ内のファイルを編集します。

  8. このコマンドでフライウェイをテストする

    flyway -configFile=flyway.conf 情報

この出力を受け取ります

BoxfuseによるFlyway 4.0.3

データベース: jdbc:oracle:thin:@PSR.LAB_CERT (Oracle 11.2)

+---------+-------------+---------------------+--- ------+

| | バージョン | 説明 | | にインストールされています。状態 |

+---------+-------------+---------------------+--- ------+

| | 移行が見つかりません |

+---------+-------------+---------------------+--- ------+

于 2016-07-15T08:49:30.670 に答える
-1

理想的には、マシンに Oracle クライアントをインストールする必要があるため、TNS 経由で接続しないでください。

次のような接続 URL を使用する場合、Oracle クライアントは必要ありません。

jdbc:oracle:thin:@//host:port/service_name
于 2013-01-25T10:53:21.813 に答える