Arquivos de backup expirados, no conceito Oracle RMAN, são aqueles arquivos marcados como disponíveis pelo repositório do RMAN, mas que atualmente não estão, geralmente por terem sido deletados ou movidos para outro local ou nome, via sistema operacional ou ferramenta de terceiros.
Para confirmarmos se temos algum expired backup em nosso ambiente:
[oracle@oel8 BACKUP]$ rman target /
Recovery Manager: Release 18.0.0.0.0 - Production on Fri Apr 9 05:50:45 2021
Version 18.13.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
connected to target database: RMANDB (DBID=3825250984)
RMAN> LIST EXPIRED BACKUPSET;
using target database control file instead of recovery catalog
specification does not match any backup in the repository
RMAN>
Para simular este comportamento, vou coletar os backups da tablespace USERS:
RMAN> LIST BACKUP OF TABLESPACE USERS;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
154 Full 1.23G DISK 00:00:58 2021-04-09:04:32:03
BP Key: 154 Status: AVAILABLE Compressed: NO Tag: DB_FULL_BS
Piece Name: /oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_nnndf_DB_FULL_BS_j700oxtx_.bkp
List of Datafiles in backup set 154
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- ------------------- ----------- ------ ----
7 Full 2260904 2021-04-09:04:31:05 NO /oracle/dados/RMANDB/datafile/o1_mf_users_h8nyrkn7_.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
156 Full 2.16M DISK 00:00:00 2021-04-09:04:34:09
BP Key: 156 Status: AVAILABLE Compressed: NO Tag: USERS_BS
Piece Name: /oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_nnndf_USERS_BS_j700vk1w_.bkp
List of Datafiles in backup set 156
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- ------------------- ----------- ------ ----
7 Full 2261773 2021-04-09:04:34:09 NO /oracle/dados/RMANDB/datafile/o1_mf_users_h8nyrkn7_.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
158 Full 2.16M DISK 00:00:00 2021-04-09:04:34:16
BP Key: 158 Status: AVAILABLE Compressed: NO Tag: USERS_BS
Piece Name: /oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_nnndf_USERS_BS_j700vrh3_.bkp
List of Datafiles in backup set 158
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- ------------------- ----------- ------ ----
7 Full 2261805 2021-04-09:04:34:16 NO /oracle/dados/RMANDB/datafile/o1_mf_users_h8nyrkn7_.dbf
Vou renomear um dos backupsets listados acima:
RMAN> host 'mv /oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_nnndf_USERS_BS_j700vrh3_.bkp /oracle/fra/RMANDB/backupset/2021_04_09/BSS.bkp';
host command complete
Ao consultar novamente se há arquivos expirados, percebemos que o RMAN ainda não reporta o evento:
RMAN> LIST EXPIRED BACKUPSET;
specification does not match any backup in the repository
Isso ocorre pois o RMAN precisa realizar uma comparação entre as informações que estão em seu repositório e os arquivos (fisicamente falando). Podemos disparar o comando CROSSCHECK para possibilitar esse trabalho por parte do RMAN:
RMAN> CROSSCHECK BACKUPSET;
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=36 device type=DISK
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_nnndf_DB_FULL_BS_j700oxtx_.bkp RECID=154 STAMP=1069389069
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069389141_j700r62m_.bkp RECID=155 STAMP=1069389142
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_nnndf_USERS_BS_j700vk1w_.bkp RECID=156 STAMP=1069389249
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069389250_j700vlmc_.bkp RECID=157 STAMP=1069389250
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_nnndf_USERS_BS_j700vrh3_.bkp RECID=158 STAMP=1069389256
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069389257_j700vt63_.bkp RECID=159 STAMP=1069389258
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069389599_j7016hx3_.bkp RECID=160 STAMP=1069389599
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_annnn_ARC_BS_j701d662_.bkp RECID=161 STAMP=1069389782
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069389785_j701d9kj_.bkp RECID=162 STAMP=1069389785
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069390192_j701s0pz_.bkp RECID=163 STAMP=1069390192
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_annnn_TAG20210409T051721_j703dkjz_.bkp RECID=164 STAMP=1069391841
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069391842_j703dm1l_.bkp RECID=165 STAMP=1069391843
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/BACKUP/78vrr850_1_1 RECID=166 STAMP=1069392032
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069392033_j703llbt_.bkp RECID=167 STAMP=1069392034
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/BACKUP/7avrr85l_1_1 RECID=168 STAMP=1069392053
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069392054_j703m70y_.bkp RECID=169 STAMP=1069392055
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069392227_j703rmm7_.bkp RECID=170 STAMP=1069392227
Crosschecked 17 objects
A partir desse ponto, o RMAN identifica e reporta o arquivo expirado:
RMAN> LIST EXPIRED BACKUPSET;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
158 Full 2.16M DISK 00:00:00 2021-04-09:04:34:16
BP Key: 158 Status: EXPIRED Compressed: NO Tag: USERS_BS
Piece Name: /oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_nnndf_USERS_BS_j700vrh3_.bkp
List of Datafiles in backup set 158
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- ------------------- ----------- ------ ----
7 Full 2261805 2021-04-09:04:34:16 NO /oracle/dados/RMANDB/datafile/o1_mf_users_h8nyrkn7_.dbf
Voltando o nome do backupset para o original:
RMAN> host 'mv /oracle/fra/RMANDB/backupset/2021_04_09/BSS.bkp /oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_nnndf_USERS_BS_j700vrh3_.bkp';
host command complete
Realizando o crosscheck:
RMAN> CROSSCHECK BACKUPSET;
using channel ORA_DISK_1
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_nnndf_DB_FULL_BS_j700oxtx_.bkp RECID=154 STAMP=1069389069
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069389141_j700r62m_.bkp RECID=155 STAMP=1069389142
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_nnndf_USERS_BS_j700vk1w_.bkp RECID=156 STAMP=1069389249
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069389250_j700vlmc_.bkp RECID=157 STAMP=1069389250
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_nnndf_USERS_BS_j700vrh3_.bkp RECID=158 STAMP=1069389256
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069389257_j700vt63_.bkp RECID=159 STAMP=1069389258
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069389599_j7016hx3_.bkp RECID=160 STAMP=1069389599
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_annnn_ARC_BS_j701d662_.bkp RECID=161 STAMP=1069389782
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069389785_j701d9kj_.bkp RECID=162 STAMP=1069389785
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069390192_j701s0pz_.bkp RECID=163 STAMP=1069390192
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/backupset/2021_04_09/o1_mf_annnn_TAG20210409T051721_j703dkjz_.bkp RECID=164 STAMP=1069391841
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069391842_j703dm1l_.bkp RECID=165 STAMP=1069391843
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/BACKUP/78vrr850_1_1 RECID=166 STAMP=1069392032
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069392033_j703llbt_.bkp RECID=167 STAMP=1069392034
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/BACKUP/7avrr85l_1_1 RECID=168 STAMP=1069392053
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069392054_j703m70y_.bkp RECID=169 STAMP=1069392055
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/fra/RMANDB/autobackup/2021_04_09/o1_mf_s_1069392227_j703rmm7_.bkp RECID=170 STAMP=1069392227
Crosschecked 17 objects
Vemos que não temos mais backupset definido como expirado:
RMAN> LIST EXPIRED BACKUPSET;
specification does not match any backup in the repository
RMAN>
Obs: Este procedimento foi criado pelo senhor Ahmed Baraka (www.ahmedbaraka.com) e foi apenas reproduzido por mim em um laboratório pessoal para fins de aprendizado.