ORA-00314:スレッド1のログ102、予期されるシーケンス番号642317が642315と一致しません



Ora 00314 Log 102 Thread 1



この種のエラーを初めて見たときは、それを記録してください。インターネットで検索した情報によると、このエラーによりデータベースがハングする可能性があります。幸いなことに、遭遇してもハングしませんでした。

アラートログによると、問題のプロセスを引き出すことができます。



エラーの原因と解決策に関して、mosは、発生した状況に一致する関連ドキュメントを見つけました。ORA-00314:ログ404のスレッド4、予期されるシーケンス番号33808が一致しません33543(ドキュメントID 1077564.1)



症状

Following errors are received when attempting to startup standby or while logs are being applied ORA-00314: log 404 of thread 4, expected sequence# 33808 doesn't match 33543 ORA-00312: online log 404 thread 4: '+/onlinelog/group_404.468.703522549' ORA-00314: log 404 of thread 4, expected sequence# 33808 doesn't match 33543 ORA-00312: online log 404 thread 4: '+/onlinelog/group_404.450.703522549'

エラーの理由

  • スタンバイREDOのエントリが破損しています。
  • REDOエントリの転送/受信中にインスタンスがクラッシュする
  • ora-314のエラーメッセージは、破損したスタンバイREDOを示しています


例:ORA-00314:スレッド4のログ404、予期されるシーケンス番号33808が33543と一致しません
==> REDOロググループ(#404)は破損しているグループです。



問題(インスタンスのクラッシュ、ネットワークの問題)が発生したとき、シーケンス33808を受信して​​いて、途中で破損していました。したがって、ヘッダーにはシーケンス33808に関する情報がありますが、転送されている現在のアーカイブシーケンス番号は33543です。

別のスタンバイREDOがv $ standby_logのシーケンス#33543を受信して​​いて、そのうちの2つがアクティブステータスであることがわかります。

GROUP# DBID THREAD# SEQUENCE# ---------- ---------------------------------------- ---------- ---------- BYTES USED ARC STATUS FIRST_CHANGE# FIRST_TIME ---------- ---------- --- ---------- ------------- ------------------- LAST_CHANGE# LAST_TIME ------------ ------------------- 401 1863397730 4 34381 104857600 93738496 YES ACTIVE 5.9903E+12 Jan 28 2010 05:22PM 5.9903E+12 Jan 28 2010 06:52PM 404 1863397730 4 33808 104857600 0 YES ACTIVE 5.9902E+12 Jan 24 2010 02:04AM 5.9903E+12 Jan 28 2010 06:52PM

解決

ora-314エラーでスタンバイREDOをクリアします。

-- Stop recovery on standby side. SQL> Alter database recover managed standby database cancel --clear standby redo group 404. SQL> alter database clear logfile group 404 -- You may have to use the 'unarchived'-Keyword to be able to clear the Standby RedoLog Group in most Cases, eg. SQL> alter database clear unarchived logfile group 404

mosファイルとアラートログを組み合わせて、問題のプロセスを整理しましょう。

  • 17:33:04 RFS [426]はシーケンス642315のログ102を選択しました
  • 17:33:04メディアリカバリシーケンス642315(転送中)を待機し、642315のオンラインログを読み取ってリカバリします。
  • 17:33:04MRP適用シーケンス642314
  • 17:33:58 RFS [426]はシーケンス642316のログ101を選択しました
  • 17:33:58メディアリカバリシーケンス642316(転送中)を待機し、リカバリのために642316のオンラインログを読み取ります。
  • 17:34:00MRP適用シーケンス642315
  • 17:34:49 RFS [426]は、シーケンス642317のログ102を選択しました。
  • 17:34:49送信された642317が破損しているため、エラーORA-314が発生します。このとき、スタンバイログファイルヘッダーに記録されているシーケンスは642317であり、データベースに適用されている最新のシーケンス(現在のアーカイブシーケンス番号が転送されている)、つまり制御ファイルに記録されているシーケンスは642315です。エラーORA-00338:ログ102が制御ファイルよりも新しい。
  • 17:34:50メディアリカバリシーケンス642317(転送中)を待機中-スタンバイログに再投稿される642317のログは次のとおりです。そして幸運を祈って、継続を拾うことができます。したがって、フォローアップはこのシーケンスのスタンバイログを直接読み取り、MRPが再開します。
  • 17:34:51MRP適用シーケンス642316
  • 17:35:49 MRPはシーケンス642317を適用し、その後通常に戻りました