在Oracle RMAN(Recovery Manager)中,备份分为几种类型,主要是完全备份(Full Backup)、增量备份(Incremental Backup)以及差异备份(Differential Backup)。
一、完全备份(Full Backup)
定义: 完全备份是数据库或数据文件的一个完整拷贝,包括所有的数据块,无论这些块是否包含数据。它是独立的,不依赖于其他备份。
特点:
- 灾难恢复时,仅需一个完全备份即可恢复整个数据库。
- 相比增量备份,完全备份占用更多的存储空间。
- 执行时间通常较长,因为需要备份所有数据。
命令示例:
RUN {
BACKUP DATABASE FORMAT 'backup_location/%U';
}
二、增量备份(Incremental Backup)
增量备份分为两种类型:级别0增量备份(Level 0 Incremental Backup)和级别1增量备份(Level 1 Incremental Backup)。
1、级别0增量备份
定义: 在Oracle中,实际上级别0增量备份与完全备份非常相似,包含所有数据块。它通常作为后续级别1增量备份的基础。
特点:
- 可以作为第一次增量备份系列的起点。
- 一般情况下,在开始执行级别1增量备份之前会先做一次级别0备份。
命令示例:
与完全备份命令相同,但可以通过指定INCREMENTAL LEVEL 0
明确指出这是一个级别0增量备份:
RUN {
BACKUP INCREMENTAL LEVEL 0 DATABASE FORMAT 'backup_location/inc_lvl0_%U';
}
2、级别1增量备份
定义: 级别1增量备份仅备份自上次增量备份以来发生变化的数据块。它依赖于前一个级别的增量备份(通常是级别0)。
特点:
- 频繁执行以减少数据丢失的风险,同时减少备份所需的存储空间和时间。
- 恢复时需要最近的完全备份(或级别0增量备份)加上所有后续的级别1增量备份。
命令示例:
RUN {
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE FORMAT 'backup_location/inc_lvl1_cumulative_%U';
}
或者非累积型(只备份自上一个级别1以来变化的数据):
RUN {
BACKUP INCREMENTAL LEVEL 1 DATABASE FORMAT 'backup_location/inc_lvl1_noncumulative_%U';
}
三、总结
- 完全备份 提供了一种简单直接的恢复路径,但频繁执行会占用大量存储空间。
- 增量备份 (尤其是级别1)通过仅备份变化的数据块,减少了备份的存储需求和执行时间,但恢复过程相对复杂,需要依赖多个备份文件。
选择哪种类型的备份策略取决于对恢复时间目标(RTO)和恢复点目标(RPO)的需求,以及可用的存储资源。在实际操作中,通常会结合使用完全备份和增量备份来制定合理的备份计划。