接 使用resetlogs open后数据文件恢复
实验下跨resetlogs 恢复db
简单说下resetlogs作用:
resetlogs 不会重新设置SCN为0,只是将log sequence#设置为1,SCN 不变,resetlog open后,SCN为应用日志的最后一条日志记录的SCN号+1
resetlog open后oracle将clear所有current logfile中未应用的redo record,将控制文件中记录的 日志序号重新设置为1
当不完全恢复后datafile的SCN 与controlfile SCN,redo ,不一样需要resetlogs open来 强制 同步,每次resetlog open后将产生一个incarnation,且需要ADD TEMPFILE
先备份一下db
C:\>rman target /
恢复管理器: Release 10.2.0.1.0 - Production on 星期五 10月 9 16:02:56 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: XH (DBID=3093395309)
RMAN> list backup;
使用目标数据库控制文件替代恢复目录
RMAN> backup database;
启动 backup 于 09-10月-09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=141 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSTEM01.DBF
输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSAUX01.DBF
输入数据文件 fno=00005 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\EXAMPLE01.DBF
输入数据文件 fno=00002 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\UNDOTBS01.DBF
输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\USERS01.DBF
输入数据文件 fno=00009 name=D:\XHDATAFILE\OUTLINE.DBF
输入数据文件 fno=00007 name=D:\XHDATAFILE\XHTEST.DBF
输入数据文件 fno=00008 name=D:\XHDATAFILE\XHTR.DBF
输入数据文件 fno=00010 name=D:\XHDATAFILE\SMALLFILE.DBF
通道 ORA_DISK_1: 正在启动段 1 于 09-10月-09
通道 ORA_DISK_1: 已完成段 1 于 09-10月-09
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_10_09\O1_MF_N
NNDF_TAG20091009T160347_5DXVM5MK_.BKP 标记=TAG20091009T160347 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:55
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 09-10月-09
通道 ORA_DISK_1: 已完成段 1 于 09-10月-09
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_10_09\O1_MF_N
CSNF_TAG20091009T160347_5DXVNY3X_.BKP 标记=TAG20091009T160347 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 09-10月-09
RMAN>
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
3 UNUSED
2 UNUSED
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1003
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
56
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1557686
SQL> truncate table tr.t1;
表被截断。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1557734
SQL> select count(*) from tr.t1;
COUNT(*)
----------
0
SQL> alter system switch logfile;
系统已更改。
SQL> alter system checkpoint;
系统已更改。
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
57
RMAN> run{startup force mount;
2> set until scn=1557686;
3> restore database;
4> recover database;
5> sql 'alter database open resetlogs';}
Oracle 实例已启动
数据库已装载
正在开始介质的恢复
介质恢复完成, 用时: 00:00:08
完成 recover 于 09-10月-09
sql 语句: alter database open resetlogs
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
58
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1003
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1557971
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 UNUSED
3 UNUSED
2 CURRENT
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
1557688
SQL> select checkpoint_change# from v$datafile;
CHECKPOINT_CHANGE#
------------------
1557688
1557688
1557688
1557688
1557688
1557688
1557688
1557688
1557688
已选择9行。
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
1557688
1557688
1557688
1557688
1557688
1557688
1557688
1557688
1557688
已选择9行。
SQL> insert into tr.t1 values(1,2);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 UNUSED
3 UNUSED
2 CURRENT
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1559092
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1004
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
58
SQL> alter system switch logfile;
系统已更改。
SQL> alter system checkpoint;
系统已更改。
使用resetlogs前备份 恢复
RMAN> run{ startup force mount;
2> restore database;
3> recover database;
4> }
RMAN> sql 'alter database open';
sql 语句: alter database open
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
60
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1004
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1579352
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
3 CURRENT
2 INACTIVE
现在要求恢复到resetlogs前时间点 SCN 1557686 既ROW 1003时候
RMAN> list incarnation of database;
数据库原型列表
DB 关键字 Inc 关键字 DB 名 DB ID STATUS 重置 SCN 重置时间
------- ------- -------- ---------------- --- ---------- ----------
2 2 XH 3093395309 PARENT 534907 18-9月 -09
1 1 XH 3093395309 PARENT 1511693 09-10月-09
3 3 XH 3093395309 ORPHAN 1512986 09-10月-09
4 4 XH 3093395309 PARENT 1532869 09-10月-09
5 5 XH 3093395309 PARENT 1533467 09-10月-09
6 6 XH 3093395309 PARENT 1533644 09-10月-09
7 7 XH 3093395309 PARENT 1554422 09-10月-09
8 8 XH 3093395309 PARENT 1554479 09-10月-09
9 9 XH 3093395309 PARENT 1555247 09-10月-09
10 10 XH 3093395309 PARENT 1555988 09-10月-09
11 11 XH 3093395309 CURRENT 1557687 09-10月-09
SQL> desc v$database_incarnation;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
INCARNATION# NUMBER
RESETLOGS_CHANGE# NUMBER
RESETLOGS_TIME DATE
PRIOR_RESETLOGS_CHANGE# NUMBER
PRIOR_RESETLOGS_TIME DATE
STATUS VARCHAR2(7)
RESETLOGS_ID NUMBER
PRIOR_INCARNATION# NUMBER
FLASHBACK_DATABASE_ALLOWED VARCHAR2(26)
INCARNATION# NUMBER Record ID for the branch record in the control file
RESETLOGS_CHANGE# NUMBER Resetlogs system change number (SCN) for the incarnation of the current row
RESETLOGS_TIME DATE Resetlogs timestamp for the incarnation of the current row
PRIOR_RESETLOGS_CHANGE# NUMBER Resetlogs SCN for the previous incarnation
PRIOR_RESETLOGS_TIME DATE Resetlogs timestamp for the previous incarnation
STATUS VARCHAR2(7) Incarnation status:
ORPHAN - Orphan incarnation
CURRENT - Current incarnation of the database
PARENT - Parent of the current incarnation
RESETLOGS_ID NUMBER Branch ID for the incarnation of the current row (used by user-managed recovery/RMAN restore to get unique names for archived logs across
incarnations)
PRIOR_INCARNATION# NUMBER Parent incarnation record ID if nonzero
FLASHBACK_DATABASE_ALLOWED VARCHAR2(26) Indicate whether or not Flashback Database can be performed into SCNs or timestamps in the incarnation. A value of
YES means that you can flashback to some point in that incarnation. A value of NO indicates that you cannot flashback into the incarnation.
RMAN> reset database to incarnation 10~~~~~~~~~~~需要在mount阶段设置
2> ;
RMAN-03009: reset 命令 (default 通道上, 在 10/09/2009 17:40:19 上) 失败
ORA-19910: 不能更改控制文件中的恢复目标原型
ORA-19910: can not change recovery target incarnation in control file
Cause: The RESET DATABASE TO INCARNATION command was used while the database is open. This is not allowed.
Action: Close the database then re-issue the command.
RMAN> shutdown immediate;
数据库已关闭
数据库已卸载
Oracle 实例已关闭
RMAN> startup mount;
RMAN> reset database to incarnation 10;
RMAN> run{set until scn=1557686;
2> restore database;
3> recover database;
4> sql 'alter database open resetlogs';}
正在执行命令: SET until clause
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 UNUSED
3 CURRENT
2 UNUSED
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1557977
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1003
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
60
RMAN> list incarnation of database;
数据库原型列表
DB 关键字 Inc 关键字 DB 名 DB ID STATUS 重置 SCN 重置时间
------- ------- -------- ---------------- --- ---------- ----------
2 2 XH 3093395309 PARENT 534907 18-9月 -09
1 1 XH 3093395309 PARENT 1511693 09-10月-09
3 3 XH 3093395309 ORPHAN 1512986 09-10月-09
4 4 XH 3093395309 PARENT 1532869 09-10月-09
5 5 XH 3093395309 PARENT 1533467 09-10月-09
6 6 XH 3093395309 PARENT 1533644 09-10月-09
7 7 XH 3093395309 PARENT 1554422 09-10月-09
8 8 XH 3093395309 PARENT 1554479 09-10月-09
9 9 XH 3093395309 PARENT 1555247 09-10月-09
10 10 XH 3093395309 PARENT 1555988 09-10月-09
11 11 XH 3093395309 ORPHAN 1557687 09-10月-09
12 12 XH 3093395309 CURRENT 1557687 09-10月-09
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12020513/viewspace-616176/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12020513/viewspace-616176/