`

rman增量备份的原理

 
阅读更多

在里边还提到了rman增量备份的原理和10g新特性db block change tracking的原理。

----------------------------------
rman的增量备份的基本原理
其实原理很简单,主要就是弄明白怎么样在做增量备份时确定某个数据块需要备份,哪个不需要
rman在做1级备份的时候怎么来确定0级备份之后都有哪些数据块做了修改呢?看下面一段
Each data block in a datafile contains a system change number (SCN), which is the
SCN at which the most recent change was made to the block. During an incremental
backup, RMAN reads the SCN of each data block in the input file and compares it to
the checkpoint SCN of the parent incremental backup. If the SCN in the input data
block is greater than or equal to the checkpoint SCN of the parent, then RMAN copies
the block.
原来block里边也有一个change scn
也就是说在做level 1级备份的时候,需要扫描所有的数据块并且用块中记录修改的SCN跟level 0备份时的SCN做比较(备份记录中的Ckp SCN),来确定这个块是否需要备份。
所以扫描整个数据文件是不可避免的 !

这是传统的rman做增量备份

在10g中rman做增量备份不再需要扫描整个数据文件了
10g引入的新特性 block change tracking:
Block change tracking进程记录自从上一次备份以来数据块的变化,并把这些信息记录在跟踪文件中。RMAN使用这个文件判断增量备份中需要备份的变更数据。这极大的促进了备份性能,RMAN可以不再扫描整个文件以查找变更数据。
RMAN's change tracking feature for incremental backups improves incremental
backup performance by recording changed blocks in each datafile in a change tracking
file. If change tracking is enabled, RMAN uses the change tracking file to identify
changed blocks for incremental backup, thus avoiding the need to scan every block in
the datafile.
估计是使用的位图文件做的记录!

这一段我在itpub上也写过

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

但是当时还有一段演示,没在文章里写出来,今天发现了当时的老贴,就把当时的测试弄过来了

让我们来对它们的速度做一下测试,
不使用block change tracking,看看备份需要的时间


首先关闭block change tracking

SQL> select status from v$block_change_tracking;

STATUS
----------
DISABLED

然后让我们来做个0级增量备份,和一个1级备份,注意它们使用的时间
RMAN> backup incremental level 0 format='d:orabackup%d_%s.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_15.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:26
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_16.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 17-7月 –05


RMAN> backup incremental level 1 format='d:orabackup%d_%s_1level.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_17_1LEVEL.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:35
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_18_1LEVEL.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:06
完成 backup 于 17-7月 –05

level 0备份后其实我根本就没有对数据库做什么更改,level 1备份居然也使用了35秒
说明增量备份即使数据库没有什么更改也需要scan整个数据文件。

--==================================

然后让我们把block change tracking启用后测试一下level 1需要的时间。

SQL>alter database enable block change tracking using
2 file 'D:oracleproduct10.1.0flash_recovery_areaORCLFLASHBACK BLOCK_CHANGE_TRACE.LOG';
我使用的是安装的时候默认的数据库,这个记录文件大概为十几M.除了用位图,别的方式应该没办法这么多快好省的记录数据块的变化了

SQL> alter database enable block change tracking;

数据库已更改


先删除原来的备份
RMAN> delete backupset 14;
RMAN> delete backupset 12;


让我们做备份测试一下,注意看它们完成所用的时间
RMAN> backup incremental level 0 format='d:orabackup%d_%s_test_level0.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_19_TEST_LEVEL0.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:26
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_20_TEST_LEVEL0.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 17-7月 –05

再做level 1
RMAN> backup incremental level 1 format='d:orabackup%d_%s_test_level1.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_21_TEST_LEVEL1.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:07
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_22_TEST_LEVEL1.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 17-7月 –05

显然level 1备份用了7秒就完成了,比起没有启用block change tracking快了几倍
原因是指需要扫描track的文件就知道有哪些块更改了

分享到:
评论

相关推荐

    block change tracking和rman通常增量备份方式的比较

    ### Block Change Tracking与RMAN增量备份方式的比较 在数据库管理与维护中,备份是非常重要的一个环节,它能够确保数据的安全性与可恢复性。Oracle RMAN(Recovery Manager)作为Oracle数据库的一个重要组成部分,...

    rman备份与恢复(教程与案例)

    RMAN是Oracle数据库自带的一个命令行工具,它可以执行多种类型的备份,包括完整数据库备份、增量备份、表空间备份、数据文件备份等。RMAN备份的优势在于其自动化程度高,可以灵活地配置备份策略,并且能够充分利用...

    oracle10g rman 备份

    首先,RMAN是Oracle数据库管理员的重要武器,它允许执行多种备份类型,包括完整数据库备份、增量备份、表空间备份以及数据文件备份。通过RMAN,用户可以配置多个通道以并行执行备份任务,从而显著提高备份速度。此外...

    Oracle数据库RMAN备份与恢复技术

    RMAN支持全备份、增量备份、归档日志备份等多种方式。在实际操作中,可以通过RMAN命令脚本自动化整个过程,提高效率。 **备份示例**: ```sql run { allocate channel 'dev1' type disk; allocate channel 'dev2...

    oracle 11g rman 备份与恢复

    此外,它还支持增量备份和差异备份,仅备份自上次备份以来发生变化的数据块,从而节省存储空间。 2. **恢复**:在数据丢失或系统故障的情况下,RMAN能够快速恢复数据库到特定时间点。它可以处理各种类型的恢复场景...

    Oracle数据库RMAN的自动备份脚本

    1级备份是对上次0级备份以来的变化进行增量备份。在本脚本中,1级备份会在每周的二、四、五以及周日执行。这种方式可以在保证数据完整性的前提下,显著减少备份所需的时间和存储空间。 ##### 4. FTP上传脚本 (`ftp....

    AIX上oracle备份策略(rman+crontab)

    本文将详细讲解如何在AIX操作系统上使用RMAN(Recovery Manager)结合crontab来实现Oracle数据库的自动化增量备份。 首先,RMAN是Oracle数据库提供的一种强大工具,用于执行数据库备份、恢复、空间管理和性能优化等...

    一步一步学RMAN完整版Oracle备份恢复

    RMAN在Oracle备份和恢复流程中的重要性不言而喻,它不仅支持传统备份,比如物理备份和逻辑备份,还能进行增量备份,并且能够直接读取数据库文件,提供更为详细的备份信息。 首先,要使用RMAN进行备份和恢复,必须...

    oracle热备份原理分析

    Oracle热备份原理分析 在数据库管理领域,Oracle数据库系统因其高效稳定而被广泛使用。为了保障数据的安全性和可用性,数据库备份是至关重要的环节。Oracle热备份,也称为在线备份,是在数据库运行状态下进行的一种...

    rman.rar_RMAN ORACLE_oracle_rman 原理

    6. **增量备份与合成全备**:RMAN可以执行增量备份,仅备份自上次备份以来改变的数据。合成全备则是将一系列增量备份合并成一个完整的数据库备份。 7. **闪回技术**:RMAN结合闪回技术,可以实现更灵活的恢复选项,...

    oracle rman备份脚本

    RMAN通过与数据库服务器的直接通信,可以执行多种备份策略,包括完整备份、增量备份以及块级别的备份。在Oracle数据库管理中,RMAN备份脚本的编写是至关重要的,因为它确保了数据的安全性和可恢复性。 标题"oracle ...

    基于RMAN的oracle数据库备份与还原的设计与实现.pdf

    RMAN支持两种增量备份方式:差异增量备份和累积增量备份,这两种方法都是基于全备份(0级备份)的基础之上进行的。 1. 差异增量备份(Differential Incremental Backup) 差异增量备份只备份自上次全备份或上一次...

    oracle数据库增量备份[文].pdf

    本文将深入探讨Oracle数据库增量备份的概念、原理以及实现方法。 首先,了解什么是增量备份。在Oracle数据库中,增量备份是指仅备份自上次备份以来发生更改的数据。这种备份方式与全备份相比,可以显著减少备份数据...

    利用RMAN实现Oracle数据库的备份与恢复

    RMAN以其不依赖于具体操作系统的命令语言,提供了丰富的功能,包括在线热备份、多级增量备份和并行备份等,极大地简化了数据库的维护工作。 RMAN主要由以下几个组成部分构成: 1. 可执行部分(Recovery Manager ...

    rman backup and restore

    3. RMAN备份可以是增量备份(基于上次备份的差异)或累积增量备份(基于初始全备份的所有差异)。 二、RMAN备份类型 1. 全备份:包括所有数据文件、控制文件、重做日志文件等。 2. 增量备份:只备份自上次备份以来...

    RMAN 工具使用.pdf

    理解增量备份的原理后,可以使用`BACKUP AS COPY INCREMENTAL LEVEL 1`命令执行增量备份。 二、RMAN恢复 1. 完全恢复: 完全恢复涉及恢复所有数据文件,通常在灾难性故障后使用。了解相关概念,如还原、恢复、...

    最详细RMAN实现过程,附实现原代码。

    2. 增量备份:RMAN允许基于上次备份的时间点进行增量备份,有效节省存储空间。 3. 表空间和数据文件备份:针对特定的表空间或数据文件进行备份,满足特定需求。 4. 多通道备份:RMAN支持并行备份,提高备份速度。 5....

    一步一步学oracle10 RMAN

    - 增量备份:基于上一次全备份或增量备份,只备份自上次以来改变的数据块。 - 差异备份:类似于增量备份,但不依赖于之前的备份,而是基于当前时间点。 - 文件和表空间备份:针对特定数据文件或表空间进行备份。 ...

    Oracle数据库备份策略——周备份方案

    #### 二、增量备份原理 增量备份是一种只备份自上次完整备份或上次增量备份以来发生变化的数据的方法。这种方式能够显著减少备份所需的时间和存储空间,尤其是在数据量庞大时优势更加明显。具体来说,在增量备份策略...

Global site tag (gtag.js) - Google Analytics