– 模拟一次丢失所有归档和增量备份的恢复
-- 1 RMAN 执行 0 级增量全备,模拟修改数据,再做1次1级增量备份
-- 2 模拟删除备份中所有归档(把归档移动到另外一个目录)
[oracle@db3 rman]$ll
total 715M
-rw-r----- 1 oracle oinstall 140M 2021-03-18 16:11 db_lv0_ORCL_20210318_161128_58_1.bk
-rw-r----- 1 oracle oinstall 164M 2021-03-18 16:11 db_lv0_ORCL_20210318_161128_59_1.bk
-rw-r----- 1 oracle oinstall 209M 2021-03-18 16:11 db_lv0_ORCL_20210318_161128_60_1.bk
-rw-r----- 1 oracle oinstall 1.4M 2021-03-18 16:11 db_lv0_ORCL_20210318_161128_61_1.bk
-rw-r----- 1 oracle oinstall 25M 2021-03-18 16:12 db_lv0_ORCL_20210318_161128_62_1.bk
-rw-r----- 1 oracle oinstall 52M 2021-03-18 16:12 db_lv0_ORCL_20210318_161128_64_1.bk
-rw-r----- 1 oracle oinstall 96K 2021-03-18 16:12 db_lv0_ORCL_20210318_161128_66_1.bk
-rw-r----- 1 oracle oinstall 1.1M 2021-03-18 16:12 db_lv0_ORCL_20210318_161128_65_1.bk
-rw-r----- 1 oracle oinstall 106M 2021-03-18 16:12 db_lv0_ORCL_20210318_161128_63_1.bk
-rw-r--r-- 1 oracle oinstall 1.4K 2021-03-18 16:12 pf_ORCL_20210318_161128.ora
-rw-r--r-- 1 oracle oinstall 11K 2021-03-18 16:12 cf_sql_ORCL_20210318_161128.ora
-rw-r----- 1 oracle oinstall 9.7M 2021-03-18 16:12 cf_ORCL_20210318_161128_69_1.bk.bk
-rw-r--r-- 1 oracle oinstall 1.4K 2021-03-18 16:13 pf_ORCL_20210318_161325.ora
-rw-r--r-- 1 oracle oinstall 11K 2021-03-18 16:13 cf_sql_ORCL_20210318_161325.ora
-rw-r----- 1 oracle oinstall 9.7M 2021-03-18 16:13 cf_ORCL_20210318_161325_80_1.bk.bk
[oracle@db3 rman]$ll ../arch
total 4.7M
-rw-r----- 1 oracle oinstall 3.0K 2021-03-18 16:12 arch_ORCL_20210318_161128_68_1.bk
-rw-r----- 1 oracle oinstall 2.7M 2021-03-18 16:12 arch_ORCL_20210318_161128_67_1.bk
-rw-r----- 1 oracle oinstall 56K 2021-03-18 16:13 db_lv1_ORCL_20210318_161325_72_1.bk
-rw-r----- 1 oracle oinstall 240K 2021-03-18 16:13 db_lv1_ORCL_20210318_161325_70_1.bk
-rw-r----- 1 oracle oinstall 104K 2021-03-18 16:13 db_lv1_ORCL_20210318_161325_71_1.bk
-rw-r----- 1 oracle oinstall 40K 2021-03-18 16:13 db_lv1_ORCL_20210318_161325_73_1.bk
-rw-r----- 1 oracle oinstall 96K 2021-03-18 16:13 db_lv1_ORCL_20210318_161325_76_1.bk
-rw-r----- 1 oracle oinstall 216K 2021-03-18 16:13 db_lv1_ORCL_20210318_161325_74_1.bk
-rw-r----- 1 oracle oinstall 1.1M 2021-03-18 16:13 db_lv1_ORCL_20210318_161325_75_1.bk
-rw-r----- 1 oracle oinstall 98K 2021-03-18 16:13 arch_ORCL_20210318_161325_77_1.bk
-rw-r----- 1 oracle oinstall 4.5K 2021-03-18 16:13 arch_ORCL_20210318_161325_78_1.bk
-rw-r----- 1 oracle oinstall 3.0K 2021-03-18 16:13 arch_ORCL_20210318_161325_79_1.bk
-- 恢复数据库 SQLPLUS
create spfile from pfile='/u11/rman/pf_ORCL_20210318_161128.ora';
-- 恢复控制文件 RMAN
RESTORE CONTROLFILE TO '/u01/ORCL/datafile/control01.ctl' from '/u11/rman/cf_ORCL_20210318_161325_80_1.bk.bk';
alter database mount;
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
set newname for database to '/u01/ORCL/dbf/%U.f';
restore database;
switch datafile all;
release channel c1;
release channel c2;
release channel c3;
}
-- resotre 成功
-- 因为删除了所有归档备份和增量备份,只能使用noredo选项恢复数据库
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
recover database noredo;
release channel c1;
release channel c2;
release channel c3;
}
-- recover database until sequence 356;
-- recover 成功
-- 重置redo日志
alter database clear logfile group 1;
alter database clear logfile group 2;
alter database clear logfile group 3;
alter database mount;
-- 打开数据库报错,控制文件SCN大于数据文件SCN,数据文件SCN不能通过归档文件推进
alter database open resetlogs;
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/u01/ORCL/dbf/data_D-ORCL_TS-SYSTEM_FNO-1.f'
-- 控文件SCN大于数据文件SCN
select a.file#,a.CHECKPOINT_CHANGE# file_scn,b.CHECKPOINT_CHANGE# cf_scn from v$datafile_header a,v$datafile b where a.file#=b.file#;
FILE# FILE_SCN CF_SCN
----- ---------- ----------
1 9344975 9345016
3 9344973 9345016
4 9344973 9345016
5 1740639 1740639
6 9344975 9345016
7 1740639 1740639
23 9344974 9345016
24 9344974 9345016
26 9344984 9345016
37 9344985 9345016
39 9344985 9345016
-- 偿试sqlplus中恢复数据库 提示找不到归档 SQLPLUS
recover database using backup controlfile until cancel;
ORA-00279: change 9344973 generated at 03/18/2021 16:11:33 needed for thread 1
ORA-00289: suggestion : /u01/ORCL/fra/ORCL/archivelog/2021_03_18/o1_mf_1_352_%u_.arc
ORA-00280: change 9344973 for thread 1 is in sequence #352
.....
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/u01/ORCL/dbf/data_D-ORCL_TS-SYSTEM_FNO-1.f'
-- 解决方案:
-- 1 BBED手动推数据文件SCN
-- 2 隐藏参数强行打开数据库
-- 隐藏参数打开数据库
-- 通过隐藏参数打开数据库
alter system set "_allow_resetlogs_corruption"=true scope=spfile sid='*';
startup mount force;
alter database open resetlogs;
-- 成功打开数据库
-- 把参数调回原值,重启数据库:运行正常(丢失了全备之后的数据)
alter system reset "_allow_resetlogs_corruption";
shutdown immediate;
startup mount;
最后修改时间:2021-03-18 17:44:45
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




