回復データベースが奇妙な問題に遭遇したとき、私の回復スクリプトは次のとおりです:
RUN
{
SET UNTIL TIME 'DEC 25 2013 09:00:00' ;
RESTORE DATABASE;
RECOVER DATABASE;
}
しかし、次のようにrmanレポート:
...........
Oracle Error:
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/home/u01/app/Oracle/oradata/ghsjdb/system01.dbf'
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 12/27/2013 10:46:53
RMAN-06557: unable to restore archived log of thread 1 with sequence 742
RMAN-06558: archived log size of 37788 kb is bigger than available space of 6664 kb
次に、高速リカバリ領域を一度に確認します
SQL> select SPACE_USED/SPACE_LIMIT from v$recovery_file_dest;
SPACE_USED/SPACE_LIMIT
----------------------
.200951743
SQL> show parameter recovery_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /home/u01/app/Oracle/fast_recovery_area
db_recovery_file_dest_size big integer 20G
まだ80%の空き領域があります。約20g * 0.8 = 16gですが、rmanは使用可能な領域がないと報告するのはなぜですか?
この問題は、構成されている場合のFRA(Flashback recovery area)
またはアーカイブログの宛先のスペース不足が原因で発生しました。
オプション1.スペースのある別の場所にアーカイブログを復元する
例:
RMAN> run {
set ARCHIVELOG DESTINATION TO '<new location with sufficient free space>';
recover database until time "to_date('2013-12-25 09:00:00', 'YYYY-MM-DD HH24:MI:SS')";
}
オプション2. MAXSIZE制限を設定する
例:
RMAN> run {
recover database until time "to_date('2013-12-25 09:00:00', 'YYYY-MM-DD HH24:MI:SS')" delete archivelog maxsize 50 K ; }
特にRMANまたはデータベースの外部からファイルが削除されている場合は、RMANでFRAの内容を確認する必要がある場合があります。 RMANは、それ自体が認識しているファイルの独自のリストを(制御ファイルに)保持します。ファイルが外部から削除された場合、RMANはFRAがいっぱいであると考える可能性があります。
次のコマンドを実行してみてください:
crosscheck archivelog all;
crosscheck backupset;
catalog recovery area;
これは、RMANに次のように指示します。
そこにあると思われるすべてのアーカイブログを確認し、存在しない場合は期限切れとしてマークします
存在すると思われるすべてのバックアップセットを確認し、存在しない場合は期限切れとしてマークします。
FRAで、まだ認識されていないファイルを確認してください。
多数のファイルが期限切れとしてマークされている場合は、次のコマンドを実行して、これらを制御ファイルから削除します(RMANに完全に削除されたことを通知します)。
delete expired backupset;
delete expired archivelog all;
これはファイルを削除しないことに注意してください(期限切れとしてマークされたファイルはすでに「欠落」しています)だけで、RMANのカタログからそれらを削除します。