[oracle] ORA-12505:TNS:リスナーは接続記述子で指定されたSIDを現在認識していません



Answers

この問題を引き起こす原因はいくつかありますが、JDBCを使用する前に、SQL * Plusを使用してデータベースに接続できることを確認する必要があります。 SQL * Plusに慣れていない場合は、Oracleの標準的な部分であり、Oracle XEに同梱されているOracleデータベースに接続するためのコマンドライン・ツールです。

JDBCを使用してOracleデータベースに接続する場合は、データベースに直接接続しないでください。 代わりに、TNSリスナーに接続して、データベースに接続します。 エラーORA-12505は、リスナーが起動していて接続できたが、データベースが接続されていることを知らないため、データベースに接続できなかったことを意味します。 これには2つの理由があります。

  • データベースは起動されていませんが、
  • データベースはリスナーの前に開始されたため、リスナーに登録されていません。 データベースが起動しているときには、データベースがすでに実行されている場合は、リスナーに自身を登録します。リスナーが実行されていない場合、データベースは登録されず、リスナーが起動するとデータベースは検索されません。それに登録してください)。

ORA-12505は、リスナーがそのデータベースについて認識しているが、リスナーがデータベースからの通知をデータベースから受信していないことを示します。 (誤ったSIDを使用して間違ったデータベースに接続しようとすると、「TNS:指定された接続識別子を解決できませんでした」というORA-12154エラーが発生します。

サービススナップインで実行されているOracleサービスは何ですか? (コントロールパネル>管理ツール>サービス、またはスタート>実行> services.mscで開きます)サービスOracleServiceXEとOracleXETNSListenerを実行する必要があります。

サービスが開始されている場合は、コマンド・プロンプトで次のいずれかを使用してSQL * Plusのデータベースに接続できますか? (Oracle XEをインストールしたマシンでこれらを実行していると仮定しています)。

sqlplus system/system-password@XE
sqlplus system/system-password
sqlplus / as sysdba

system-passwordを、Oracle XEインストール中にSYSおよびSYSTEMユーザーに設定したパスワードに置き換えます)。

これらの3つのうち最初のものはTNSリスナーを介して接続しますが、後の2つはリスナーを経由せずにデータベースに直接接続し、データベースと同じマシンにいる場合にのみ機能します。 最初のものが失敗し、他の2つが成功すると、JDBC接続も失敗します。 その場合は、他の2つのいずれかを使用してデータベースに接続し、 ALTER SYSTEM REGISTERを実行します。 SQL * Plusを終了し、最初のフォームをもう一度実行してください。

3番目が失敗し、2番目が失敗した場合は、ora_dbaグループにユーザー・アカウントを追加します。 コントロールパネル>コンピュータの管理>ローカルユーザーとグループでこれを行います。

フォームの接続を取得できると

sqlplus system/system-password@XE

JDBCを介してOracle XEに接続できる必要があります。 (ちなみに、データベースに接続するために使用しているJDBCコードは表示していませんが、正しいと思われます;接続文字列の一部が間違っていると、さまざまなエラーが発生します)。

Question

私は、Windows 7の64ビットOSにOracle 11g Express Edition Release 2をインストールしてJDBCプログラムを実行しようとしましたが、次のエラーが表示されます。

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
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.jlcindia.jdbc.JDBCUtil.geOracleConnection(JDBCUtil.java:28)
    at Lab3O.main(Lab3O.java:15)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:385)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
    ... 8 more



私は同じ問題に直面し、OracleServiceXEサービスを再起動して解決しました。 Services.mscに移動し、 'OracleServiceXE'サービスが起動して実行中であることを確認します




JDBCコードを修正してこの問題を解決しました。

正しいJDBC文字列は...

conection = DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:xe","system","ishantyagi");

しかし、私が使っていたJDBC文字列は...

conection = DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:orcl","system","ishantyagi");

だから、xeの代わりにorclを指定したのは、SID名が間違っていたのでこのエラーを示していたのです。




私のケースではうまくいきませんでした。ついに私のOracleとTNSリスナーを再起動し、すべてが機能しました。 2日間苦労した。




同様のエラーに直面して、上記の解決策のいずれかが役に立たなかった。 listner.oraファイルに問題がありました。 誤って、以下のSID_LIST (星の間のセクション*)からSIDを追加しました。

 SID_LIST_LISTENER =
      (SID_LIST =

        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
          (PROGRAM = extproc)
        )
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
          (PROGRAM = extproc)
        )
        )

 *(SID_DESC =
           (SID_NAME = XE)
           (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
         )*
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
          (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
        )
      )


    DEFAULT_SERVICE_LISTENER = (XE)

このエラーを以下のように修正しました:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
       (SID_NAME = XE)
       (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
     )
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
      (PROGRAM = extproc)
    )
    )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
  )


DEFAULT_SERVICE_LISTENER = (XE)

停止したデータベース

リスナーOracleServiceXEおよびOracleXETNSListenerを、コントロールパネル\すべてのコントロールパネルの項目\管理ツール\サービスに移動して自動的に停止しないように手動で停止しました。 データベースを再起動し、魅力的に機能しました。




私も同じ問題に直面しました。 VMwareを使用してWindows XP OSにOracle Express Edition 10gをインストールしましたが、うまくいきました。 10gで提供されているSQLユーティリティでSQLクエリを入力するのは非常に面倒なので、SQLデベロッパーで作業していたので、XPで32ビットSQLデベロッパーをインストールし、DB SID "XE"に接続しようとしました。 しかし、エラーで接続に失敗しました - ORA-12505 TNSリスナーは現在、接続記述子に指定されているSIDを認識していません。 私はこの問題がどのように発生したかについては海に浮かんでいました。なぜなら、SQLユーティリティでうまくいっていて、同じようにInformaticaのマッピングをほとんど作成していなかったからです。 私はパブリックフォーラムで「lsnrctl」のステータスをpingした後、私に提示された提案を適用したが、役に立たなかった。 しかし、今朝私は新しい接続を作り直してみました。そしてVoila、それは何の問題もなく働いていました。 私はいくつかの記事を読んだ後、時にはリスナーがDBの接続や何かを聞くことを推測していますが(私がここの初心者のために私の原油参照として謝っています)、マシンを再起動して再度確認することをお勧めします。




私が広く議論していない一つの可能​​性は、ホストマシン自体のホスト名を解決する際に問題があるかもしれないということです。 / etc / hostsに$(hostname)のエントリがない場合、Oracleリスナーは混乱して起動しません。

それは私の問題であることが判明し、/ etc / hostsにホスト名とIPアドレスを追加することで問題は解決しました。




突然、同じ問題がいくつかのcmdをつぶしてしまった。 ORACLE SERVICE XEの実行が停止しました。 管理ツールから再起動するのに2秒かかりました。 tnx!




TNSNAMES.oraファイルで " SID "を " SERVICE_NAME "に変更してこの問題を修正しました。

あなたのDBがSIDまたはSERVICE_NAMEを要求するかどうか確認してください。

乾杯




このエラーが発生すると、「ORA-12505、TNS:リスナーは接続記述子で指定されたSIDを現在認識していません」

解決策:サービスを開き、 OracleServiceXEを起動してから接続を試みます。




Oracle Express Editionを使用している場合は、このURLが必要です

jdbc:oracle:thin:@localhost:1521:xeまたはjdbc:oracle:thin:@localhost:1521 / XE

私はpom.xmlにliquibase configプラグインと同様の問題がありました。 私の設定を変更しました:

`<configuration>
   <driver>oracle.jdbc.OracleDriver</driver>
   <url>jdbc:oracle:thin:@localhost:1521:xe</url>
   <defaultSchemaName></defaultSchemaName>
   <username>****</username>
   <password>****</password>
</configuration>`



Related



Tags

oracle   jdbc