RMAN其他恢复主题
1、只读表空间的恢复
默认情况下,即使丢失了只读的数据文件,RMAN也不会在执行完全数据库还原操作时还原只读的数据文件。要在完全恢复期间还原只读的数据文件,就必须在restore命令中使用check readonly参数。
restore database check readonly;
需要注意的是,执行recover tablespace或recover datafile命令时,RMAN的工作情况是不一样的。使用上述任何一种recover命令时,不管表空间是否为只读状态都会执行恢复操作。
2、归档重做日志的还原
在默认位置上还原指定的归档重做日志
restore archivelog all;
restore archivelog from logseq=20 thread=1;
restore archivelog from logseq=20 until logseq=30 thread=1;
在默认位置以外的目录中还原归档重做日志,必须使用run代码块
run
{
set archivelog destination to "d:\Oracle\newarch";
restore archivelog all;
}
需要注意的是,如果RMAN认为一个归档重做日志已经存在,就不会在磁盘上还原,即使设置还原到其他位置也不行。
3、数据文件副本的还原
可以从数据文件副本(而不是备份集)中还原数据库的数据文件。
restore (datafile 5) from datafilecopy;
recover datafile 5;
sql "alter database datafile 5 online;"
4、恢复损坏的数据块————块介质恢复(block media recovery,BMR)
blockrecover datafile 19 block 44;
可以恢复多个数据文件中的多个数据块
blockrecover datafile 19 block 44,46,127;
blockrecover datafile 19 block 44 datafile 22 block 203;
可以使用backup validate database命令查看RMAN在备份和复制期间检测到的所有数据库损坏,这条命令会在v$backup_corruption(历史坏快)和v$database_block_corruption(当前坏快)视图中填充检测到的所有坏快。
可以使用以下命令修复v$database_block_corruption视图中记录的坏快:
blockrecover corruption list restore until time 'sysdate - 5';
可以使用nofileupdate测试运行:
blockrecover corruption list restore until time 'sysdate - 5' nofileupdate;
在以上命令中还能使用until SCN和until sequence关键字。