Oracle 普通数据文件备份与恢复(2)

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状态, 实例已关闭

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/52d1c134f248dec48fe625fd509d38f6.html