非归档模式下重做日志覆盖后的rman恢复
实验原理:在非归档模式下,数据库的重做日志不会写入归档日志中,对数据库的恢复只能依靠3个联机重做日志。当第一个重做日志满了,就切换第二个重做日志中,以此类推,3个文件循环使用。我们在添加表信息之后备份数据库。假设目前正在使用的是1号重做日志,那么切换3次日志之后重做日志已经重新切换到1号。此后开始覆盖以前的重做日志。这时我们删除添加的表,再删除所有数据文件,然后再恢复,发现新添加的表还存在。实验说明:如果在数据库备份之后的重做日志内容已经被覆盖,那么当数据文件出现介质失败时,只能恢复到过去的完全备份点。
1.确保归档模式为非归档。
SQL> archive log list;
数据库日志模式非存档模式
自动存档启用
存档终点 c:\oracle\orcl\arch
最早的联机日志序列 5
当前日志序列 7
如若已修改为归档模式,需要修改过来。
SQL> alter databasenoarchivelog;
数据库已更改。
2.首先通过向test用户下创建新的表。
SQL> create table tbl_test as select *from testtable;
SQL> select * from tbl_test;
DEPTNO DNAME LOC
---------- -------------- -------------
90 tec guangzhou
70 tec beijing
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
60 tec jinan
80 Development xianggang
已选择8行。
3.使用rman备份数据库。
RMAN> backup databaseformat "c:\oradata\rmanbak\ora%T_%t.bak" filesperset 5;
启动 backup 于28-5月 -13
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
使用通道 ORA_DISK_3
使用通道 ORA_DISK_4
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00001名称=C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
通道 ORA_DISK_1: 正在启动段1 于 28-5月 -13
通道 ORA_DISK_2: 正在启动全部数据文件备份集
通道 ORA_DISK_2: 正在指定备份集内的数据文件
输入数据文件: 文件号=00002名称=C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
输入数据文件: 文件号=00003名称=C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
输入数据文件: 文件号=00004名称=C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_2: 正在启动段1 于 28-5月 -13
通道 ORA_DISK_3: 正在启动全部数据文件备份集
通道 ORA_DISK_3: 正在指定备份集内的数据文件
输入数据文件: 文件号=00006名称=C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM02.DBF
输入数据文件: 文件号=00008名称=C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS02.DBF
输入数据文件: 文件号=00010名称=C:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE02.DBF
通道 ORA_DISK_3: 正在启动段1 于 28-5月 -13
通道 ORA_DISK_4: 正在启动全部数据文件备份集
通道 ORA_DISK_4: 正在指定备份集内的数据文件
输入数据文件: 文件号=00007名称=C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX02.DBF
输入数据文件: 文件号=00009名称=C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS02.DBF
输入数据文件: 文件号=00005名称=C:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF
通道 ORA_DISK_4: 正在启动段1 于 28-5月 -13
RMAN-03009: backup 命令 (ORA_DISK_2 通道上,在 05/28/2013 18:50:23 上) 失败
ORA-19504: 无法创建文件"C:\ORADATA\RMANBAK\ORA20130528_816634186.BAK"
ORA-27038: 所创建的文件已存在
OSD-04010: 指定了 <create> 选项, 但文件已经存在
通道 ORA_DISK_2 已禁用,将在另一个通道上运行该通道上失败的作业
通道 ORA_DISK_3: 已完成段1 于 28-5月 -13
段句柄=C:\ORADATA\RMANBAK\ORA20130528_816634202.BAK标记=TAG20130528T184945 注释
=NONE
通道 ORA_DISK_3: 备份集已完成, 经过时间:00:00:11
通道 ORA_DISK_3: 正在启动全部数据文件备份集
通道 ORA_DISK_3: 正在指定备份集内的数据文件
输入数据文件: 文件号=00002名称=C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
输入数据文件: 文件号=00003名称=C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
输入数据文件: 文件号=00004名称=C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_3: 正在启动段1 于 28-5月 -13
通道 ORA_DISK_4: 已完成段1 于 28-5月 -13
段句柄=C:\ORADATA\RMANBAK\ORA20130528_816634212.BAK标记=TAG20130528T184945 注释
=NONE
通道 ORA_DISK_4: 备份集已完成, 经过时间:00:00:15
通道 ORA_DISK_1: 已完成段1 于 28-5月 -13
段句柄=C:\ORADATA\RMANBAK\ORA20130528_816634186.BAK标记=TAG20130528T184945 注释
=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:56
通道 ORA_DISK_3: 已完成段1 于 28-5月 -13
段句柄=C:\ORADATA\RMANBAK\ORA20130528_816634223.BAK标记=TAG20130528T184945 注释
=NONE
通道 ORA_DISK_3: 备份集已完成, 经过时间:00:00:35
完成 backup 于28-5月 -13
启动 Control File and SPFILE Autobackup 于 28-5月-13
段handle=C:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\AUTOBACKUP\2013_05_28\O1
_MF_S_816634122_8T930ZVN_.BKPcomment=NONE
完成 Control File and SPFILE Autobackup 于 28-5月-13
4.进行3次日志切换。
SQL> alter system switchlogfile;
系统已更改。
SQL> alter system switchlogfile;
系统已更改。
SQL> alter system switchlogfile;
系统已更改。
5.删除表信息。
SQL> truncate table tbl_test;
表被截断。
6.删除所有数据文件之后恢复数据库。
RMAN> startup mount;
Oracle 实例已启动
数据库已装载
系统全局区域总计 778387456 字节
Fixed Size 1374808 字节
Variable Size 260048296 字节
Database Buffers 511705088 字节
Redo Buffers 5259264 字节
RMAN> restore database;
启动 restore 于28-5月 -13
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=18 设备类型=DISK
分配的通道: ORA_DISK_2
通道 ORA_DISK_2: SID=19 设备类型=DISK
分配的通道: ORA_DISK_3
通道 ORA_DISK_3: SID=21 设备类型=DISK
分配的通道: ORA_DISK_4
通道 ORA_DISK_4: SID=22 设备类型=DISK
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件00006 还原到C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTE
M02.DBF
通道 ORA_DISK_1: 将数据文件00008 还原到C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOT
BS02.DBF
通道 ORA_DISK_1: 将数据文件00010 还原到C:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMP
LE02.DBF
通道 ORA_DISK_1: 正在读取备份片段 C:\ORADATA\RMANBAK\ORA20130528_816634202.BAK
通道 ORA_DISK_2: 正在开始还原数据文件备份集
通道 ORA_DISK_2: 正在指定从备份集还原的数据文件
通道 ORA_DISK_2: 将数据文件00005 还原到 C:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMP
LE01.DBF
通道 ORA_DISK_2: 将数据文件00007 还原到C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAU
X02.DBF
通道 ORA_DISK_2: 将数据文件00009 还原到C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS
02.DBF
通道 ORA_DISK_2: 正在读取备份片段 C:\ORADATA\RMANBAK\ORA20130528_816634212.BAK
通道ORA_DISK_3: 正在开始还原数据文件备份集
通道 ORA_DISK_3: 正在指定从备份集还原的数据文件
通道 ORA_DISK_3: 将数据文件00001 还原到C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTE
M01.DBF
通道 ORA_DISK_3: 正在读取备份片段 C:\ORADATA\RMANBAK\ORA20130528_816634186.BAK
通道 ORA_DISK_4: 正在开始还原数据文件备份集
通道 ORA_DISK_4: 正在指定从备份集还原的数据文件
通道 ORA_DISK_4: 将数据文件00002 还原到C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAU
X01.DBF
通道 ORA_DISK_4: 将数据文件00003 还原到C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOT
BS01.DBF
通道 ORA_DISK_4: 将数据文件00004 还原到C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS
01.DBF
通道ORA_DISK_4: 正在读取备份片段 C:\ORADATA\RMANBAK\ORA20130528_816634223.BAK
通道 ORA_DISK_1: 段句柄= C:\ORADATA\RMANBAK\ORA20130528_816634202.BAK 标记= TA
G20130528T184945
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成,用时: 00:01:21
通道 ORA_DISK_2: 段句柄= C:\ORADATA\RMANBAK\ORA20130528_816634212.BAK 标记= TA
G20130528T184945
通道 ORA_DISK_2: 已还原备份片段 1
通道 ORA_DISK_2: 还原完成,用时: 00:01:39
通道 ORA_DISK_3: 段句柄= C:\ORADATA\RMANBAK\ORA20130528_816634186.BAK 标记= TA
G20130528T184945
通道 ORA_DISK_3: 已还原备份片段 1
通道 ORA_DISK_3: 还原完成,用时: 00:01:54
通道 ORA_DISK_4: 段句柄= C:\ORADATA\RMANBAK\ORA20130528_816634223.BAK 标记= TA
G20130528T184945
通道 ORA_DISK_4: 已还原备份片段 1
通道 ORA_DISK_4: 还原完成,用时: 00:02:01
完成 restore 于28-5月 -13
RMAN> recover database;
启动 recover 于28-5月 -13
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
使用通道 ORA_DISK_3
使用通道 ORA_DISK_4
正在开始介质的恢复
线程 1 序列8 的归档日志已作为文件C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG
存在于磁盘上
线程 1 序列9 的归档日志已作为文件C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG
存在于磁盘上
线程 1 序列10 的归档日志已作为文件C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG
存在于磁盘上
RMAN-08187: 警告: 完成到SCN 2477744 的介质恢复
完成 recover 于 28-5月-13
7.以resetlogs启动数据库。
SQL> alter databaseopen resetlog;
SQL> conn test/szc12345
已连接。
SQL> select * from tbl_test;
DEPTNO DNAME LOC
---------- ---------------------------
90 tec guangzhou
70 tec beijing
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
60 tec jinan
80 Development xianggang
已选择8行。
有上述结果可发现:非归档模式下,3次切换日志之后,删除的表依然存在,说明重做日志被覆盖之后,数据只能恢复到最近的一次完全备份。