建立增量备份:
如果数据库运行于不归档模式下,只能在数据库干净关闭的情况下 (以 normal、
immediate、transactional方式关闭)才能进行一致性的增量备份,如果数据库运行于归
档模式下,那即可以在数据库关闭状态进行,也可以在数据库打开状态进行备份。再
次说明了打开归档模式的优势,归档日志也就是多占些磁盘空间,可也相当于又给数
据加了层保护。建立增量备份,实质就是一个参数 incremental level=n,在执行 backup
命令时加上即可,例如,建立一个增量级别 0的全库备份:
rman> backup incremental level=0 database;
再例如,建立一个增量级别 1的 users01.dbf数据文件备份
rman> backup incremental level=1 tablespace system
datafile ‘e:oracleorabacksj_data.dbf’;
注:rman默认创建的增量备份是 differential方式,如果要建立 cumulative方式的增
量备份,在执行 backup命令时显式指定即可,例如:
rman> backup incremental level=2 cumulative database;
建立镜像复制:
rman中的镜像复制实质与通过操作系统 copy命令备份相同,甚至连命令的格式
都相似,只不过直接应用操作系统的 copy命令复制数据文件时,只是文件拷贝,而 rman
的 copy则能够在复制的同时,验证数据的有效性。个人认为 rman中的镜像复制应用
有限,而且也体现不出 rman的优势,所以俺也只是大致了解了概念,没有进行过实际
操作,感兴趣的朋友可以自己做做试验,这里就不多做介绍了)
建立冗余备份
|
rman提供了一种更谨慎的备份策略:duplexed方式备份,其实质即是在生成备份
集的同时,向指定位置生成指定份数(最大不超过 4份)的备份集复制,以避免在灾难性
事故时数据库损坏和备份丢失的情况下导致完全崩溃,提高备份可用性。rman中提供
了三种方式实现 duplexed方式备份:
1)在 rman中执行 backup命令时显式指定 copies参数。例如:
rman> backup copies 3 database;
上述命令将会在全库备份的同时,自动生成当前备份集的 2份拷贝到默认备份目录。
2)在 run{}命令块中利用 set backup copies命令为该命令块中所有的 backup命令设
置 duplexed方式,例如:
rman> run{
set backup copies 2;
backup device type disk format
‘e:oracleorabackdyk1%u’,’e:oracleorabackdyk2%u’
tablespace users,sales;
}
上述命令将生成两份备份集,分别存储到 e:oracleorabackdyk1和
e:oracleorabackdyk2目录。
3)通过 configure ….. backup copies命令设置预定义的备份 duplexed方式
configure … backup copies命令格式,可以为指定设备类型设置默认备份拷贝数
量。这个配置仅适用于数据文件与归档重做日志文件和备份,并且,只有在使用自动
分配的通道时才能够使用 configure …
backup copies命令设置的配置。例如:
rman> configure default device type to disk;
rman> configure datafile backup copies for device type disk to 2;
rman> configure archivelog backup copies for device type disk to 2;
上述命令将 disk设置上数据文件与归档文件的拷备数量设置为 2,当再执行 backup
database备份时,即会自动生成 2份数据文件的备份集。
设置 rman备份的保存策略
策略,如果数据库非常大,并且备份执行也比较频繁,有必要对这些备份文件的
保存制订合理的策略。在通过 rman创建的备份片段中,由于备份文件也是由 rman创
建和维护,所以手工删除并不明智,并且 rman也提供了备份保留策略,合理制订,由
rman自动删除陈旧备份文件更加安全也更加方便,rman中提供了两种备份保留策略:
基于时间,和基于冗余数量
为 rman设置了备份保留策略之后,rman会自动判断哪些备份集或镜像复制文件
不必再保留。这些备份文件将会被标记为“废弃(obsolete)”,可以通过 report obsolete
命令查看当前处于废弃状态的备份文件,或者通过 delete obsolete命令删除这些废弃的
备份。例如:
rman> report obsolete;
rman> delete obsolete;
在执行删除命令时有两点需要了解:
如果被判断为废弃的备份是一个单独数据文件的镜像复制,那么在执行 delete命
令时将直接删除这个镜像复制文件;如果被判断为废弃的备份是一个备份集中的一部
分,则必须等到整个备份集中所有其它文件都被废弃之后,才能删除这个备份集。
1)基于时间的备份保留策略。
说的简单些,就是你希望数据库最早能恢复到几天前。比如将恢复时间段设置为 7,那
么 rman所保留的备份即是可以保证你将数据库恢复到一周内任何时刻下那些文件。设
置基于时间的备份保留策略可以通过 configure命令,例如:
rman> configure retention policy to recovery window of n days;
注:n=大于 0的正整数执行该命令后,rman将始终保留那些将数据库恢复到 n天前的
状态时需要用到的备份,比如,恢复时间段被设置为 7天,那么各个数据文件的备
份必须满足如下条件:
sysdate-(select checkpoint_time from v$datafile)>=7
任何不满足上述条件的备份都将被 rman废弃并可通过 delete obsolete命令删除。
2)基于冗余数量的备份保留策略
基于冗余数量实质即某个数据文件以各种形式(包括备份集和镜像复制)存在的
备份的数量。如果某个数据文件的冗余备份数量超出了指定数量,rman将废弃陈旧的
备份。同样,基于数量的备份保留策略也是通过 configure命令设置,例如:
rman> configure retention policy to recovery window of n days;
同上:n=大于 0的正整数
也可以设置不保留任何数据的策略
rman> configure retention policy to none;
备份优化
rman中的备份优化(backup optimization)是指在备份过程中,如果满足特定条件,rman
将自动跳过某些文件而不将它们包含在备份集中以节省时间和空间。通常满足如下几
个条件情况下,才能够启用备份优化的功能:
configure backup optimization参数置为 on;
执行的 backup database或 backup archivelog命令中带有 all或 like参数。
分配的通道仅使用了一种设备类型,也就是没有同时分配使用 sbt(磁带)与 disk
(磁盘)的多个通道。
打开备份优化设置通过如下命令:
rman> configure backup optimization on;
在进行备份优化时,rman是如何判断要备份的文件是否需要被优化,这个算法就
相当复杂,可能影响优化算法的因素也非常多,假如某库在上午 9点被执行过一次全
库备份,等下午 3点再次执行全库备份时,备份的文件没有变动而且也已经被备份过
时,才会跳过这部分文件。所以理论上备份优化仅对于只读表空间或 offline表空间起
作用。当然对于已经备份过的 archivelog文件,它也会跳过
3)基础补充
format字符串替代变量,使用 format参数时可使用的各种替换变量,如下:
%c:备份片的拷贝数(从 1开始编号);
%d:数据库名称;
%d:位于该月中的天数 (dd);
%m:位于该年中的月份 (mm);
%f:一个基于 dbid唯一的名称,这个格式的形式为 C-IIIIIIIIII-YYYYMMDD-QQ,其
中 IIIIIIIIII为该数据库的 dbid,YYYYMMDD为日期,QQ是一个 1-256的序列;
%n:数据库名称,并且会在右侧用 x字符进行填充,使其保持长度为 8;
%u:是一个由备份集编号和建立时间压缩后组成的 8字符名称。利用%u可以为每个
备份集生成一个唯一的名称;
%p:表示备份集中备份片段的编号,从 1开始编号;
%u:是%u_%p_%c的简写形式,利用它可以为每一个备份片段(即磁盘文件)生成
一个唯一名称,这是最常用的命名方式;
%s:备份集的号;
%t:备份集时间戳;
%t:年月日格式(yyyymmdd);s
注:如果在 backup命令中没有指定 format选项,则 rman默认使用%u为备份片段命
名。
configure配置项介绍
首先,先来查看一下当前配置,通过 show all命令:
连接到目标数据库: jssweb (dbid=3391142503)
rman> show all;
正在使用目标数据库控制文件替代恢复目录
rman配置参数为:
configure retention policy to recovery window of 3 days;
configure backup optimization off; # default
configure default device type to disk; # default
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to ‘e:oracleoraback%f’;
configure device type disk parallelism 1; # default
configure datafile backup copies for device type disk to 1; # default
configure archivelog backup copies for device type disk to 1; # default
configure maxsetsize to unlimited; # default
configure snapshot controlfile name to ‘e:oracleorabacksj_data.ora’; #
default
rman>
show命令在 rman命令篇简单介绍过,同时也知道后跟#default表示该条配置仍
然是初始的默认配置,如果想把某条更改过配置选项再置为
初始设置,用如下命令:configure … clear;例如:
rman> configure retention policy clear;
configure retention policy to recovery window of 3 days;
上述的各项配置,在前面章节中有一些已经有所体现,以下是详细介绍:
1)configure retention policy配置备份保留策略
两种保留策略设置:
基于时间:
configure retention policy to recovery window of n days;
基于冗余数量:
configure retention policy to redundancy n;
也可以取消备份保留策略:
configure retention policy to none;
2)configure backup optimization配置备份优化
备份优化:包括 off和 on两个状态
打开备份优化:
configure backup optimization on;
关闭备份优化:
configure backup optimization off;
3)configure default device type配置 io设备类型
rman支持的 io设备类型有两种:磁盘(disk)和磁带(sbt),默认情况下为磁盘。
使用磁盘设备:
configure default device type to disk;
使用磁带设置:
configure default device type to sbt;
在这里需要注意的一点是:如果 io设备发生变化,相关配置项也需要修改。例如:
rman> configure device type disk parallelism 2;
4) configure controlfile autobackup配置控制文件自动备份
是否自动备份,包含两个状态:off和 on
打开自动备份
configure controlfile autobackup on
禁止自动备份
configure controlfile autobackup off
指定备份的控制格式和路径。例如:
configure controlfile autobackup format for device type disk to
‘e:oracleoraback%f’;
在备份期间,将产生一个控制文件的快照,用于控制文件的读一致性,这个快照可以
通过如下配置:configure snapshot controlfile name to
‘e:oracleorabacksj_data.ora’;
5)configure device type设置并行备份
rman支持并行备份与恢复,也可以在配置中指定默认的并行程度。例如:
configure device type disk parallelism 2;
指定在以后备份与恢复中,将采用并行度为 2,同时开启 2个通道进行备份与恢复,
当然也可以在 run中指定通道来决定备份与恢复的并行程度。并行的数目决定了开启
通道的个数。如果指定了通道配置,将采用指定的通道,如果没有指定通道,将采用
默认通道配置。默认情况下,自动分配通道的并行度为 1,如果你通过设置 parallelism
设置了并行通道为 2,那么在 run块中,它会默认使用 2条并行通道;如果在 run命令
块中指定数个 allocate channel,那么 rman在执行备份命令时会以设置的 channel为准,
而不管 configure中配置了多个并行通道。需要注意的是,在 backup命令中有一个
filesperset参数,该参数是指 rman建立的每个备份集中所能包含的备份片段(即磁盘文
件)的最大数,该参数默认值为 64;如果在执行 backup命令时没有指定该参数值,那
么 rman会仅使用第一个通道来执行备份,其它通道将处于空闲状态。关于通道数与
filesperset值之间也有一个大小关系,即 filesperset值不要小于设定通道数。
6)设置备份文件冗余度
configure datafile backup copies
如下:
rman> run{
set backup copies 2;
backup device type disk format
‘e:oracleorabackdyk1%u’,’e:oracleorabackdyk2%u’
tablespace users,sales;
}
7)configure maxsetsize配置备份集的最大尺寸
该配置限制通道上备份集的最大尺寸。单位支持 bytes,k,m,g。默认值是 unlimited。
8) rman备份相关的动态性能表
v$archived_log:本视图包含了所有归档重做日志文件的创建情况,备份情况以及其
他信息。
v$backup_corruption:这个视图显示了 rman在哪些备份集中发现了损坏的数据坏。
在你使用 backup validate命令对备份集进行检查时如果发现了损坏的数据块,rman
将在这个视图中写入记录。
v$copy_corruptio:本视图显示了哪些镜像复制备份文件已经被损坏。
v$backup_datafile:本视图通常用来获取每个数据文件中非空白数据块的数量,从
而帮助你创建出大小基本相等的备份集。另外,在视图中也包含了数据文件中损坏的
数据块的信息。
v$backup_redolog:本视图显示了在现有的备份集中饮食有哪些归档重做日志文件。
v$backup_set:本视图显示了已经创建的备份集的信息。
v$backup_piect:本视图显示了已经创建的备份片段的信息。
可以通过如下 sql语句获得正在进行的镜像复制操作的状态信息:
select sid,
serial#,
context,
sofar,
totalwork,
round(sofar / totalwork * 100, 2) “% complete”
from v$session_longops
where opname like ‘rman:%’
and opname not like ‘rman:aggregate%’
通过如下 sql获得 rman用来完成备份操作的服务进程的 sid与 spid信息:
select sid,spid,client_info from v$process p,v$session s where p.addr=s.paddr and
client_info like ‘%id=rman%’
rman通道
上次基础知识讲提到了通道,rman通道实质是一个到存储设备的数据流。就像城市交
通道路,多建几个环路对于缓解交通是有意义的。在 rman中可以通过手动方式或自动
方式分配通道。
1)手工分配通道
在执行 backup、restore、delete等需要进行磁盘 i/o操作的命令时,可以将它们与 allocate
channel命令放在一个 run的命令块中,利用 allocate channel为它们分配通道。例如:
run{
allocate channel ch1 device type disk format ‘e:oracleoraback%u’;
backup datafile ‘e:oracleoradataoradb1sj_data.ora’;
}
需要注意的是,rman中执行的每一条 backup、delete等命令都至少要求使用一个通道,
通道数决定了这些操作执行的并行度。
2、自动分配通道
如果没有使用手工分配通道,那么 rman在执行 backup等操作 i/o的命令时将会使用
预定义配置中的设置来自动分配通道。
下列预定义配置命令均可以分配通道:
configure device type … parallelism
configure default device type
configure channel device type
configure channel n device type
rman备份类型
利用 rman进行备份时,可以通过三种方式来对 rman的备份做分类:
完全备份(full backup)与增量备份(incremental backup):
全备与增备是针对数据文件而言,控制文件和归档日志文件不能进行增量备份。当然,
后两者可以做备份优化。
打开备份(open backup)或关闭备份(closed backup):
数据库打开状态下进行备份即是打开备份,数据库关闭状态下(加载状态)进行的备份即
关闭备份。
一致备份(consistent backup)与不一致备份(inconsistent backup):
数据库打开状态或不干净关闭状态(shutdown abort)进行的备份是不一致备份,利用不
一致的备份修复数据库后还需要做数据库的恢复。在数据库干净关闭状态进行的备份
是一致备份,利用一致备份修复数据库后不需要做数据库的恢复。
增量备份的工作机制
所谓增量备份,顾名思义即是每次备份仅操作那些发生了“变化“的数据块,增量
备份只备份上次备份以来变化过的数据块,每个数据块都包含一个 system change
number(scn),记录着该数据块的最后改变。在进行增量备份的时候,rman将当前
数据块的 scn和父级增量备份的 checkpoint scn进行比较,如果该数据块的 scn大于等
于父级的 checkpoint scn,rman将备份该数据块;rman中增量备份有两种:
differential方式和 cumulative方式。
增量备份的工作机制
所谓增量备份,顾名思义即是每次备份仅操作那些发生了“变化“的数据块,增量备份只备份上
次备份以来变化过的数据块,每个数据块都包含一个 system change number(SCN),记录着该
数据块的最后改变。在进行增量备份的时候,RMAN将当前数据块的 SCN和父级增量备份的
CHECKPOINT SCN进行比较,如果该数据块的 SCN大于等于父级的 CHECKPOINT SCN,
RMAN将备份该数据块;RMAN中增量备份有两种:Differential方式和 Cumulative方式。
1)差异增量备份 Differential
差分增量备份(Differential):备份同级或者上级(如果有同级备份,先找同级)备份(差异)以
来变化的数据块。如果找不到同级或者上级(知道 LEVEL0),如果 ORACLE版本>=10.0.0,RMAN
将 COPY从数据文件创建开始所有的数据块作为 LEVEL1备份;如果 ORACLE版本<10.0.0,
RMAN将生成 LEVEL0备份:周日:RMAN备份所有被使用过的数据块。周一至周六:RMAN
备份自从上次 LEVEL0或者 LEVEL1备份以来变化的数据块。
2)累积增量备份 Cumulative:
积累增量备份(Cumulative):首先创建一个文件镜像拷贝,然后定期把从上次镜像拷贝最大
SCN以来变化的数据块追加到镜像拷贝文件中。增量追加备份可以达到快速恢复的目的,如果是
每天进行增量追加的话,在进行恢复的时候,我们最多应用一天的 REDO数据就可以完成恢复。
另外 backup命令在不显式指定的情况下,默认会选择 Differential地哟:)
1)差异增量备份 differential
差分增量备份(differential):备份同级或者上级(如果有同级备份,先找同级)备份(差
异)以来变化的数据块。如果找不到同级或者上级(知道 level0),如果 oracle版本
>=10.0.0,rman将 copy从数据文件创建开始所有的数据块作为 level1备份;如果 oracle
版本<10.0.0,rman将生成 level0备份:周日:rman备份所有被使用过的数据块。周
一至周六:rman备份自从上次 level0或者 level1备份以来变化的数据块。
|
|
2)累积增量备份 cumulative:
积累增量备份(cumulative):首先创建一个文件镜像拷贝,然后定期把从上次镜像拷
贝最大 scn以来变化的数据块追加到镜像拷贝文件中。增量追加备份可以达到快速恢
复的目的,如果是每天进行增量追加的话,在进行恢复的时候,我们最多应用一天的
redo数据就可以完成恢复。另外 backup命令在不显式指定的情况下,默认会选择
differential地哟:)
备份集概述
备份集由 rman创建的具有特定格式的逻辑备份对象,一个备份集中可能包含多个数
据库文件(包括数据文件,控制文件和归档日志文件)。rman中通过 backup命令建立
备份集。一个备份集是由多个备份片段组成,每个备份片段即是一个物理文件。
rman恢复目录(catalog)
oracle9i版本因为控制文件的自动备份,可以很大程度不需要使用恢复目录。当然,
号称使用目录数据库控制文件的方式将会非常的不安全,因为一旦备份文件丢失,不
仅数据库崩溃,rman备份信息也将丢失恢复目录还是推荐使用恢复目录,恢复目录实
际上也是一个数据库,一般独立于目标数据库。因为它自己就是个数据库,所以一个
恢复目录可以同时被多个目录数据库使用。
备份策略及恢复
增量备份都需要一个 0级备份来作为基础,0级备份与全备份的区别在于 0级可以
用来增量恢复,而全备份则不可以。
备份策略:
例如:对一星期做如下备份策略,那么差异增量只需要使用星期天的 0级,星期
三的一级,星期四、五的二级就可以恢复,累积增量则需要星期天的 0级,星期五的
二级即可进行恢复。以上是一个星期的备份策略,如果做长期的备份策略则只需要把备
份的时间延长即可得到新的备份策略,具体需要看自己备份及恢复能够接受的程度而
顶,见最后的备份策略典型案例。
星期
星期天
星期一
星期二
星期三
星期四
星期五
星期六
星期天
差异增量
0级
2级
2级
1级
2级
2级
2级
0级
累积增量
0级
2级
2级
1级
2级
2级
2级
0级
备份命令如下:
零级备份
backup incremental level 0 database;
一级差异增量
backup incremental level 1 database;
一级累计增量
backup incremental level 1 cumulative database;
备份策略典型案例:
每半年做一个数据库的全备份(包括所有的数据和只读表空间)
每一个月做一次零级备份(不包含只读表空间)
每个星期做一次一级备份
每天做一次二级备份
任何数据库的更改需要重新同步 catalog目录并重新备份(如添加数据文件)或重
新备份(如修改表空间为只读)建议备份一段时间归档日志和定期备份归档到到磁带
上