web-dev-qa-db-ja.com

アーカイブログのサイズは小さいが、高速リカバリ領域にまだ多くの空き容量がある理由

回復データベースが奇妙な問題に遭遇したとき、私の回復スクリプトは次のとおりです:

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は使用可能な領域がないと報告するのはなぜですか?

1
kursk.ye

この問題は、構成されている場合の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 ; }
1
DevYudh

特にRMANまたはデータベースの外部からファイルが削除されている場合は、RMANでFRAの内容を確認する必要がある場合があります。 RMANは、それ自体が認識しているファイルの独自のリストを(制御ファイルに)保持します。ファイルが外部から削除された場合、RMANはFRAがいっぱいであると考える可能性があります。

次のコマンドを実行してみてください:

crosscheck archivelog all;
crosscheck backupset;
catalog recovery area;

これは、RMANに次のように指示します。

  1. そこにあると思われるすべてのアーカイブログを確認し、存在しない場合は期限切れとしてマークします

  2. 存在すると思われるすべてのバックアップセットを確認し、存在しない場合は期限切れとしてマークします。

  3. FRAで、まだ認識されていないファイルを確認してください。

多数のファイルが期限切れとしてマークされている場合は、次のコマンドを実行して、これらを制御ファイルから削除します(RMANに完全に削除されたことを通知します)。

delete expired backupset;
delete expired archivelog all;

これはファイルを削除しないことに注意してください(期限切れとしてマークされたファイルはすでに「欠落」しています)だけで、RMANのカタログからそれらを削除します。

0
Phil Sumner