SIDの代わりにサービス名を使用してOracleに接続する方法 質問する

SIDの代わりにサービス名を使用してOracleに接続する方法 質問する

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

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

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

これを試してみましたが、うまくいきませんでした:

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

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

何が間違っているのでしょうか?

ベストアンサー1

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

シンスタイルのサービス名構文

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)))

おすすめ記事