DataGard MRPプロセスcrashの処理例ORA-01111
今日は一緒にData Gardアーカイブが同期できない状況が発生しました。メインライブラリのLNSプロセスの存在を確認してください。メインライブラリは正常に準備庫にアーカイブログを転送します。
実際にこのパスではファイルが見つかりません。
私たちはDGの在庫はアーカイブログによって回復されることを知っています。アーカイブの取得が正しい場合は、メインライブラリのデータの更新内容を準備ライブラリに転送して適用します。つまり、上のエラーは、メインライブラリから更新記録が送られてきて、準備庫については判断できないということです。
オンラインで関連した答えを探してみると、メインライブラリの異常あたごが再起動された後、データベースは自動的に回復します。つまりInstance Recoveryです。この部分が欠けているデータは再Redoに記録されています。異常終了後、準備庫に転送されたファイルには含まれていません。メインライブラリは一時的なデータファイル(UNNAMED命名方式)を通じて回復しました。この部分が復元された記録は後続のアーカイブで準備庫に転送され、このアーカイブに戻ったとき、準備庫は自動的にこのUNNAMED一時データファイルを作成することができませんでした。
解決方法:
ライブラリファイリングアプリケーションを停止し(実際には停止されています。必要ではありません。)、同期してアーカイブを自動的に管理します。手動でこのデータファイルを作成し、アーカイブアプリケーションを起動し、ファイリング管理をマニュアルから自動化します。
ここでもう一つの疑問があります。このデータファイルは手作りで作成しました。データベースが回復したら削除できますか?
SQL> SELECT PROCESS,PID,GROUP#,RESETLOG_ID,THREAD#,SEQUENCE#,BLOCK#,BLOCKS,DELAY_MINS,KNOWN_AGENTS FROM V$MANAGED_STANDBY;
PROCESS PID GROUP# RESETLOG_ID THREAD# SEQUENCE# BLOCK# BLOCKS DELAY_MINS KNOWN_AGENTS
--------- ---------- ---------- ----------- ---------- ---------- ---------- ---------- ---------- ------------
ARCH 8067 1 845994484 1 23362 106496 685 0 0
ARCH 8069 3 845994484 1 23360 149504 1659 0 0
ARCH 8071 4 845994484 1 21741 1 2 0 0
ARCH 8073 4 845994484 1 23361 133120 1223 0 0
LNS 8075 2 845994484 1 23363 117792 1 0 0
しかし、在庫のMRPプロセスが不在で、アーカイブのGAPがあるかどうかを判断します。SQL> SELECT THREAD#,LOW_SEQUENCE#,HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
no rows selected
GAPは存在しません。手動でMRPプロセスを起動しても、アラームログを確認できません。重要な内容は以下の通りです。SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION
Attempt to start background Managed Standby Recovery process (sss)
Thu Oct 09 11:38:58 2014
MRP0 started with pid=30, OS id=102010
MRP0: Background Managed Standby Recovery process started (sss)
started logmerger process
Thu Oct 09 11:39:03 2014
Managed Standby Recovery not using Real Time Apply
MRP0: Background Media Recovery terminated with error 1111
Errors in file /dba/oracle/diag/rdbms/sss/sss/trace/sss_pr00_102070.trc:
ORA-01111: name for data file 12 is unknown - rename to correct file
ORA-01110: data file 12: '/u01/oracle/product/11.2.0.3.0/dbs/UNNAMED00012'
ORA-01157: cannot identify/lock data file 12 - see DBWR trace file
ORA-01111: name for data file 12 is unknown - rename to correct file
ORA-01110: data file 12: '/u01/oracle/product/11.2.0.3.0/dbs/UNNAMED00012'
Slave exiting with ORA-1111 exception
Errors in file /dba/oracle/diag/rdbms/sss/sss/trace/sss_pr00_102070.trc:
ORA-01111: name for data file 12 is unknown - rename to correct file
ORA-01110: data file 12: '/u01/oracle/product/11.2.0.3.0/dbs/UNNAMED00012'
ORA-01157: cannot identify/lock data file 12 - see DBWR trace file
ORA-01111: name for data file 12 is unknown - rename to correct file
ORA-01110: data file 12: '/u01/oracle/product/11.2.0.3.0/dbs/UNNAMED00012'
Recovery Slave PR00 previously exited with exception 1111
MRP0: Background Media Recovery process shutdown (sss)
データベースがMRPプロセスを開始しようと試みるが、バックグラウンドでメディア回復を行う場合、エラー1111コード端末(すなわちORA−01111)によって、ORA−01111はデータファイル12が未知であることを示す。その後のORA-01110は、データファイルの位置を間違えて表示します。ホーム/UNNAMED 00012ファイルです。実際にこのパスではファイルが見つかりません。
find /u01/oracle/product/11.2.0.3.0/dbs/ -name 'UNNAMED00012'
問題が来ました。なぜデータベースはこのファイルを見つけて回復する必要がありますか?私たちはDGの在庫はアーカイブログによって回復されることを知っています。アーカイブの取得が正しい場合は、メインライブラリのデータの更新内容を準備ライブラリに転送して適用します。つまり、上のエラーは、メインライブラリから更新記録が送られてきて、準備庫については判断できないということです。
オンラインで関連した答えを探してみると、メインライブラリの異常あたごが再起動された後、データベースは自動的に回復します。つまりInstance Recoveryです。この部分が欠けているデータは再Redoに記録されています。異常終了後、準備庫に転送されたファイルには含まれていません。メインライブラリは一時的なデータファイル(UNNAMED命名方式)を通じて回復しました。この部分が復元された記録は後続のアーカイブで準備庫に転送され、このアーカイブに戻ったとき、準備庫は自動的にこのUNNAMED一時データファイルを作成することができませんでした。
解決方法:
ライブラリファイリングアプリケーションを停止し(実際には停止されています。必要ではありません。)、同期してアーカイブを自動的に管理します。手動でこのデータファイルを作成し、アーカイブアプリケーションを起動し、ファイリング管理をマニュアルから自動化します。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL SCOPE=MEMEORY;
SQL> ALTER DATABASE CREATE DATAFILE '/u01/oracle/product/11.2.0.3.0/dbs/UNNAMED00012' as '/u01/oradata/sss/sys07.dbf'
SQL> ALTER SYSTEM SET standby_file_management='AUTO' SCOPE=MEMORY;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION
ここに行って警告日誌を調べます。Attempt to start background Managed Standby Recovery process (sss)
Thu Oct 09 11:41:08 2014
MRP0 started with pid=30, OS id=102513
MRP0: Background Managed Standby Recovery process started (sss)
started logmerger process
Thu Oct 09 11:41:14 2014
Managed Standby Recovery not using Real Time Apply
Parallel Media Recovery started with 24 slaves
Waiting for all non-current ORLs to be archived...
All non-current ORLs have been archived.
Thu Oct 09 11:41:14 2014
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION
Media Recovery Log /u01/sss/SSS/archivelog/2014_10_03/o1_mf_1_13523_b2wzmf1b_.arc
Thu Oct 09 11:41:36 2014
警告ログはすでにアーカイブが正常に適用されていると説明しています。心配なら、V$MANAGED_を確認してもいいです。STANDBYビューでMRPプロセスが有効か確認してください。ここでもう一つの疑問があります。このデータファイルは手作りで作成しました。データベースが回復したら削除できますか?