SQL> select * from v$database_block_corruption;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
10 135 1 0 FRACTURED
5 2199 1 9533291 CORRUPT
5 2207 1 9579846 CORRUPT
5 2231 1 9620379 CORRUPT
RMAN> run {
set maxcorrupt for datafile 10 to 135;
backup tablespace yhqt;
}2> 3> 4>
executing command: SET MAX CORRUPT
Starting backup at 18-JUL-19
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00010 name=/u01/app/oracle/oradata/orcl/yhqt01.dbf
channel ORA_DISK_1: starting piece 1 at 18-JUL-19
channel ORA_DISK_1: finished piece 1 at 18-JUL-19
piece handle=/u01/app/oracle/fra/ORCL/backupset/2019_07_18/o1_mf_nnndf_TAG20190718T180019_gm0jsmbb_.bkp tag=TAG20190718T180019 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 18-JUL-19
Starting Control File and SPFILE Autobackup at 18-JUL-19
piece handle=/u01/app/oracle/fra/ORCL/autobackup/2019_07_18/o1_mf_s_1013968820_gm0jsndn_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 18-JUL-19
备份SYSAUX表空间为镜像复制
RMAN> backup as copy tablespace sysaux;
Starting backup at 18-JUL-19
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf
output file name=/u01/app/oracle/fra/ORCL/datafile/o1_mf_sysaux_gm0jwl05_.dbf tag=TAG20190718T180153 RECID=2 STAMP=1013968917
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
Finished backup at 18-JUL-19
Starting Control File and SPFILE Autobackup at 18-JUL-19
piece handle=/u01/app/oracle/fra/ORCL/autobackup/2019_07_18/o1_mf_s_1013968921_gm0jws37_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 18-JUL-19
运行以上命令RMAN命令时,先确保数据库在mount状态或者open状态,open状态下还需要开启归档日志模式。
10.3 恢复
普通数据文件的恢复的核心步骤:是该数据文件下线、从备份还原(restore或switch)使用增量备份或重做日志恢复(recover命令),最后再令文件上线
普通数据文件恢复的主要特点是既可以在数据库mount状态下恢复(过程中db不可用),也可以保持db在open状态下恢复(db局部可用)。数据文件头部损坏的情况可能需要特殊处理。
10.3.1 恢复前的准备
与关键数据文件的恢复一样,进入mount状态时恢复的前提,确保参数文件和控制文件正常。
若关键数据文件(system,undo)有损坏,首先应该恢复关键数据文件。
这一篇讨论的内容建立在参数文件、控制文件、关键数据文件正常的情况下。
若在open状态下对普通数据文件进行修复,首先必须确保被恢复的文件已处于offline状态。
10.3.2 非文件头部损坏后的恢复
只要文件头部没有损坏(包括文件丢失),文件就不会被自动下线,也不会出现ORA-01210错误,可以使用此节的步骤进行恢复,数据库处于mount状态为低可用恢复策略,数据库处于open状态为高可用恢复策略。
--1 使用shutdown abort关闭实例
--2 执行startup mount启动到mount状态
--3 RMAN执行restore(或switch) 还原损坏的普通数据文件
--4 通过RMAN执行recover database 利用归档日志和在线重做日志恢复数据文件
--5 alter database open 打开数据库
以yhqt01.dbf数据文件为例
--mount状态恢复
RMAN> run {
shutdown abort;
startup mount;
restore datafile '/u01/app/oracle/oradata/orcl/yhqt01.dbf';
recover database;
alter database open;}
--open状态恢复,实例未关闭
RMAN> run {
sql'alter database datafile 10 offline';
restore datafile 10;
recover datafile 10;
sql'alter database datafile 10 online';
}
--open状态, 实例已关闭