JDBC(JPA経由)を使用したJavaアプリケーションで、ホスト名、ポート、Oracle SIDを使用して開発用データベースに接続していましたが、以下のようになりました。
jdbc:oracle:thin:@oracle.hostserver1.mydomain.ca:1521:XYZ
XYZはOracle SIDでした。現在、私はSIDを使用せず、代わりにOracle "Service Name"を使用する別のOracleデータベースに接続する必要があります。
これを試してみましたが、うまくいきません。
jdbc:oracle:thin:@oracle.hostserver2.mydomain.ca:1522:ABCD
ABCDは、もう一方のデータベースのサービス名です。
何が間違っているのでしょうか?
http://download.oracle.com/docs/cd/B28359_01/java.111/b31224/urls.htm#BEIDHCBA
細いスタイルのサービス名構文。
シン・スタイルのサービス名は、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)))
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)))