279

次のように、ホスト名、ポート、およびOracle SIDを使用して開発データベースに接続していたJDBC(JPA経由)を使用するJavaアプリケーションがあります。

jdbc:oracle:thin:@oracle.hostserver1.mydomain.ca:1521:XYZ

XYZはOracleSIDでした。次に、SIDを使用せず、代わりにOracleの「サービス名」を使用する別のOracleデータベースに接続する必要があります。

私はこれを試しましたが、機能しません:

jdbc:oracle:thin:@oracle.hostserver2.mydomain.ca:1522:ABCD

ABCDは、他のデータベースのサービス名です。

私は何が間違っているのですか?

4

8 に答える 8

471

http://download.oracle.com/docs/cd/B28359_01/java.111/b31224/urls.htm#BEIDHCBA

Thin スタイルのサービス名の構文

Thin スタイルのサービス名は、JDBC Thin ドライバーでのみサポートされます。構文は次のとおりです。

@//ホスト名:ポート番号/サービス名

例えば:

jdbc:oracle:thin:scott/tiger@//myhost:1521/myservicename

だから私は試してみます:

jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD

また、Robert Greathouse の回答に従って、以下のように JDBC URL で TNS 名を指定することもできます。

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL=TCP)(HOST=blah.example.com)(PORT=1521)))(CONNECT_DATA=(SID=BLAHSID)(GLOBAL_NAME=BLAHSID.WORLD)(SERVER=DEDICATED)))
于 2011-01-28T19:13:31.067 に答える
103

したがって、これを機能させるには2つの簡単な方法があります。他の特別な Oracle 固有の接続プロパティを指定する必要がない場合、Bert F によって投稿されたソリューションは正常に機能します。その形式は次のとおりです。

jdbc:oracle:thin:@//HOSTNAME:PORT/SERVICENAME

ただし、他の Oracle 固有の接続プロパティを指定する必要がある場合は、長い TNSNAMES スタイルを使用する必要があります。最近、Oracle共有接続を有効にするためにこれを行う必要がありました(サーバーが独自の接続プールを行う場合)。TNS 形式は次のとおりです。

jdbc:oracle:thin:@(description=(address=(host=HOSTNAME)(protocol=tcp)(port=PORT))(connect_data=(service_name=SERVICENAME)(server=SHARED)))

Oracle TNSNAMES ファイル形式に精通している場合、これは見覚えがあるはずです。そうでない場合は、Google で詳細を確認してください。

于 2011-05-18T15:17:43.287 に答える
25

以下のように、JDBC URL で TNS 名を指定することもできます。

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL=TCP)(HOST=blah.example.com)(PORT=1521)))(CONNECT_DATA=(SID=BLAHSID)(GLOBAL_NAME=BLAHSID.WORLD)(SERVER=DEDICATED)))
于 2011-01-28T19:23:04.630 に答える
20

これを試して:jdbc:oracle:thin:@oracle.hostserver2.mydomain.ca:1522/ABCD

編集:以下のコメントごとに、これは実際には正しいです:(jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCDに注意してください//

お役立ち記事へのリンクはこちら

于 2011-01-28T19:10:28.263 に答える
1

Eclipseを使用してSIDなしでOracleに接続している場合。選択するドライバは 2 つあります。つまり、Oracle シン ドライバとその他のドライバです。他のドライバーを選択し、データベース列にサービス名を入力します。これで、SID なしでサービス名を使用して直接接続できるようになりました。

于 2016-05-24T12:12:23.620 に答える