2

TNS-12505: TNS:listener does not currently know of SID given in connect descriptorに表示される内容を超えるエラーが発生しています

Windows 8、Oracle 11.2 XE、Java 1.7.15、および Eclipse Juno SR2 を使用しています。

私が受け取るエラーは次のとおりです。

java.sql.SQLException: リスナーは次のエラーで接続を拒否しました: ORA-12505、TNS: リスナーは現在、接続記述子で指定された SID を認識していません

ドライバーを適切に登録し、listener.ora を編集してサービスを明示的にしました。例として挙げた両方の方法で、SID_LIST_LISTENER の下に次のように追加しました。

(SID_DESC =
   (SID_NAME = XE)
   (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
)

LISTENER = (DESCRIPTION_LIST の下に追加しました

(DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
 (CONNECT_DATA =
   (SERVER = DEDICATED)
   (SERVICE_NAME = XE)
 )

tnsnames.ora には、最初のエントリとして次が含まれます。

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

呼び出しを行うソース コードは次のとおりです。

Class.forName(JDBC_DRIVER);
String connectionString = "jdbc:oracle:thin:localhost:1521/XE";
myConnection = DriverManager.getConnection(connectionString, "myuser", "myuserpw");

また、connectionString で次の順列を実行しました。ここに結果が記載されています:

jdbc:oracle:thin:@localhost:1521:XE // java.sql.SQLException: ORA-01017: invalid username/password; logon denied
jdbc:oracle:thin:localhost:1521:XE  // error ORA 12505
jdbc:oracle:thin:@//localhost:1521:XE // error java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
jdbc:oracle:thin:@localhost:1521/XE // error ORA-01017
jdbc:oracle:thin:@//localhost:1521/XE // error ORA-01017

誰にもアイデアがありますか?

4

2 に答える 2

2

答えがあります!(血まみれの頑固さはそれ自体の報酬だと思います) 私は作成した Connection 呼び出しを変更し、次のように接続文字列を再構築しました。

String connectionString = "jdbc:oracle:thin:myuser/mypw@localhost:1521:XE"; 
myConnection = DriverManager.getConnection(connectionString); 

それはうまくいきます!これで、次の人が Google で検索できます。3 つのパラメーターを使用した呼び出しのバージョンは、試行するたびに爆発しますが、ユーザー名/パスワードが埋め込まれた同じ基本文字列が単一パラメーターの呼び出しで機能します。

これは、XE データベースで提供されているドライバーのバグだと思います。オラクルさん、教えてくれませんか?

于 2013-03-13T17:13:43.667 に答える
0

開いたcmd

コマンドを実行しlsnrctlます。

プロンプトstartに入力しLSNRCTL>ます。

于 2014-04-30T15:08:15.437 に答える