57

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

jdbc:oracle:thin:@localhost:1521:XE

最も奇妙な部分は、再起動の 1 つまで、すべてが正常に機能したことです。この TNS-12505 エラーが常に発生し始めました。my の最終エントリを見てください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 サービスからの出力

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 が正常に接続されます。

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

4

17 に答える 17

78

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

于 2012-05-31T19:38:10.757 に答える
52

これは私にとってはうまくいきました-私は上記のすべてを行ってから変更しました:

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

に:

jdbc.databaseurl=jdbc:oracle:thin:@localhost:1521/xe
于 2012-11-06T23:13:39.887 に答える
5

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 Database 11g Enterprise Edition リリース 11.2.0.1.0 - 64 ビットの本番環境 (パーティショニング、OLAP、データ マイニング、および Real Application Testing オプションを使用)

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

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

SQL> システム レジスタを変更します。

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

SQL>終了

于 2016-05-10T03:57:17.597 に答える
4

内部ネットワークと 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 によって提案された「alter system register」が原因で機能した可能性があります。listener.ora と tnsnames.ora の関連する場所に IP が既に設定されています。

于 2013-11-06T09:59:21.937 に答える
3

手順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が起動するはずです。

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

于 2013-03-18T20:45:27.133 に答える
3

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

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

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

起動して再度接続を試みたところ、問題は解決しました。

于 2014-11-12T10:24:38.803 に答える
2

sidが機能する前に、コロン:を削除してスラッシュに置き換えることで述べたように。/

私も以前にこの問題を抱えていました。

于 2014-11-06T19:23:36.787 に答える
2

チェック - 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 を構成してください。
それが誰かを助けることを願っています。

于 2016-04-17T18:47:22.470 に答える
2

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

于 2016-07-14T09:51:45.127 に答える
1

「HARI」がSIDであるOracleServiceHariを開始すると、うまくいきました。

同じ問題に直面している他の人は、サービスのステータスを確認できます。

于 2015-06-17T16:07:55.330 に答える
1

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

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

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

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

于 2011-04-14T10:58:44.357 に答える
0

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 で接続を試みましたが成功しました。

接続成功

于 2017-01-11T20:59:41.120 に答える
-1

これは私にとって魔法のように機能しました。

データベースにログインし、リスナーを登録しました。

alter system set local_listener='(...)';
alter system register;
于 2014-09-08T10:07:03.370 に答える