增量备份只拷贝从指定的之前的备份以后更改过的数据文件块。使用BACKUP命令来创建增量备份。

增量备份要么是累积增量备份,要么是差异增量备份。

虽然备份的内容相同,BACKUP DATABASE和BACKUP INCREMENTAL LEVEL 0 DATABASE是不同的。完全备份不能作为增量备份策略的一部分来使用,而级别0的增量备份是增量策略的基础。没有RMAN命令可以更改完全备份为级别0的增量备份。

像完全备份一样,RMAN可以对打开的处于归档(ARCHIVELOG)模式的数据库做增量备份。如果数据库在非归档(NOARCHIVELOG)模式,那么RMAN只能在一致性关闭之后做增量备份。

1.RMAN增量备份的目的

RMAN增量备份提供多种好处。作为策略的一部分制作增量备份的主要原因是:
1) 如果启用了块更改跟踪,可以进行更快的日常备份。
2) 能够向前滚动数据文件映像拷贝,因此减少恢复时间和避免重复的完全备份。
3) 当通过网络备份时,有更少的带宽消耗。
4) 当磁带写I/O带宽总和远远少于磁盘读I/O带宽总和时,可以改善性能。
5) 可能恢复更改到使用NOLOGGING选项创建的对象。
例如,直接导入插入(direct load insert)不会创建redo日志条目,因此它们的更改不能使用介质恢复重现。直接导入插入会更改数据块,而这些块会被增量备份捕获。
6) 能够让物理备数据库与主数据库同步。
可以使用RMAN的BACKUP INCREMENTAL FROM SCN在主数据库上创建以备数据库当前的SCN开始的备份,然后使用它向前滚动备数据库。

2.规划增量备份策略

根据可接受的MTTR(Mean Time To Recover,平均恢复时间)选择备份策略。

例如,可以执行3级备份方案,这样每月做一次级别0的备份,每周做一次级别1的累积增量备份,每天做一次级别1的差异增量备份。在这个策略中,从来不需要为完整恢复而应用超过1天的redo。

当决定多久做一次级别0的备份时,通用的规则是当20%或更多的数据已经更改时做一个新的级别0的备份。如果数据库更改的速度是可预测的,那么可以观察增量备份的大小来确认新的级别0的备份何时是合适的。下面的SQL查询确认至少20%的块被写到备份的数据文件的级别1的增量备份中的块的数量:
SELECT FILE#, INCREMENTAL_LEVEL, COMPLETION_TIME,
BLOCKS, DATAFILE_BLOCKS
FROM V$BACKUP_DATAFILE
WHERE INCREMENTAL_LEVEL > 0
AND BLOCKS / DATAFILE_BLOCKS > .2
ORDER BY COMPLETION_TIME;

比较级别0和级别1备份中的块的数量,例如,如果只创建级别1的累积增量备份,那么当最近的级别1的增量备份是级别0备份的大约一半大小时做级别0的备份。

一个有效的节省磁盘空间的方式是做增量备份到磁盘,然后使用BACKUP AS BACKUPSET命令卸载备份到磁带。增量备份一般比完全备份小,限制需要用来存储它们的空间直到将它们移到磁带上。当在磁盘上的增量备份备份到磁带时,磁带是更可能不断地流动(more likely to stream),因为增量备份的所有块都被拷贝到磁带。(还原时)没有可能会有延迟,因为RMAN需要时间来定位数据文件中的更改块。

另外一个策略是使用增量更新的备份。在这个策略中,创建每个数据文件的映像拷贝,然后定期通过制作和应用级别1的增量备份向前滚动这个拷贝。这样可以避免对数据文件做重复的完全映像拷贝的消耗,但享有所有的优点。

在Data Guard环境中,可以卸载增量备份到物理备数据库。备和主数据库的增量备份是互相交换的。因此,可以应用备数据库的增量备份到主数据库,或者应用主数据库的增量备份到备数据库。

3.制作增量备份

在启动RMAN之后,在RMAN提示符运行BACKUP INCREMENTAL命令。缺省情况下,增量备份是差异的。

制作增量备份:
1)启动RMAN,连接到目标数据库和恢复目录(如果使用的话)。
2)确保数据库处于挂载或打开状态。
3)执行BACKUP INCREMENTAL命令和期望的选项。

使用LEVEL参数指示增量级别。以下示例制作级别0的增量数据库备份。
BACKUP
 INCREMENTAL LEVEL 0
 DATABASE;

以下示例对表空间SYSTEM和tools做级别1的差异增量备份。它只备份那些自最近的级别1或级别0的备份以后更改过的数据块。
BACKUP
 INCREMENTAL LEVEL 1
 TABLESPACE SYSTEM, tools;

以下示例对表空间users做级别1的累积增量备份,备份自最近的级别0备份以后更改过的所有块。
BACKUP
 INCREMENTAL LEVEL 1 CUMULATIVE
 TABLESPACE users;

4.增量更新备份

通过增量更新备份,可以避免对数据文件做完全映像拷贝的消耗,同时也最小化数据库介质恢复需要的时间。例如,如果运行每天的备份脚本,那么介质恢复时从不会应用超过1天的redo。

增量更新数据文件备份:
1) 使用特定的标签创建数据文件的完全映像拷贝备份。
2) 定期(比如每天)对数据文件做级别1的差异增量备份和使用与基础数据文件拷贝相同的标签。
3) 应用增量备份到最近的使用相同标签的备份。

这个技术向前滚动备份到做级别1的增量备份的时间。RMAN可以还原这个永久的增量和应用redo日志中的更改。这个结果与还原在最近应用级别1的增量备份的SCN做的数据文件备份相同。

注:如果每天运行RECOVER COPY而不指定UNTIL TIME,那么持续更新的映像拷贝不能满足一个超过一天的恢复窗口。增量更新备份特性是快速介质恢复的优先。

4.1.增量更新备份:基础示例

使用BACKUP … FOR RECOVER OF COPY WITH TAG命令创建在增量更新备份策略中使用的增量备份。

定期运行以下脚本来执行基于增量更新备份的策略。
RUN
{
RECOVER COPY OF DATABASE
  WITH TAG ‘incr_update’;

 BACKUP
  INCREMENTAL LEVEL 1
  FOR RECOVER OF COPY WITH TAG ‘incr_update’
  DATABASE;

}

为了理解脚本和策略,必须理解当不存在数据文件拷贝或增量备份时这两个命令的效果。注意两个重要的特性:
1) 例子中的BACKUP命令并不总是创建级别1的增量备份。
2) 例子中的RECOVER命令让RMAN应用任何可用的指定标签的级别1的增量备份到一组具有相同标签的数据文件拷贝。

下表列出了当脚本从星期开始每天运行一次的效果。

命令 星期一 星期二 星期三 星期四以后
RECOVER 因为没有增量备份或数据文件拷贝存在,命令会产生一个消息(但不是错误)。也就是说,命令没有效果。 数据库拷贝现在存在,但没有级别1的增量备份存在用来恢复它。因此,RECOVER命令没有效果。 星期二做的级别1的增量备份应用到数据库拷贝,让拷贝更新到级别1的增量备份的检查点SCN。 前一天做的级别1的增量备份应用到数据库拷贝,将拷贝更新到级别1的增量备份的检查点SCN.
BACKUP 没有级别0的映像拷贝存在,因此命令创建数据库的映像拷贝和应用标签incr_update。这个拷贝需要用来开始增量更新的循环。注:如果脚本设置了DEVICE TYPE sbt,那么首先在磁盘上创建拷贝,而不是磁带。随后的运行在磁带上创建级别1的备份。 命令做级别1的增量备份,给备份分配标签incr_update。这个备份包含星期一和星期二之间更改过的块。 命令做级别1的增量备份,给备份分配标签incr_update。备份包含星期二和星期三之间更改过的块。 命令做级别1的增量备份和分配标签incr_update。备份包含最近的标签是incr_update的备份制作的时间和现在之间更改过的块。

注意以下关于示例的额外的细节:
1)每当数据文件增加到数据库,下一次脚本运行时会创建新数据文件的映像拷贝。再下一次运行时为新增的数据文件创建第一个级别1的增量备份。在所有随后的运行时新的数据文件像其它任何数据文件一样处理。
2)必须使用标签来鉴别策略中的数据文件拷贝和增量备份,这样他们就不会干扰其它备份策略。如果使用多个增量备份策略,那么RMAN不会不含糊地创建级别1的增量备份,除非标记了级别0的备份。
基于映像拷贝数据文件的标签和可用的级别1的增量备份来选择应用到这些映像拷贝的增量备份。标签在选择增量备份时是必需的。
3)在脚本第三次运行之后,下面的文件对于时间点恢复是可用的:
a.数据库映像拷贝,在24小时前上一次运行脚本时的检查点SCN时。
b.增量备份,包含在上一次运行时的检查点之后更改。
c.归档redo日志,包含映像拷贝的检查点SCN和当前时间之间的所有更改。

如果在接下来的24小时中必须还原和恢复数据库,那么可以从增量更新的数据文件拷贝中还原数据文件。然后从最近的级别1增量备份应用更改和redo日志来达到期望的SCN。最多拥有24小时的redo来应用,从而限制时间点恢复完成需要花费的时间。

4.2.增量更新备份:高级示例

可以扩展前面示例中的基本脚本来提供恢复窗口大于24小时的快速恢复性。以下示例显示如何通过在RECOVER命令中指定可恢复性窗口的起始时间来维护一个7天的恢复窗口。

RUN
{
 RECOVER COPY OF DATABASE
  WITH TAG ‘incr_update’
  UNTIL TIME ‘SYSDATE - 7’;

 BACKUP
   INCREMENTAL LEVEL 1
  FOR RECOVER OF COPY WITH TAG ‘incr_update’
   DATABASE;

}

下表列出了当脚本从星期开始每天运行一次的效果。

命令 星期一1.1 星期二1.2–星期一1.8 星期二1.9 星期三1.10以后
RECOVER 因为没有增量备份或数据文件拷贝存在,命令会产生一个消息(但不是错误)。也就是说,命令没有效果。 数据库拷贝现在存在,但SYSDATE-7指定一个基础拷贝创建前的时间。例如,在星期三SYSDATE-7指定星期一1.1之前的星期三。因此,RECOVER命令没有效果。 SYSDATE-7现在指定一个基础拷贝创建后的时间。使用星期二1.2做的级别1的增量备份更新星期一1.1创建的基础拷贝,让拷贝更新到级别1的增量备份的检查点SCN。 使用7天前做的级别1的增量备份更新数据库拷贝,将拷贝更新到级别1的增量备份的检查点SCN.
BACKUP 没有级别0的映像拷贝存在,因此命令创建数据库的映像拷贝和应用标签incr_update。这个拷贝需要用来开始增量更新的循环。注:如果脚本设置了DEVICE TYPE sbt,那么首先在磁盘上创建拷贝,而不是磁带。随后的运行在磁带上创建级别1的备份。 命令做级别1的增量备份,给备份分配标签incr_update。这个备份包含昨天和今天之间更改过的块。 命令做级别1的增量备份,给备份分配标签incr_update。备份包含星期一1.8和星期二1.9之间更改过的块。 命令做级别1的增量备份和分配标签incr_update。备份包含昨天和现在之间更改过的块。

如前面的基础脚本一样,具有快速恢复到数据文件拷贝的SCN和当前时间之间的任何时间点的能力。RMAN可以同时使用来自增量备份的块更改和redo日志中的个别的更改。因为拥有每天的级别1的增量备份,从不需要应用超过1天的redo。

5.创建新数据文件的基础备份

当使用自动备份策略来包含计划的归档redo日志备份时,必须备份新的没有包含到级别0或级别1备份中的数据文件。

如果一个或多个数据文件作为可传输表空间导入的一部分而创建,在数据文件创建之后创建的归档redo日志会包含对这些数据文件的更改。然而,由于没有这些新数据文件的基础备份,因此在归档redo日志文件中的更改不能应用到这些文件。为了恢复这些新的数据文件,这些数据文件的基础备份是必不可少的。

基于采取的备份策略,使用以下一种技术来创建新的数据文件的基础备份:
1) 对于增量备份,使用以下命令来备份还没有备份过的数据文件:
BACKUP DEVICE TYPE disk INCREMENTAL LEVEL 1 DATABASE TAG
‘incr_bkup’ NOT BACKED UP;

2) 对于增量更新的备份,使用以下命令来备份还没有备份过的数据文件:
BACKUP AS COPY DATABASE NOT BACKED UP TAG ‘incr_upd’;

注意标签incr_upd是在命令BACKUP DATABASE … FOR RECOVER OF TAG命令中指定的标签。

3) 对于使用FOR RECOVER OF TAG子语句的备份策略,使用以下命令来备份还没有备份过的数据文件:
BACKUP DEVICE TYPE sbt INCREMENTAL LEVEL 1 FOR RECOVER OF TAG
‘ibkup_tag’ DATABASE NOT BACKED UP;

6.使用块更改跟踪来改善增量备份性能

使用块更改跟踪来改善增量备份性能

来源:《Oracle Database Backup and Recovery User’s Guide,19c》

RMAN备份数据库_制作和更新RMAN增量备份(Incremental Backup)相关推荐

  1. 2压缩备份数据库_为什么您的企业需要备份数据库

    数据是开展业务的重要组成部分.如果任何企业意外丢失数据,则可能导致巨大的损失.因此,为了保护有价值的信息,企业需要备份其数据库. 本文提供了有关数据库备份的重要性以及如何进行备份的所有信息. 什么是数 ...

  2. mysql差异备份数据库get shell_shell进行完整和增量备份mysql数据库

    shell进行完整和增量备份mysql数据库 文档介绍 本文档采用mysqldump 对数据库进行备份,mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL脚本文件,在不同的 MyS ...

  3. mysql异地增量备份工具_利用 xtrabackup 工具实现增量备份 mysql(附脚本)

    1.安装 percona 源 yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-rel ...

  4. RMAN备份数据库_使用RMAN备份数据库文件

    1.使用RMAN备份整个数据库 可以在数据库挂载或打开时执行整个数据库备份. 使用BACKUP DATABASE命令从RMAN提示符中执行整个数据库的备份. 你可能想从整个数据库备份中排除特定的表空间 ...

  5. mysql的安装备份恢复_安装使用Percona XtraBackup来备份恢复MySQL的教程

    1.安装XtraBackup yum的安装方法: 自动 $ rpm -Uhv http://www.percona.com/downloads/percona-release/percona-rele ...

  6. Linux系统快照一键备份恢复、不同机器恢复、增量备份恢复

    Linux系统快照一键备份恢复.不同机器恢复.增量备份恢复 前言 由于前段时间在做一个自动化部署开发环境的项目需要重复安装多种服务以及中间件,但是生产环境的服务器不像自己的虚拟机可以使用快照,如果直接 ...

  7. RMAN备份数据库_为长期存储做数据库备份(归档备份,Archival Backup)

    1.归档备份的目的 可以使用BACKUP - KEEP来创建一个包含所有的(all-inclusive)和不受备份保留策略约束的备份. 备份是包含所有的,因为每个需要还原和恢复数据库的文件都备份到一个 ...

  8. RMAN备份数据库_备份RMAN备份(Backing Up RMAN Backups)

    1.关于RMAN备份的备份 可以使用BACKUP BACKUPSET命令来备份通过其它备份作业产生的备份集.也可以使用BACKUP RECOVERY AREA来备份在当前和所有之前的快速恢复区域目的地 ...

  9. sql还原数据库备份数据库_有关数据库备份,还原和恢复SQL面试问题–第一部分

    sql还原数据库备份数据库 So far, we've discussed a lot about database backup-and-restore process. The backup da ...

最新文章

  1. 148. Sort List
  2. mysql删除重复记录
  3. Qt网络编程——使用OpenCV与TCP搭建图像处理服务器
  4. Android接收系统广播
  5. RxJava菜鸟驿站(一)
  6. 平滑线反锯齿工具_Photoshop中的华丽渐变工具的使用
  7. 为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
  8. JS与Jquery学习笔记(二)
  9. RGB与YIQ的转换
  10. 【渝粤题库】广东开放大学 发展与教育心理学 形成性考核
  11. 手写迷你Spring框架
  12. kali linux 磁盘,在硬盘上安装Kali Linux
  13. 商业拜访需要注意的13个小细节
  14. 极坐标系及其他常用坐标系的表示方法
  15. c# chart 各个属性_C# Chart详细解析(待)
  16. 使用 Kali Linux 爆破 WiFi 密码
  17. 10kv开关柜价格_10kv开关柜价格一般多少
  18. 2.5 Visio2007不规则图形填充
  19. 24届近5年南开大学自动化考研院校分析
  20. linux ll -rlt,Perf-Tools

热门文章

  1. Python的抓包函数sniff
  2. 电脑重装系统后硬盘消失要如何解决
  3. AD日常维护之一:处理.Net runtime Optimization报错
  4. 《Emotion Cause Events: Corpus Construction and Analysis》
  5. 大航海时代中国企业如何找到新机会,听听他们怎么说
  6. 消息提醒系统:设计模式与实现方案 (公告(通告)、消息、提醒等基本功能数据库表设计与实现)
  7. 网络串口调试助手(串口透传网络调试)
  8. 计算机多媒体应用技术ppt课件ppt,ppt课件-计算机多媒体技术.ppt
  9. win7系统怎么卸载显卡驱动,电脑卸载显卡驱动的方法
  10. ubuntu10.04安装网络电视SopCast Player