Oracle

v$ 或 rc 視圖報告 RMAN 恢復數據庫預覽

  • June 28, 2017

設置:

我們每週使用增量 0 級備份:

RMAN> backup as compressed backupset incremental level 0 database;
RMAN> backup check logical as compressed backupset (archivelog all delete all input);

我們每晚進行 1 級增量備份(除了我們進行 0 級增量備份的那晚),使用:

RMAN> backup as compressed backupset incremental level 1 database;
RMAN> backup check logical as compressed backupset (archivelog all delete all input);

在 RMAN 中,我知道我可以報告恢復何時開始以及需要恢復哪個 SCN 以清除數據文件的模糊性,從而使用以下命令使數據庫處於一致狀態:

RMAN> restore database preview;

Media recovery start SCN is 49928711194
Recovery must be done beyond SCN 49928711196 to clear datafile fuzziness

這告訴我,如果我發出 a,restore database;我需要先將 SCN 的 49928711194 恢復為 49928711196,然後才能打開數據庫。

從這裡,我知道我可以使用以下方法查詢哪些歸檔日誌備份可用以及這些歸檔日誌備份包含哪些 SCN:

SELECT sequence#, first_change#, next_change#, id2, handle from (
 SELECT sequence#, first_change#, next_change#, id2
   FROM v$backup_archivelog_details where 49928711194 between first_change# and next_change#
UNION
 SELECT sequence#, first_change#, next_change#, id2
   FROM v$backup_archivelog_details where 49928711196 between first_change# and next_change#) archivelog
 JOIN v$backup_piece p
   ON archivelog.id2=p.set_count;

SEQUENCE#   FIRST_CHANGE#   NEXT_CHANGE#    ID2     HANDLE
22030       49923438913     49928711521     7940    L:\ORACLE\BACKUPS\ARCH_2_7940_1

我的問題是:有沒有辦法查詢v$視圖或rc視圖以獲取起始 SCN 以及RMAN> restore database preview;提供的 SCN 以清除給定備份集的數據文件模糊性?

V$BACKUP_DATAFILE

V$BACKUP_DATAFILE 顯示來自控製文件的備份集中的控製文件和數據文件的資訊。

Media recovery start SCN is 7962109213
Recovery must be done beyond SCN 7962156379 to clear datafile fuzziness 
Finished restore at 28-JUN-2017 09:27:17

而我感興趣的是那個觀點ABSOLUTE_FUZZY_CHANGE#CHECKPOINT_CHANGE# 專欄。

CHECKPOINT_CHANGE#:直到檢查點更改編號的所有更改都包含在此備份中

ABSOLUTE_FUZZY_CHANGE#:此備份中的最高更改數

我使用以下查詢獲得了與 RMAN 恢復預覽命令給出的相同結果。

SQL>   select max(absolute_fuzzy_change#) fuzz#, max(checkpoint_change#) chkpnt# from
                       (select file#, completion_time, checkpoint_change#, absolute_fuzzy_change# from v$backup_datafile
                       where  trunc(completion_time) = to_date('JUN-28-2017','MON-DD-YYYY')
                       and file# <> 0
                       order by completion_time desc
                       ); 

    FUZZ#    CHKPNT#
---------- ----------
7962156379 7962109213

引用自:https://dba.stackexchange.com/questions/177406