Oracle 10g后可以跨越resetlogs恢复数据库,incarnation是跨越resetlogs恢复数据库的重要特性。
下面用下列测试来说明下:
SQL> create table incarnation_tab01(id number);
Table created
SQL> declare
2 begin
3 for i in 1..10 loop
4 insert into incarnation_tab01 select dbms_flashback.get_system_change_number from dual;
5 commit;
6 end loop;
7 end;
8 /
PL/SQL procedure successfully completed
SQL> select * from incarnation_tab01;
ID
----------
1881030
1881031
1881032
1881033
1881034
1881035
1881036
1881037
1881038
1881039
10 rows selected
RMAN> run{
2> startup mount force;
3> set until scn 1881034
4> restore database;
5> recover database;
6> alter database open resetlogs;
7> }
Oracle 实例已启动
数据库已装载
系统全局区域总计 373293056 字节
Fixed Size 1249080 字节
Variable Size 159383752 字节
Database Buffers 209715200 字节
Redo Buffers 2945024 字节
正在执行命令: SET until clause
启动 restore 于 26-12月-11
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
。。。。。。
通道 ORA_DISK_1: 正在读取备份段 D:ORACLEFULLBACKUP_XIAOYU_20111226_29
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:ORACLEFULLBACKUP_XIAOYU_20111226_29 标记 = TAG20111226T092719
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:45
完成 restore 于 26-12月-11
启动 recover 于 26-12月-11
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 17 已作为文件 D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAX
IAOYUARCHIVELOGARC00017_0770468700.001 存在于磁盘上
。。。。。。
介质恢复完成, 用时: 00:00:02
完成 recover 于 26-12月-11
数据库已打开
SQL> select * from incarnation_tab01;
ID
----------
1881030
1881031
1881032
1881033
此时数据库执行的是不完全恢复然后resetlogs打开。然后再次insert 10条数据
SQL> declare
2 begin
3 for i in 1..10 loop
4 insert into incarnation_tab01 select dbms_flashback.get_system_change_number from dual;
5 commit;
6 end loop;
7 end;
8 /
PL/SQL procedure successfully completed
SQL> select * from incarnation_tab01;
ID
----------
1881030
1881031
1881032
1881033
1883530
1883532
1883534
1883536
1883537
1883538
1883539
1883540
1883541
1883542
如果此时想恢复不完全恢复resetlogs之前的1881038阶段。
RMAN> run{
2> startup mount force;
3> set until scn 1881038
4> restore database;
5> recover database;
6> alter database open resetlogs;
7> }
此时是无法恢复的,部分rman信息
RMAN-03002: set 命令 (在 12/26/2011 10:30:24 上) 失败
RMAN-20208: UNTIL CHANGE is before RESETLOGS change
恢复在上一个resetlogs打开之前,rman无法只利用resetlogs打开之后的archivelog和redo来恢复,需要resetlogs之前的archivelog。
RMAN> list incarnation;
数据库原型列表
DB 关键字 Inc 关键字 DB 名 DB ID STATUS 重置 SCN 重置时间
------- ------- -------- ---------------- --- ---------- ----------
1 1 XIAOYU 628569583 PARENT 1861053 10-10月 -11
2 2 XIAOYU 628569583 CURRENT 1881035 26-12月-11
Rman>run{
Reset database to incarnation 21;
Set until scn 1861053;
Restore database;
Recover database;
Alter database open resetlogs;
}
…..
完成 restore 于 26-12月-11
正在开始介质的恢复
介质恢复完成, 用时: 00:00:05
完成 recover 于 26-12月-11
[@more@]
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25362835/viewspace-1056951/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25362835/viewspace-1056951/