rman备份集的保留策略
基于时间和基于冗余数量的备份保留策略
基于时间的备份保留策略:
你希望数据库最早能恢复到几天前,比如7,那么保留的备份文件就能保证将数据库恢复到一周内任何一个时刻.设置命令:
rman>CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF N DAYS;(n为大于0的正整数)
执行后,各个备份必须满足下列条件:
sysdate - backup checkpoint time >=7
任何不满足上述条件的备份都被rman废弃并可以通过delete obsolete命令删除.
初始化参数control_file_record_keep_time指定在控制文件中的最少保留时间,默认7,超过后由于空间不足重用记录,就会被自动覆盖,此时忽视你在rman中设置的时间保留策略.当前控制文件中分配的空间中,可存储记录和已存储记录数,可通过查询视图v$controlfile_record_section获取.
sql>select * from v$controlfile_record_section
基于冗余数量的备份保留策略
是说某个数据文件以各种形式(包括备份集和镜像复制)存在的备份的数量,如果某个数据文件的冗余备份数量超出了指定数量,
rman将废弃醉酒的备份.如下命令设置:
rman>CONFIGURE RETENTION POLICY TO REDUNDANCY n;(n为大于0的正整数)
也可不使用任何备份保留策略
rman>CONFIGURE RETENTION POLICY TO NONE;
根据备份策略维护备份集
设置保留策略后,rman会自动判断那些备份集或镜像复制文件不必再保留,这些备份文件会被标记为"废弃obsolete",可以通过
report obsolete命令查看处于废弃状态的备份文件,也可通过delete obsolete删除这些废弃的备份.
rman>report obsolete;
rman>delete obsolete;
执行删除命令时有两点需要了解:
如果标为废弃的备份时一个单独数据文件的镜像复制,delete时会直接删除此文件.
如果被判断为废弃的备份时一个备份集的一部分,则必须等到整个备份集所有文件都废弃后,才能删除这个备份集.
对于增量备份,不管是基于时间还是基于冗余数量,rman都是检测0级备份是否满足需求.
注意一下rman对于手工删除的文件,屋里不存在的crosscheck后标为expired,超出策略的标记为obsolete
通道
备份设备两种:SBT磁带和DISK磁盘(带盘的就是disk)
手工分配通道有个专用命令:allocate channel——只能在run块中出现.在执行backup,restore扥更需要进行磁盘I/O操作的
命令时,可将它们与allocate channel放在一个run块中,例如:
rman>run {
allocate channel c1 device type disk format 'd:\oracle\bobbackup\cn_%U';
backup tablespace users;
}
rman中执行的每一条backup,recover都至少使用一个通道,通道数决定了这些操作执行的并行度,每条allocate channel命令对应
一个通道,如果需要多个通道的话,执行多条allocate channel.自动分配通道如果没手动指定allocate channel分配通道,那么rman会在backup等操作I/O时使用预定义配置中的设置来自动分配通道.
下列预定义配置均可以分配通道:
CONFIGURE DEVICE TYPE sbt/disk PARALLELISM n;
CONFIGURE DEFAULT DEVICE TYPE To sbt/disk;
CONFIGURE CHANNEL DEVICE TYPE sbt/disk FORMAT...;
CONFIGURE CHANNEL n DEVICE TYPE sbt/disk FORMAT...;
是否启用复合备份
一种更谨慎的备份策略:duplexed方式备份,实质是在生成备份集同事,向指定位置生成指定份数(最大4)的备份复制文件.rman提供了三种方式实现duplexed备份:1.执行backup时指定copies参数,比如
rman>backup copies 3 database;
全库备份时自动生成当前备份集的2份备份到默认备份目录.
2.利用set backup copies命令指定复合备份.在run块中利用set backup copies为所有的backup设置duplexed方式,例如:
rman>run {
set backup copies 2;
backup device type disk format 'D:\oracle\bobbackup\%U','D:\oracle\bobbackup2\%U'
tablespace users,sales;
}
此命令生成两份备份集分别放到两个路径下.
3.利用configure指定复合备份,通过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命令时,如果没有通过allocate channel fenpei通道,那么创建的
备份就会自动生成2份备份集.
是否设置备份集属性
对于备份集(或片段),rman直接提供了方式支持定义备份片段的文件名,备份片段大小及备份集标签.默认下执行backup时rman会自动为每个备份片段生成一个唯一名,因为rman默认通道分配时制定了一个参数值为%F的format参数.例如分配通道时指定备份片段命名格式:rman>run {
allocate channel c1 device type disk format 'd:\oracle\cn_%U';
backup tablespace users;
}
执行备份命令时指定备份片段命名格式:
rman>backup tablespace users format 'd:\oracle\cn_%U';设置备份集标签备份时给备份集制定一个名称,rman里叫tag,实际上每个备份集都有tag标签,并不是必须指定,默认规则为:
TAGyyyymmddThhmmss,TAG和T是固定字符,其它为执行备份操作时间.可自行指定:
rman>backup tablespace users tag tbs_usersbak;设置备份片段/备份集大小默认情况下,一种类型的文件在备份集中都会存成一个备份片段,但需要控制文件大小.
rman在分配通道时有一个参数maxpiecesize,专门用来指定备份片段大小的.看个例子:
rman>run {
allocate channel c1 device type disk maxpiecesize=10m format 'd:\oracle\bobbackup\bak_%U';
backup tablespace users;
}
还能指定备份集大小,例子:
rman>backup database maxsetsize=100m;
此参数鸡肋在于:任意数据文件大于100m的话,都无法执行成功.