如果备份不可恢复,那么它就没有用处。 RMAN 提供了一种不需要还原数据库就能检查数据库还原能力的方法,并且为用户提供了几个检查选项。



1、restore preview命令


该命令可以查看RMAN 使用哪个备份集来执行特定的恢复。 该命令将列出还原所需的备份集的详细信息。


RMAN> restore database preview;


启动 restore 于 08-7月 -10


使用通道 ORA_DISK_1


备份集列表


===================


BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间


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


7       Full    987.05M    DISK        00:01:40     08-7月 -10


       BP 关键字: 7   状态: AVAILABLE  已压缩: NO  标记: TAG20100708T161959


段名:F:/BACKUP/BL_07LI9IPG_1_1.BAK


 备份集 7 中的数据文件列表


 文件 LV 类型 Ckp SCN    Ckp 时间   名称


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


 1       Full 1041819    08-7月 -10 D:/APP/ADMINISTRATOR/ORADATA/BL/SYSTEM01.DBF


 2       Full 1041819    08-7月 -10 D:/APP/ADMINISTRATOR/ORADATA/BL/SYSAUX01.DBF


 3       Full 1041819    08-7月 -10 D:/APP/ADMINISTRATOR/ORADATA/BL/UNDOTBS01.DBF


 4       Full 1041819    08-7月 -10 D:/APP/ADMINISTRATOR/ORADATA/BL/USERS01.DBF


 5       Full 1041819    08-7月 -10 D:/APP/ADMINISTRATOR/ORADATA/BL/BL01.DBF


db_unique_name 为 BL 的数据库的归档日志副本列表


=====================================================================


关键字     线程序列     S 时间下限


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


8       1    12      A 08-7月 -10


       名称: D:/ARCHIVELOG/BL_ARC0000000012_0723658881.0001


9       1    13      A 08-7月 -10


       名称: D:/ARCHIVELOG/BL_ARC0000000013_0723658881.0001


介质恢复启动 SCN 是 1041819


恢复范围必须超出 SCN 1041819 才能清除数据文件模糊性


完成 restore 于 08-7月 -10




2、用verify 和 check logical参数的restore 命令


Restore 命令提供一些验证数据库可恢复和备份有效的选项。 首先,可以使用backup命令的validate参数使RMAN 检查备份,以确定数据库是可恢复的。 使用validate选项时,Oracle会检查用于恢复数据库的最新备份集以确定这个备份集是完整的,还会检查操作需要使用的所有数据文件副本和归档的重做日志备份集,并确定他们也是完整的。 此外,validate 选项会对备份集执行全面的验证操作,以确保这些备份的完整性。 验证操作的时间不会太长,并且这是确保数据库可恢复的一种方法。


RMAN> restore database validate;


启动 restore 于 08-7月 -10


使用通道 ORA_DISK_1


通道 ORA_DISK_1: 正在开始验证数据文件备份集


通道 ORA_DISK_1: 正在读取备份片段 F:/BACKUP/BL_07LI9IPG_1_1.BAK


通道 ORA_DISK_1: 段句柄 = F:/BACKUP/BL_07LI9IPG_1_1.BAK 标记 = TAG20100708T161959


通道 ORA_DISK_1: 已还原备份片段 1


通道 ORA_DISK_1: 验证完成, 用时: 00:00:26


完成 restore 于 08-7月 -10


此外,使用restore 命令的check logical 参数能够更完全地检查最新备份集。 这个命令使RMAN检查数据库的备份,如果这些备份通过物理讹误检查,还要检查备份的数据和索引段中是否存在逻辑讹误。 如果发现逻辑讹误,Oracle 会采用下面的一种方法来响应错误:


(1) 如果设置了maxcorrupt参数,并且还原检查逻辑操作期间的讹误数没有超过这个参数值,RMAN就会在Oracle 的v$database_block_corruption 视图中填充讹误的数据块列表。


(2) 如果还原检查逻辑操作期间的讹误数超过了maxcorrupt参数值,操作就会终止。


在默认情况下,maxcorrupt 参数被设置为0,因此任何逻辑讹误都会导致检查操作的失败。 通过set 命令可以修改默认的maxcorrupt参数值,但只能在run代码块的范围内使用这条命令。 此外,maxcorrupt参数是为每个数据文件单独设置的,而不是为所有的数据文件设置。


RMAN> run


2> {


3> set maxcorrupt for datafile 1,2,3 to 10;   -- 将1,2,3datafile 的maxcorrupt 设为10


4> restore database check logical validate;


5> }


正在执行命令: SET MAX CORRUPT


启动 restore 于 08-7月 -10


使用通道 ORA_DISK_1


通道 ORA_DISK_1: 正在开始验证数据文件备份集


通道 ORA_DISK_1: 正在读取备份片段 F:/BACKUP/BL_07LI9IPG_1_1.BAK


通道 ORA_DISK_1: 段句柄 = F:/BACKUP/BL_07LI9IPG_1_1.BAK 标记 = TAG20100708T161959


通道 ORA_DISK_1: 已还原备份片段 1


通道 ORA_DISK_1: 验证完成, 用时: 00:00:27


完成 restore 于 08-7月 -10




3、使用validate backupset 命令


使用具有validate参数或者check logical 参数的restore 命令只能检查最新的备份集,如果我们要检查任意的备份集,就需要使用validate backupset命令。 使用这条命令前,必须首先确定要检查的备份集键(backup set key)。 每个备份集在生成时都会被指派一个称为备份集键的唯一标识符。


RMAN> list backupset ;


备份集列表


===================


BS 关键字  大小       设备类型占用时间 完成时间


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


1       52.15M     DISK        00:00:04     07-7月 -10


       BP 关键字: 1   状态: AVAILABLE  已压缩: NO  标记: TAG20100707T200948


段名:F:/BACKUP/BL_01LI7BSC_1_1.BAK


 备份集 1 中的已存档日志列表


 线程序列     低 SCN    时间下限   下一个 SCN   下一次


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


 1    5       986340     06-7月 -10 1006590    07-7月 -10


 1    6       1006590    07-7月 -10 1008501    07-7月 -10


BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间


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


2       Full    974.46M    DISK        00:01:33     07-7月 -10


       BP 关键字: 2   状态: AVAILABLE  已压缩: NO  标记: TAG20100707T200956


段名:F:/BACKUP/BL_02LI7BSK_1_1.BAK


 备份集 2 中的数据文件列表


 文件 LV 类型 Ckp SCN    Ckp 时间   名称


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


 1       Full 1008510    07-7月 -10 D:/APP/ADMINISTRATOR/ORADATA/BL/SYSTEM01.DBF


 2       Full 1008510    07-7月 -10 D:/APP/ADMINISTRATOR/ORADATA/BL/SYSAUX01.DBF


 3       Full 1008510    07-7月 -10 D:/APP/ADMINISTRATOR/ORADATA/BL/UNDOTBS01.DBF


 4       Full 1008510    07-7月 -10 D:/APP/ADMINISTRATOR/ORADATA/BL/USERS01.DBF


 5       Full 1008510    07-7月 -10


根据上面查出来的backup set key,来验证:


RMAN> validate backupset 1;


启动 validate 于 08-7月 -10


使用通道 ORA_DISK_1


通道 ORA_DISK_1: 正在开始验证归档日志备份集


通道 ORA_DISK_1: 正在读取备份片段 F:/BACKUP/BL_01LI7BSC_1_1.BAK


通道 ORA_DISK_1: 段句柄 = F:/BACKUP/BL_01LI7BSC_1_1.BAK 标记 = TAG20100707T200948


通道 ORA_DISK_1: 已还原备份片段 1


通道 ORA_DISK_1: 验证完成, 用时: 00:00:05


完成 validate 于 08-7月 -10


RMAN> validate backupset 1 check logical;


启动 validate 于 08-7月 -10


使用通道 ORA_DISK_1


通道 ORA_DISK_1: 正在开始验证归档日志备份集


通道 ORA_DISK_1: 正在读取备份片段 F:/BACKUP/BL_01LI7BSC_1_1.BAK


通道 ORA_DISK_1: 段句柄 = F:/BACKUP/BL_01LI7BSC_1_1.BAK 标记 = TAG20100707T200948


通道 ORA_DISK_1: 已还原备份片段 1


通道 ORA_DISK_1: 验证完成, 用时: 00:00:03


完成 validate 于 08-7月 -10



oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html