DataGard MRPプロセスcrashの処理例ORA-01111

5010 ワード

今日は一緒にData Gardアーカイブが同期できない状況が発生しました。メインライブラリのLNSプロセスの存在を確認してください。メインライブラリは正常に準備庫にアーカイブログを転送します。
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プロセスが有効か確認してください。
ここでもう一つの疑問があります。このデータファイルは手作りで作成しました。データベースが回復したら削除できますか?