web-dev-qa-db-ja.com

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

次の接続文字列を使用して、NetBeansからOracle 10.2.0に接続しようとしています。

jdbc:Oracle:thin:@localhost:1521:XE

最も奇妙な部分は、リブートするまですべてが正常に機能したことです。私は常にこのTNS-12505エラーを取得し始めました。 listener.logの最後のエントリを見てください:

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production on 14-APR-2011 13:46:48

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

System parameter file is D:\oraclexe\app\Oracle\product\10.2.0\server\network\admin\listener.ora
Log messages written to D:\oraclexe\app\Oracle\product\10.2.0\server\network\log\listener.log
Trace information written to D:\oraclexe\app\Oracle\product\10.2.0\server\network\trace\listener.trc
Trace level is currently 0

Started with pid=3460
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC_FOR_XEipc)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=Brodyaga-PC)(PORT=1521)))
Listener completed notification to CRS on start

TIMESTAMP * CONNECT DATA [* PROTOCOL INFO] * EVENT [* SID] * RETURN CODE
14-APR-2011 13:48:54 * (CONNECT_DATA=(SID=XE)(CID=(PROGRAM=JDBC Thin Client)(Host=__jdbc__)(USER=Brodyaga))) * (ADDRESS=(PROTOCOL=tcp)(Host=127.0.0.1)(PORT=58458)) * establish * XE * 12505
TNS-12505: TNS:listener does not currently know of SID given in connect descriptor
14-APR-2011 13:49:00 * (CONNECT_DATA=(SID=XE)(CID=(PROGRAM=JDBC Thin Client)(Host=__jdbc__)(USER=Brodyaga))) * (ADDRESS=(PROTOCOL=tcp)(Host=127.0.0.1)(PORT=58481)) * establish * XE * 12505
TNS-12505: TNS:listener does not currently know of SID given in connect descriptor
14-APR-2011 13:49:02 * (CONNECT_DATA=(SID=XE)(CID=(PROGRAM=JDBC Thin Client)(Host=__jdbc__)(USER=Brodyaga))) * (ADDRESS=(PROTOCOL=tcp)(Host=127.0.0.1)(PORT=58487)) * establish * XE * 12505
TNS-12505: TNS:listener does not currently know of SID given in connect descriptor
14-APR-2011 13:50:23 * (CONNECT_DATA=(CID=(PROGRAM=)(Host=)(USER=Brodyaga))(COMMAND=services)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=169869568)) * services * 0

最初の3つのエントリは、NetBeansからの接続の試みです。 4番目の、SQL * Plusを介した接続は、正常に機能しました。

ここに私のlistener.oraの内容があります:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (Oracle_HOME = D:\oraclexe\app\Oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (Oracle_HOME = D:\oraclexe\app\Oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(Host = Brodyaga-PC)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)

そしてtnsnames.ora

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(Host = Brodyaga-PC)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

ORACLR_CONNECTION_DATA = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) 
    ) 
    (CONNECT_DATA = 
      (SID = CLRExtProc) 
      (PRESENTATION = RO) 
    ) 
  ) 

そして、> lsnrctl servicesからの出力

C:\Users\Brodyaga>lsnrctl services

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 14-APR-2011 13:59
:45

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0
         LOCAL SERVER
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0
         LOCAL SERVER
The command completed successfully

両方のOracleサービスが開始され、SQL * Plusは問題なく接続します。

このエラーの回避策はありますか?

52
Anton

必要インスタンスをリスナーに登録するために、XEのSIDエントリを追加します。

Oracle XEのインストール後、すべてが正常に見えますが、発行すると

C:\>sqlplus / as sysdba
SQL>shutdown immediate
SQL>startup

TNS-12505: TNS:listener does not currently know of SID given in connect descriptor

インスタンスはリスナーに登録されません。

次のようにlistener.oraを編集してください。

SID_LIST_LISTENER =
  (SID_LIST =
     (SID_DESC =
       (SID_NAME = XE)
       (Oracle_HOME = C:\oraclexe\app\Oracle\product\10.2.0\server)
     )
     (SID_DESC =
        (SID_NAME = PLSExtProc)
        (Oracle_HOME = D:\oraclexe\app\Oracle\product\10.2.0\server)
        (PROGRAM = extproc)
     )
     (SID_DESC =
       (SID_NAME = CLRExtProc)
       (Oracle_HOME = D:\oraclexe\app\Oracle\product\10.2.0\server)
       (PROGRAM = extproc)
     )
  )

この問題は、Windows 7にOracle XEをインストールしたときに発生しました。WindowsXPではこの問題に直面しませんでした。通常、インスタンスはリスナーに自動的に登録されるため、このエントリは必要ありません。 Linux(Fedora)でOracle XEを実行している場合、sid-listにXEを追加する必要はありません。

72
Bjarte Brandt

これは私のために働いた-私は上記のすべてをしてから変更した:

jdbc.databaseurl=jdbc:Oracle:thin:@localhost:1521:xe

に:

jdbc.databaseurl=jdbc:Oracle:thin:@localhost:1521/xe
43
The Camster

Oracle仮想マシンでIPを変更した後、リスナーは再び機能しませんでした。最後に、これらのコマンドは問題を解決しました(192.168.10.200は新しいIPです)

[Oracle @ oracle admin] $ sqlplus/as sysdba

SQL * Plus:2016年5月10日火曜日12:57:37にリリース11.2.0.1.0実稼働

Copyright(c)1982、2009、Oracle。全著作権所有。

接続先:Oracle Database 11g Enterprise Editionリリース11.2.0.1.0-パーティション化、OLAP、データマイニングおよびReal Application Testingオプションを備えた64ビット本番

SQL> alter system set local_listener = '(ADDRESS =(PROTOCOL = tcp)(Host = 192.168.10.200)(PORT = 1521))' scope = both;

システムが変更されました。

SQL>システムレジスタの変更。

システムが変更されました。

SQL> exit

4
Jose Zorrilla

内部ネットワークと、DMZにあるエラーを報告するデータベースサーバーとの間のアクセスを制限するためにファイアウォールを変更した後、この問題に遭遇しました。変更が行われるまで通信は正常に機能し、システムとデータベースの再起動は役に立ちませんでした。私の場合、両方のOracle XE11gR2インストールがWindows上にあります。

闘争の日の後、私は http://edstevensdba.wordpress.com/2011/07/30/exploring-the-local_listener-parameter/ を見つけ、問題を次のように解決しました。

alter system set local_listener='(ADDRESS=(PROTOCOL=tcp)(Host=[my server's ip])(PORT=1521))' scope=both;
alter system register;

ik_zelfで提案されている「変更システムレジスタ」が原因で、これが機能した可能性があります。 listener.oraおよびtnsnames.oraの関連する場所にIPがすでに設定されています。

4
robm

ステップ1-DBリスナーのステータスを確認する

   lsnrctl status

必要なリスナー(この例では「orcl」)が表示されていないことに注意してください。

ステップ2 – sqlplus経由でログイン

   sqlplus sys/Oracle as sysdba

Sqlplusから次のエラーメッセージが返されました。

   Writing audit records to Windows Event Log failed

ステップ3 – Windowsイベントビューア(eventvwr.exe)に移動します

[Windowsログ]で、[アプリケーション]を右クリックし、[ログのクリア]を選択します。システムについても同じことを行います。

[アプリケーション]を右クリックして[プロパティ]を選択することも賢明です。次に、[ログサイズ]で、[最大ログサイズに達したとき]で次のオプションを選択します:[必要に応じてイベントを上書きする]。これにより、ログが最大になり、DBが起動しなくなります。

Windows Vista以降では、次のコマンドを実行してアプリケーションログをクリアできます。

   wevtutil cl Application

ステップ4 – sqlplus経由でログインする

   sqlplus sys/Oracle as sysdba

これで、エラーメッセージなしでログインできるようになります。

ステップ5-DBリスナーのステータスを確認する

   lsnrctl status

これで、リスナーが実行されていることがわかります。

ステップ6 – UCMを開始する

UCMが起動します。

この質問に対するより詳細な回答については、私の完全な ブログ投稿 を読むことができます。

3
RedstoneCS

Windows 8でOracle xpressエディション11.2を実行していますが、sqldeveloperを使用してDBに接続しようとすると同じエラーが発生しました。

上記のBrandtの回答に従ってlistener.oraを編集し、マシンを再起動しても問題は修正されませんでした。

次のことを行いました。コントロールパネルに移動->管理ツール->サービス「OracleServiceXE」というサービスが実行されていないことがわかります。

私はそれを開始し、再び接続しようとしましたが、問題は解決しました。

3
Hassaan Hassaan

前述のとおり、sidが機能する前に、コロン:を削除し、スラッシュ/に置き換えます。

私も前にこの問題を経験しました。

2
Mohit Tilva

Windows 7でも同じ問題が発生しました。原因は、Cisco AnyConnect Secure Mobility Clientを使用してVPNに接続していたことです。

2
kravemir

明らかにOracle_SID XEを持つデータベースは、listener.oraで定義されていません。データベースが正常に開くと、データベースはデフォルトのリスナーに登録され、ポート1521のリスナーになりますので問題ありません。

  1. データベースは開いていますか?
  2. リスナー/データベースの開始順序は何ですか?
  3. エラーは持続しますか?

データベースがリスナーの前に起動する場合、データベースには登録するリスナーがありません。それは数分ごとに行われるので、しばらくすると、登録が行われたためにエラーがなくなると思います。これを高速化するためにalter system register;を発行できます。データベースが制限モードの場合、サービスを使用した接続は失敗します。 Oracle_SIDを使用しているため、それは問題ではありません。

使用中の名前も確認してください。ローカルホストはBrodyaga-PCと同じアドレスに解決していますか? jdbc文字列ではlocalhostを使用し、リスナーはBrodyaga-PCをリッスンします。 localhost 127.0.0.1ですか?

1
ik_zelf

チェック-LSNRCTL> stat次のような結果が得られました-

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1522)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for 32-bit Windows: Version 11.2.0.1.0 - Production 
Start Date                17-APR-2016 10:12:38 
Uptime                    0 days 10 hr. 6 min. 16 sec 
Trace Level               off 
Security                  ON: Local OS Authentication 
SNMP                      OFF
Listener Parameter File 
                        C:\product\11.2.0\dbhome_1\network\admin\listener.ora
Listener Log File        c:\app\admin\diag\tnslsnr\admin-PC\listener\alert\log.xml Listening
Endpoints Summary...  
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1522ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=127.0.0.1)(PORT=1522)))
Services Summary... Service "CLRExtProc" has 1 instance(s).   Instance
 "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).   Instance "orcl", status READY, has 1 handler(s) for this service... 
Service "orclXDB" has 1 instance(s). 
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully.

上記の詳細から-私のポート番号は-1522であり、「orcl」インスタンスを使用して接続を作成できます-したがって、ポートを1522として、インスタンスを「orcl」として使用しました-現在のURLは-

DriverManager.getConnection("jdbc:Oracle:thin:@localhost:1522:orcl", "SYS as SYSDBA","password");

それは私のために働いたので、コマンドプロンプトでLSNRCTL> statを確認し、それに応じて接続URLを設定してください。
誰かに役立つことを願っています。

1
Anurag_BEHS

「HARI」がSIDであるOracleServiceHariを起動すると、私のために働いた。

同じ問題に直面している他の人は、サービスのステータスをチェックするかもしれません。

1
Hari Chaudhary

私の場合、Windows 10で次の手順を実行しました。

  1. gotoコントロールパネル
  2. 管理をクリックします
  3. クリックサービス
  4. OracelServeceXEOracleXEClrAgengOracleXETNSListenerを検索
  5. 右クリックしてStart/Restartを押します
  6. プロセス完了後。動作するか、動作するかを確認してください;)
  7. 完了
  8. ではごきげんよう。
1
Kshresthasan

確認する別の可能性のために、接続URLで指定されたポート番号が正しくないというまったく同じ問題を思い付きました。新しいOracle11gインスタンスを作成し、同じポート1521を使用していた以前のインスタンスを強制終了するのを忘れたため、新しいインスタンスはポート1522で自動的に起動しました。ポート番号を編集すると問題が解決しました。

0
oodograss

windowsの検索オプションで[管理ツール]> [コンポーネントサービス]に移動しますOracleServiceXE(このサービスを開始します)

0
navis1692

タスクマネージャーに移動して、以下のサービスが実行されているかどうかを確認します(サービスを開始しない場合)。

OracleXETNSListener

OracleXEClrAgent

OracleServiceXE
0
user9813237

Oracle XE 11.2をインストールした直後に、同じ問題に直面しました。 DBAの友人を読んで相談した後、次のコマンドを実行しました。

C:\>tnsping xe

TNS Ping Utility for 64-bit Windows: Version 11.2.0.2.0 - Production on 11-ENE-2017 14:27:44

Copyright (c) 1997, 2014, Oracle.  All rights reserved.

Used parameter files:
C:\oraclexe\app\Oracle\product\11.2.0\server\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(Host = myLaptop)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))

OK(30ミリ秒)

C:\>

ご覧のとおり、解決に長い時間がかかるため、次のようにhostsファイルにエントリを追加しました。

127.0.0.1       localhost

完了したら、同じコマンドを再度実行しました。

C:\>tnsping xe

TNS Ping Utility for 64-bit Windows: Version 11.2.0.2.0 - Production on 11-ENE-2
017 14:40:29

Copyright (c) 1997, 2014, Oracle.  All rights reserved.

Used parameter files:
C:\oraclexe\app\Oracle\product\11.2.0\server\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(Host = myLaptop)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SER
VICE_NAME = XE)))
OK (30 msec)

C:\>

時間応答が根本的に減少するにつれて、sqldeveloperでの接続を正常に試行しました。

connection succed

0