暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 使用crosscheck及如何正确删除过期备份

oracleEDU 2017-09-06
3909

目录:

Crosscheck [backup | backupset | copy | controlfilecopy | archivelog …… all ]

delete  expired [backup | backupset | copy | controlfilecopy | archivelog ……all ] 

crosscheck backup  验证RMAN列出的知识库与实际文件是否匹配(rman有,但是可能物理存储上被删除了,在列表中把无效的备份标记为)expired

delete expired 删除无效的备份

案例一

    ——备份集在物理存储被删除了

rman target

RMAN> backup datafile 4 format '/u01/app/oracle/user.bak2';

RMAN> list backup of datafile 4 ;

BS Key  Type LV Size       Device Type Elapsed Time Completion Time

------- ---- -- ---------- ----------- ------------ ---------------

13      Full    3.31M      DISK        00:00:01     11-OCT-17

        BP Key: 13   Status: AVAILABLE 可用  Compressed: NO  Tag: TAG20171011T172256

        Piece Name: u01/app/oracle/user.bak2

  List of Datafiles in backup set 13

  File LV Type Ckp SCN    Ckp Time  Name

  ---- -- ---- ---------- --------- ----

  4       Full 1059011    11-OCT-17 +DATA/orcl/datafile/users.257.828541453

找存储上备份文件并删除 

$ rm -rf u01/app/oracle/user.bak2

RMAN 不知道备份被删除

RMAN> list backup of datafile 4 ;

BS Key  Type LV Size       Device Type Elapsed Time Completion Time

------- ---- -- ---------- ----------- ------------ ---------------

13      Full    3.31M      DISK        00:00:01     11-OCT-17

        BP Key: 13   Status: AVAILABLE  还认为是可用 Compressed: NO  Tag: TAG20171011T172256

        Piece Name: u01/app/oracle/user.bak2

  List of Datafiles in backup set 13

  File LV Type Ckp SCN    Ckp Time  Name

  ---- -- ---- ---------- --------- ----

  4       Full 1059011    11-OCT-17 +DATA/orcl/datafile/users.257.828541453

不能直接删除:

RMAN> delete backupset 4;

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=30 device type=DISK

List of Backup Pieces

BP Key  BS Key  Pc# Cp# Status      Device Type Piece Name

------- ------- --- --- ----------- ----------- ----------

4       4       1   1   AVAILABLE   DISK        /u01/app/oracle/user.bak2

Do you really want to delete the above objects (enter YES or NO)? yes

RMAN-06207: WARNING: 1 objects could not be deleted for DISK channel(s) due

RMAN-06208:          to mismatched status.  Use CROSSCHECK command to fix status

RMAN-06210: List of Mismatched objects     提示你用crosscheck检查状态

RMAN-06211: ==========================

RMAN-06212:   Object Type   Filename/Handle

RMAN-06213: --------------- ---------------------------------------------------

RMAN-06214: Backup Piece    /u01/app/oracle/user.bak2

使用crosscheck检查:

RMAN> crosscheck backup;

crosschecked backup piece: found to be 'EXPIRED'

backup piece handle=/u01/app/oracle/user.bak2 RECID=6 STAMP=953261319

Crosschecked 3 objects

RMAN> delete expired backup;

using channel ORA_DISK_1

List of Backup Pieces

BP Key  BS Key  Pc# Cp# Status      Device Type Piece Name

------- ------- --- --- ----------- ----------- ----------

6       6       1   1   EXPIRED     DISK        /u01/app/oracle/user.bak2

Do you really want to delete the above objects (enter YES or NO)? yes

deleted backup piece

backup piece handle=/u01/app/oracle/user.bak2 RECID=6 STAMP=953261319

Deleted 1 EXPIRED objects

案例二

    ——归档文件被删除了

SQL> select name from v$archived_log;

NAME

--------------------------------------------------------------------------------

/u01/app/oracle/arch1/ORCL/archivelog/2017_08_10/o1_mf_1_8_drqtf20o_.arc

/u01/app/oracle/arch1/ORCL/archivelog/2017_08_10/o1_mf_1_9_drqtmght_.arc

/u01/app/oracle/arch1/ORCL/archivelog/2017_08_10/o1_mf_1_10_drqtydtg_.arc

/u01/app/oracle/arch1/ORCL/archivelog/2017_09_02/o1_mf_1_11_dtod93cr_.arc

+FRA/orcl/archivelog/2017_08_28/thread_1_seq_14.373.953686651

+FRA/orcl/archivelog/2017_08_29/thread_1_seq_15.349.953260631

6 rows selected.

删除o1_mf_1_8_drqtf20o_.arc

$ rm -f  /u01/app/oracle/arch1/ORCL/archivelog/2017_08_10/o1_mf_1_8_drqtf20o_.arc

管理员做备份

RMAN> backup archivelog all;

Starting backup at 29-AUG-17

current log archived

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=35 device type=DISK

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of backup command at 08/29/2017 04:09:51

RMAN-06059: expected archived log not found, loss of archived log compromises recoverability

ORA-19625: error identifying file u01/app/oracle/arch1/ORCL/archivelog/2017_08_10/o1_mf_1_8_drqtf20o_.arc

ORA-27037: unable to obtain file status

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

SQL> select name from v$archived_log;

NAME

--------------------------------------------------------------------------------

/u01/app/oracle/arch1/ORCL/archivelog/2017_08_10/o1_mf_1_8_drqtf20o_.arc

/u01/app/oracle/arch1/ORCL/archivelog/2017_08_10/o1_mf_1_9_drqtmght_.arc

/u01/app/oracle/arch1/ORCL/archivelog/2017_08_10/o1_mf_1_10_drqtydtg_.arc

/u01/app/oracle/arch1/ORCL/archivelog/2017_09_02/o1_mf_1_11_dtod93cr_.arc

+FRA/orcl/archivelog/2017_08_28/thread_1_seq_14.373.953686651

+FRA/orcl/archivelog/2017_08_29/thread_1_seq_15.349.953260631

6 rows selected.

o1_mf_1_8_drqtf20o_.arc开始备份,发现o1_mf_1_8_drqtf20o_.arc没有了。

RMAN> backup database plus archivelog ;    #报错

Starting backup at 29-AUG-17

current log archived

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=1 device type=DISK

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of backup plus archivelog command at 08/29/2017 04:13:35

RMAN-06059: expected archived log not found, loss of archived log compromises recoverability

ORA-19625: error identifying file u01/app/oracle/arch1/ORCL/archivelog/2017_08_10/o1_mf_1_8_drqtf20o_.arc

ORA-27037: unable to obtain file status

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

RMAN> crosscheck archivelog all;

RMAN> delete noprompt expired archivelog all;

SQL> select name from v$archived_log;

NAME

--------------------------------------------------------------------------------

/u01/app/oracle/arch1/ORCL/archivelog/2017_08_10/o1_mf_1_9_drqtmght_.arc

/u01/app/oracle/arch1/ORCL/archivelog/2017_08_10/o1_mf_1_10_drqtydtg_.arc

/u01/app/oracle/arch1/ORCL/archivelog/2017_09_02/o1_mf_1_11_dtod93cr_.arc

+FRA/orcl/archivelog/2017_08_28/thread_1_seq_14.373.953686651

+FRA/orcl/archivelog/2017_08_29/thread_1_seq_15.349.953260631

o1_mf_1_8_drqtf20o_.arc被删除,剩下的文件都是在物理存在的。

再去执行备份

RMAN> backup archivelog all;

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07

Finished backup at 29-AUG-17

成功。

总结

在备份和还原之前都必须做crosscheck

对数据文件备份 crosscheck backup;

对归档文件备份 crosscheck archivelog  all; 

删除备份集或者归档文件用 RMAN

删除备份集:

    delete backupset 编号

    或

    delete noprompt backup of database completed before 'sysdate - 15';

不能在物理上直接删除和备份知识库有关的备份和归档文件。

先crosscheck 再delete

CROSSCHECK BACKUP;     #验证所有的备份集 ,很耗费时间

CROSSCHECK BACKUP of datafile 4 ;     #指定对哪个文件的备份集做验证 

CROSSCHECK BACKUPSET 13;     #验证备份集13

删除归档文件:备份到其他地方,再删除;腾出空间,并保留文件

    backup archivelog all format '/u01/app/oracle/arch831.bak' delete all input;

    转存某一部分:

    backup archivelog sequence between 49 and 63  format '/u01/app/oracle/arch4963.bak' delete all input;

    

只有保留7天的归档,超过7天 全部删除

delete noprompt backup of archivelog all completed before 'sysdate - 7';



如果放入crontab 必须使用 noprompt参数,要不然不执行



最后修改时间:2021-04-28 19:58:00
文章转载自oracleEDU,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论