rman 0级 1级备份结合的注意事项 obsolete 和 FRA自动清理

2023-12-03 14:36

本文主要是介绍rman 0级 1级备份结合的注意事项 obsolete 和 FRA自动清理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 当心0级备份从controlfile中删除,0级备份决定recover windows时间 ,一级不算

Incremental backup cycle:

Sundays:        Level 0
Monday-Sat:  cumulative level 1

Every Friday and Saturday, the time for the incremental level 1 backup suddenly increases and results in a much larger backuppiece being generated.  The usual backuppiece size is around 200 MB, but on Friday and Saturday it is around 800 MB despite the fact that there is no extra activity on thedatabase during these days. The archive log generation is the same as on previous days.


CAUSE
In general, an RMAN incremental backup is based on the checkpoint scn of the previous incremental backup or the previous level 0 backup if this is a cummulative backup.    If no level 0 backup is found, then any existing incrementals become useless as an incremental without a baseline level 0 cannot be applied.  In such a situation, the next incremental will be based on the file creation scn ie
ALL blocks changed since file creation will be backed up.   So where an incremental backup strategy is deployed,  the backup metadata for the complete cycle (starting from level 0 backup) must be maintained in the rman repository.

Level 0 backups will be  removed prematurely from the rman repository under the following circumstances:

a. explicit deletion of the level 0 backups , ignoring retention policy
b. copy of rman backups to tape then  deletion from disk followed by crossheck/delete expired
c. if a catalog is NOT used, level 0 backup metadata may age out of the controlfile (only likely if the level 0s are taken very infrequently)

(a) and (b) are common practices where backups are written to disk first  and space is at a premium - this is fine as long as the backup metada remains untouched in the RMAN repository.

To confirm if the backup metadata is missing: 

a. RMAN>list backup of database;
    
    Look for the absence of level 0 backups for the present backup cycle

b. Query v$backup_datafile:

    SQL> set lines 400
    SQL> alter session set nls_date_format='dd-mon-rr hh24:mi:ss';
    SQL> select recid, file#, to_char(creation_change#)crscn,
                incremental_level lvl, to_char(incremental_change#) incrscn, 
                to_char(checkpoint_change#) ckpscn, checkpoint_time ckptime,
                completion_time endtime, USED_CHANGE_TRACKING bct, 
                blocks_read  read, block_size bsz, blocks wrtn 
         from v$backup_datafile
         where file# > 0
           and  completion_time > '<date>';

     Look for datafile backups where incremental_change#=creation_change
         
          Sample output (edited):

recid   File# crscn  Lvl   incr_change#    ckp change#
------  ----- ------ ----- -------------   -----------------
61888    1       5    0                0   6066791848649
61975    1       5    1    6066791848649   6067000893725
62073    1       5    1    6066791848649   6067362932086
62179    1       5    1    6066791848649   6067740524868
62280    1       5    1    6066791848649   6068546799488
62393    1       5    1                5   6069467166501
   For the backup with recid 62393, the backup was based on scn 5, which is the file creation scn.


SOLUTION

Do not use an explicit DELETE command to remove any backups belonging to current backup cycle.
When copying backups from disk to tape and then deleting them from disk, do not run crossheck/delete expired commands as this will remove the corresponding backup metadata.

To maintain the backup metadata correctly:

set a retention policy to match your incremental backup cycle and use delete force obsolete 

RMAN> configure retention policy to recovery window of 7 days;
RMAN> delete force obsolete;

 .  using 'DELETE OBSOLETE' ensures only backups outside your retention policy will be deleted , the backup metadata for the current incremental cycle will be preserved
 . using 'FORCE' tells rman to ignore any io errors (when the OS reports that the backuppiece does not
    exist)

If you are not using a catalog ensure that CONTROL_FILE_RECORD_KEEP_TIME is set to your recovery window +1.
    
     

可以使用CONFIGURE RETENTION POLICY命令来创建一个持续的和自动备份保留策略。

当备份保留策略生效时,RMAN根据CONFIGURE命令指定的标准将数据文件或控制文件的备份视为过期的备份,也就是说,恢复时不再需要的备份。可以使用REPORT OBSOLETE命令来查看过期的文件和DELETE OBSOLETE命令来删除它们。

当随着时间的过去产生备份,旧的备份会变成过期的,因为它们不再需要来满足保留策略。RMAN可以识别过期的文件,但它不会自动删除它们。必须使用DELETE OBSOLETE命令来删除不再需要来满足保留策略的文件。

如果配置了快速恢复区域,那么当需要为新文件准备更多的恢复区域空间时,数据库自动删除过期或已经备份到磁带的文件。磁盘配额规则与保留策略规则不同,但数据库不会违反保留策略删除文件来满足磁盘配额。

REPORT OBSOLETE或DELETE OBSOLETE基于用户定义的保留策略,即它不需要用来恢复来决定备份是过期的。只有当RMAN执行交叉检查和不能找到文件时,备份被视为失效的(expired)备份。简而言之,过期(obsolete)意味着文件不需要,而失效(expired)意味着它不能被找到。

备份保留策略只应用到完全或级别0的数据文件和控制文件备份。对于数据文件拷贝和代理拷贝,如果RMAN决定拷贝或代理拷贝不需要,那么拷贝或代理拷贝可以被删除。对于数据文件的备份集,RMAN不能删除备份集直到备份集中的所有数据文件备份都已过期为止。

保留策略不负责删除或使归档redo日志和级别1的增量备份过期。而是,当没有需要它们的完全备份存在时,这些文件变成过期的。除了影响完全或级别0的数据文件和控制文件备份外,备份保留策略也影响归档redo日志和级别1的增量备份。首先,RMAN决定哪些数据文件和控制文件备份是过期的。然后,RMAN将所有不需要用来恢复必须保留的最旧的数据文件或控制文件备份的归档日志和级别1的增量备份视为过期的。

注:如果备份被非RMAN的技术删除,RMAN不能执行自动保留策略,例如,通过介质管理器的磁带保留策略。介质管理器必须永不失效一个磁带直到磁带上的所有RMAN备份已经从介质管理器的目录(catalog)中删除。

执行保留策略时有两个相互排斥的选项:冗余度和恢复窗口。


1.关于恢复窗口
恢复窗口是以当前时间开始在时间上向后延伸到可恢复点的时间段。可恢复点是假设的时间点恢复(TIPR)的最早的时间,即是在介质故障之后可以恢复的最早时间点。

例如,如果执行恢复窗口为1周,那么RMAN保留完全备份和要求的增量备份和归档日志,这样数据库可以恢复到过去的7天内。执行如下的保留策略:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

这个命令确保对于每个数据文件,比可恢复时间点更旧的一个备份会被保留。例如,如果恢复窗口是7,那么每个数据文件必须总是存在一个备份满足以下条件:
SYSDATE - BACKUP CHECKPOINT TIME >= 7

所有比最近的满足这个条件的备份更旧的备份都是过期的。

假设保留策略如下图所示:

保留策略有以下方面:
1) 恢复窗口是7天。
2) 数据库备份每两周安排一次,在这些日期:1月1日,1月15日,1月29日,2月12日。
3) 数据库运行在ARCHIVELOG模式,如果保留策略需要,归档日志只保存在磁盘上。

如Figure 8-4所示,当前时间是1月23日,可恢复时间点是1月16日。因此,1月15日的备份需要用来恢复,从log序列500到850的归档日志也是如此。在500之前的日志和1月1日的备份是过期的,因为它们不需要用来恢复到窗口期内的时间点。

-----就算15-22之间有增量1级备份,15的0级也是需要的,RECOVERY WINDOW OF 7 DAYS 只看0级备份的时间!!

假设相同的场景持续一周后,如下图所示:

在这个场景中,当前的时间是1月30日,可恢复时间点是1月23日。注意1月15日的备份如何没有过期即使一个更近的备份(1月29日)存在于恢复窗口期内。这个情况发生是因为还原1月29日的备份不能让你恢复到窗口内最早的时间,1月23日。为了确保窗口期内的任何时间点的可恢复性,必须保留1月15日的备份和从序列500到1150的所有归档日志。

-----0级备份需要保留最长时间是RECOVERY WINDOW+0级备份间隔时间,即使每周0级备份可能是14天的保留时间。


2.关于备份冗余度
在某些情况中,使用恢复窗口会复杂化磁盘空间规划,因为必须保留的备份的数量不是恒定的,取决于备份的时间表。相反,基于冗余度的保留策略指定每个数据文件必须保留多少个备份。

例如,可以配置冗余度为2,如下:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;

缺省的保留策略配置为REDUNDANCY 1。


3.关于批量删除过期的备份
可以运行REPORT OBSOLETE命令根据保留策略来确定哪些备份当前是过期的。

一个成对的命令,DELETE OBSOLETE删除所有根据保留策略是过期的文件。可以定期运行DELETE OBSOLETE命令来最小化存储过期备份的空间浪费。例如,可以在每周的脚本中运行DELETE OBOSOLETE。

也可以通过在REPORT或DELETE命令中指定REDUNDANCY或RECOVERY WINDOW选项来覆盖配置的保留策略。使用DELETE OBSOLETE可配置比恢复窗口更短的恢复窗口选项来减少可恢复的窗口。例如,如果配置的窗口是14天,但你执行DELETE OBSOLETE RECOVERY WINDOW OF 7 DAYS,那么你不再有能力恢复到7天和14天之前之间的时间点。


4.关于备份保留策略和快速恢复区域删除规则
如果配置了快速恢复区域,那么数据库使用内部的算法来选择快速恢复区域中不再需要的文件来满足配置的保留策略。

当决定哪些文件从快速恢复区域中删除来满足磁盘配额规划时,保留策略决不会被违反。这些状态是OBSOLETE的备份才符合删除的条件来满足磁盘配额规则。

RMAN的状态OBSOLETE总是根据保留策略来决定的。例如,如果数据库备份在RMAN仓库中被视为OBSOLETE,那么它是因为不需要用来恢复到恢复窗口期内的时间点或者它是冗余的。

在快速恢复区域的OBSOLETE状态的规则和磁盘配额符合删除条件的规则之间有着重要的不同。假设归档日志在磁盘上,被当前的恢复窗口所需要,因此不是过期的。如果备份这些日志到磁带,那么保留策略将这些磁盘日志视为需要的,即是没有过期的。然而,快速恢复区域磁盘配额算法将磁盘上的日志视为符合删除的条件,因为它们已经备份到了磁带。磁盘上的日志在RMAN仓库中的状态不是OBSOLETE,但它们符合快速恢复区域的删除条件。
 

------上文说了不会删除,这边又说如果备份到磁带了也是可以删除的,但同时也是-------在RMAN仓库中的状态不是OBSOLETE,但它们符合快速恢复区域的删除条件!!!!

这种文件比较困惑,就是没有rman命令可以删 ,oracle内部可以删;当然rm可以删,删完crosscheck

  list backup of archivelog all;

如果配置了快速恢复区域,那么当需要为新文件准备更多的恢复区域空间时,数据库自动删除过期或已经备份到磁带的文件。磁盘配额规则与保留策略规则不同,但数据库不会违反保留策略删除文件来满足磁盘配额。

 CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO SBT;

CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO disk;
 

这篇关于rman 0级 1级备份结合的注意事项 obsolete 和 FRA自动清理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/449793

相关文章

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Python结合requests和Cheerio处理网页内容的操作步骤

《Python结合requests和Cheerio处理网页内容的操作步骤》Python因其简洁明了的语法和强大的库支持,成为了编写爬虫程序的首选语言之一,requests库是Python中用于发送HT... 目录一、前言二、环境搭建三、requests库的基本使用四、Cheerio库的基本使用五、结合req

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

Idea调用WebService的关键步骤和注意事项

《Idea调用WebService的关键步骤和注意事项》:本文主要介绍如何在Idea中调用WebService,包括理解WebService的基本概念、获取WSDL文件、阅读和理解WSDL文件、选... 目录前言一、理解WebService的基本概念二、获取WSDL文件三、阅读和理解WSDL文件四、选择对接

python安装完成后可以进行的后续步骤和注意事项小结

《python安装完成后可以进行的后续步骤和注意事项小结》本文详细介绍了安装Python3后的后续步骤,包括验证安装、配置环境、安装包、创建和运行脚本,以及使用虚拟环境,还强调了注意事项,如系统更新、... 目录验证安装配置环境(可选)安装python包创建和运行Python脚本虚拟环境(可选)注意事项安装

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Spring使用@Retryable实现自动重试机制

《Spring使用@Retryable实现自动重试机制》在微服务架构中,服务之间的调用可能会因为一些暂时性的错误而失败,例如网络波动、数据库连接超时或第三方服务不可用等,在本文中,我们将介绍如何在Sp... 目录引言1. 什么是 @Retryable?2. 如何在 Spring 中使用 @Retryable

JAVA中while循环的使用与注意事项

《JAVA中while循环的使用与注意事项》:本文主要介绍while循环在编程中的应用,包括其基本结构、语句示例、适用场景以及注意事项,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录while循环1. 什么是while循环2. while循环的语句3.while循环的适用场景以及优势4. 注意

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2