oracle实验记录 (恢复-rman reset incatnation(1))


接 使用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/

你可能感兴趣的:(数据库)