次のように、ホスト名、ポート、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)))