2

次のURLを使用してOracleとjdbcを接続しようとしています

String url = "jdbc:oracle:thin:@<host>:1522:dev;includeSynonyms=true";

しかし、それは次のエラーをスローしています。

java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
<host>:1522:dev;includeSynonyms=true

URLからプロパティ(includeSynonyms = true)を削除すると、接続できます。

使ってますojdbc14.jar

私を助けてください

4

3 に答える 3

3

これを URL の一部として設定することはできません (AFAIK)。OracleDriverのドキュメントに従って:

データベース URL とプロパティ オブジェクトの指定

次の署名は、ユーザー名とパスワードを指定するプロパティ オブジェクトと共に、URL を取ります (おそらく他のものと一緒に):

getConnection(String URL, Properties info);

URL の形式は次のとおりです。

jdbc:oracle:<drivertype>:@<database>

URL に加えて、標準 Java Properties クラスのオブジェクトを入力として使用します。例えば:

java.util.Properties info = new java.util.Properties();
info.put ("user", "scott");
info.put ("password","tiger");
info.put ("defaultRowPrefetch","15");
getConnection ("jdbc:oracle:oci8:@",info);

Oracle JDBC ドライバーがサポートする接続プロパティを一覧表示する表には次のものが含まれincludeSynonymsているため、次のことができるはずです。

String url = "jdbc:oracle:thin:@//<HOST>:1522/dev"
java.util.Properties info = new java.util.Properties();
info.put ("includeSynonyms", "true");
getConnection (url, info);

残念ながら、テストされていません。お使いのドライバーのバージョンで動作するかどうかはわかりません。後でOracleConnectionまたはOracleConnectionWrapperを介して設定することもでき ます。

また、URL フォームが 1.4 ドライバーで動作するかどうかは完全にはわかりませんが、動作すると思います。元の@<host>:1522:devフォームを使用する必要があるかもしれません。また、簡易接続形式でdevは、 は SID ではなくサービス名を参照するため、同じではない可能性があることに注意してください。これに問題があるかどうかを確認してくださいlsnrctl status

于 2013-01-22T11:01:15.227 に答える
0

IP アドレスにurl変換せずに、変数から URL を使用しますか? <host>その場合は、単に Oracle サーバーのアドレスに変更します。

また、JDBC を介した tp Oracle の接続についてもお読みください: http://docs.oracle.com/cd/B10501_01/java.920/a96654/basic.htmincludeSynonyms

于 2013-01-22T11:06:37.793 に答える
-1

シンボルの後に TNS 名を追加する必要があります@。つまり、oracle db tns 名が dev の場合、次のように変換されます。

String url = "jdbc:oracle:thin:@//<HOST_IP>:1522:dev;includeSynonyms=true";

フルコロンの代わりにスラッシュを使用する

于 2013-01-22T09:50:00.003 に答える