次の接続文字列を使用して、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は問題なく接続します。
このエラーの回避策はありますか?
必要インスタンスをリスナーに登録するために、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を追加する必要はありません。
これは私のために働いた-私は上記のすべてをしてから変更した:
jdbc.databaseurl=jdbc:Oracle:thin:@localhost:1521:xe
に:
jdbc.databaseurl=jdbc:Oracle:thin:@localhost:1521/xe
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
内部ネットワークと、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がすでに設定されています。
ステップ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が起動します。
この質問に対するより詳細な回答については、私の完全な ブログ投稿 を読むことができます。
Windows 8でOracle xpressエディション11.2を実行していますが、sqldeveloperを使用してDBに接続しようとすると同じエラーが発生しました。
上記のBrandtの回答に従ってlistener.oraを編集し、マシンを再起動しても問題は修正されませんでした。
次のことを行いました。コントロールパネルに移動->管理ツール->サービス「OracleServiceXE」というサービスが実行されていないことがわかります。
私はそれを開始し、再び接続しようとしましたが、問題は解決しました。
前述のとおり、sidが機能する前に、コロン:
を削除し、スラッシュ/
に置き換えます。
私も前にこの問題を経験しました。
Windows 7でも同じ問題が発生しました。原因は、Cisco AnyConnect Secure Mobility Clientを使用してVPNに接続していたことです。
明らかにOracle_SID XEを持つデータベースは、listener.oraで定義されていません。データベースが正常に開くと、データベースはデフォルトのリスナーに登録され、ポート1521のリスナーになりますので問題ありません。
データベースがリスナーの前に起動する場合、データベースには登録するリスナーがありません。それは数分ごとに行われるので、しばらくすると、登録が行われたためにエラーがなくなると思います。これを高速化するためにalter system register;
を発行できます。データベースが制限モードの場合、サービスを使用した接続は失敗します。 Oracle_SIDを使用しているため、それは問題ではありません。
使用中の名前も確認してください。ローカルホストはBrodyaga-PCと同じアドレスに解決していますか? jdbc文字列ではlocalhostを使用し、リスナーはBrodyaga-PCをリッスンします。 localhost 127.0.0.1ですか?
チェック-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を設定してください。
誰かに役立つことを願っています。
「HARI」がSIDであるOracleServiceHariを起動すると、私のために働いた。
同じ問題に直面している他の人は、サービスのステータスをチェックするかもしれません。
私の場合、Windows 10で次の手順を実行しました。
OracelServeceXE
、OracleXEClrAgeng
、OracleXETNSListener
を検索Start
/Restart
を押します確認する別の可能性のために、接続URLで指定されたポート番号が正しくないというまったく同じ問題を思い付きました。新しいOracle11gインスタンスを作成し、同じポート1521を使用していた以前のインスタンスを強制終了するのを忘れたため、新しいインスタンスはポート1522で自動的に起動しました。ポート番号を編集すると問題が解決しました。
windowsの検索オプションで[管理ツール]> [コンポーネントサービス]に移動しますOracleServiceXE(このサービスを開始します)
タスクマネージャーに移動して、以下のサービスが実行されているかどうかを確認します(サービスを開始しない場合)。
OracleXETNSListener
OracleXEClrAgent
OracleServiceXE
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での接続を正常に試行しました。