ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RMAN恢复案例之不完全恢复以及incarnation应用

RMAN恢复案例之不完全恢复以及incarnation应用

原创 Linux操作系统 作者:keungyu 时间:2013-08-02 13:49:02 0 删除 编辑

RMAN恢复案例之不完全恢复以及incarnation应用

案例:

(1)       09:50:00创建表test1,test

(2)       后面在9:54:45进行了drop test1的操作导致表test1被删除;

(3)       9:56:20又再次进行drop test的操作导致表test被删除

要求:(1)第一步要求恢复到表test1被删除那个时刻9:54:45之后的状态

          2)第二步要求恢复表test被删除那个时刻9:56:20之后的状态

 

一。查询当前test,test1表情况

 

SQL> desc test;

 名称                                      是否为空? 类型

 ----------------------------------------- -------- ----------------------------

 

 OWNER                                              VARCHAR2(30)

 OBJECT_NAME                                        VARCHAR2(128)

 SUBOBJECT_NAME                                     VARCHAR2(30)

 OBJECT_ID                                          NUMBER

 DATA_OBJECT_ID                                     NUMBER

 OBJECT_TYPE                                        VARCHAR2(19)

 CREATED                                            DATE

 LAST_DDL_TIME                                      DATE

 TIMESTAMP                                          VARCHAR2(19)

 STATUS                                             VARCHAR2(7)

 TEMPORARY                                          VARCHAR2(1)

 GENERATED                                          VARCHAR2(1)

 SECONDARY                                          VARCHAR2(1)

 NAMESPACE                                          NUMBER

 EDITION_NAME                                       VARCHAR2(30)

 

SQL> desc test1;

 名称                                      是否为空? 类型

 ----------------------------------------- -------- ----------------------------

 

 OWNER                                              VARCHAR2(30)

 OBJECT_NAME                                        VARCHAR2(128)

 SUBOBJECT_NAME                                     VARCHAR2(30)

 OBJECT_ID                                          NUMBER

 DATA_OBJECT_ID                                     NUMBER

 OBJECT_TYPE                                        VARCHAR2(19)

 CREATED                                            DATE

 LAST_DDL_TIME                                      DATE

 TIMESTAMP                                          VARCHAR2(19)

 STATUS                                             VARCHAR2(7)

 TEMPORARY                                          VARCHAR2(1)

 GENERATED                                          VARCHAR2(1)

 SECONDARY                                          VARCHAR2(1)

 NAMESPACE                                          NUMBER

 EDITION_NAME                                       VARCHAR2(30)

 

SQL> select count(1) from test1;

 

  COUNT(1)

----------

     69382

 

SQL> select count(1) from test;

 

  COUNT(1)

----------

    277524

 

二。首先对数据库进行全备(时间为9:53:41)

RMAN> backup database;

 

启动 backup 2013-08-02 09:53:41

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集内的数据文件

输入数据文件: 文件号=00001 名称=D:\APP\ADMINISTRATOR\ORADATA\MYTEST\SYSTEM01.DBF

 

输入数据文件: 文件号=00003 名称=D:\APP\ADMINISTRATOR\ORADATA\MYTEST\UNDOTBS01.DB

F

输入数据文件: 文件号=00002 名称=D:\APP\ADMINISTRATOR\ORADATA\MYTEST\SYSAUX01.DBF

 

输入数据文件: 文件号=00005 名称=D:\APP\ADMINISTRATOR\ORADATA\MYTEST.DBF

输入数据文件: 文件号=00004 名称=D:\APP\ADMINISTRATOR\ORADATA\MYTEST\USERS01.DBF

通道 ORA_DISK_1: 正在启动段 1 2013-08-02 09:53:42

通道 ORA_DISK_1: 已完成段 1 2013-08-02 09:54:17

段句柄=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYTEST\BACKUPSET\2013_08_02\O1_M

F_NNNDF_TAG20130802T095341_8ZP496PX_.BKP 标记=TAG20130802T095341 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:35

通道 ORA_DISK_1: 正在启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集内的数据文件

备份集内包括当前控制文件

备份集内包括当前的 SPFILE

通道 ORA_DISK_1: 正在启动段 1 2013-08-02 09:54:18

通道 ORA_DISK_1: 已完成段 1 2013-08-02 09:54:20

段句柄=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYTEST\BACKUPSET\2013_08_02\O1_M

F_NCSNF_TAG20130802T095341_8ZP4BBS1_.BKP 标记=TAG20130802T095341 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02

完成 backup 2013-08-02 09:54:20

 

三。执行删除表test1的操作(时间为09:54:45)

SQL> drop table test1;

 

表已删除。

 

SQL> alter system switch logfile;

 

系统已更改。

 

SQL> desc test1;

ERROR:

ORA-04043: 对象 test1 不存在

 

 

四。执行删除表test的操作(时间为09:56:20)

SQL> desc test;

 名称                                      是否为空? 类型

 ----------------------------------------- -------- ----------------------------

 

 OWNER                                              VARCHAR2(30)

 OBJECT_NAME                                        VARCHAR2(128)

 SUBOBJECT_NAME                                     VARCHAR2(30)

 OBJECT_ID                                          NUMBER

 DATA_OBJECT_ID                                     NUMBER

 OBJECT_TYPE                                        VARCHAR2(19)

 CREATED                                            DATE

 LAST_DDL_TIME                                      DATE

 TIMESTAMP                                          VARCHAR2(19)

 STATUS                                             VARCHAR2(7)

 TEMPORARY                                          VARCHAR2(1)

 GENERATED                                          VARCHAR2(1)

 SECONDARY                                          VARCHAR2(1)

 NAMESPACE                                          NUMBER

 EDITION_NAME                                       VARCHAR2(30)

 

SQL> drop table test;

 

表已删除。

 

SQL> alter system switch logfile;

 

系统已更改。

 

SQL> desc test;

ERROR:

ORA-04043: 对象 test 不存在

 

五。开始恢复到删除表test1时的状态

RMAN> shutdown immediate;

 

数据库已关闭

数据库已卸装

Oracle 实例已关闭

 

RMAN>

 

RMAN>

 

RMAN> startup mount;

 

已连接到目标数据库 (未启动)

Oracle 实例已启动

数据库已装载

 

系统全局区域总计    6714322944 字节

 

Fixed Size                     2188448 字节

Variable Size               3523218272 字节

Database Buffers            3170893824 字节

Redo Buffers                  18022400 字节

 

RMAN> run

2> {

3> set until time '2013-08-02 09:55:50';

4> restore database;

5> recover database;

6> }

 

正在执行命令: SET until clause

 

启动 restore 2013-08-02 09:59:10

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: SID=63 设备类型=DISK

 

通道 ORA_DISK_1: 正在开始还原数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集还原的数据文件

通道 ORA_DISK_1: 将数据文件 00001 还原到 D:\APP\ADMINISTRATOR\ORADATA\MYTEST\SYS

TEM01.DBF

通道 ORA_DISK_1: 将数据文件 00002 还原到 D:\APP\ADMINISTRATOR\ORADATA\MYTEST\SYS

AUX01.DBF

通道 ORA_DISK_1: 将数据文件 00003 还原到 D:\APP\ADMINISTRATOR\ORADATA\MYTEST\UND

OTBS01.DBF

通道 ORA_DISK_1: 将数据文件 00004 还原到 D:\APP\ADMINISTRATOR\ORADATA\MYTEST\USE

RS01.DBF

通道 ORA_DISK_1: 将数据文件 00005 还原到 D:\APP\ADMINISTRATOR\ORADATA\MYTEST.DBF

 

通道 ORA_DISK_1: 正在读取备份片段 D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYTES

T\BACKUPSET\2013_08_02\O1_MF_NNNDF_TAG20130802T095341_8ZP496PX_.BKP

通道 ORA_DISK_1: 段句柄 = D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYTEST\BACKUP

SET\2013_08_02\O1_MF_NNNDF_TAG20130802T095341_8ZP496PX_.BKP 标记 = TAG20130802T0

95341

通道 ORA_DISK_1: 已还原备份片段 1

通道 ORA_DISK_1: 还原完成, 用时: 00:00:46

完成 restore 2013-08-02 09:59:57

 

启动 recover 2013-08-02 09:59:57

使用通道 ORA_DISK_1

 

正在开始介质的恢复

介质恢复完成, 用时: 00:00:02

 

完成 recover 2013-08-02 10:00:01

 

查询未恢复之前的incarnation状态

RMAN> list incarnation;

 

 

数据库原型列表

DB 关键字  Inc 关键字 DB   DB ID            STATUS  重置 SCN  重置时间

------- ------- -------- ---------------- --- ---------- ----------

1       1       MYTEST   2520448845       PARENT  1          2013-07-20 21:59:41

 

2       2       MYTEST   2520448845       PARENT  2027406    2013-08-01 18:33:34

 

3      3       MYTEST   2520448845       ORPHAN  2045831    2013-08-01 22:13:44

 

4       4       MYTEST   2520448845       CURRENT 2046502    2013-08-01 22:39:10

 

查询恢复后的incarnation状态

 

RMAN> alter database open resetlogs;

 

数据库已打开

 

RMAN> list incarnation;

 

 

数据库原型列表

DB 关键字  Inc 关键字 DB   DB ID            STATUS  重置 SCN  重置时间

------- ------- -------- ---------------- --- ---------- ----------

1       1       MYTEST   2520448845       PARENT  1          2013-07-20 21:59:41

 

2       2       MYTEST   2520448845       PARENT  2027406    2013-08-01 18:33:34

 

3      3       MYTEST   2520448845       ORPHAN  2045831    2013-08-01 22:13:44

 

4       4       MYTEST   2520448845       PARENT  2046502    2013-08-01 22:39:10

 

5       5       MYTEST   2520448845       CURRENT 2070517    2013-08-02 10:01:00

 

验证恢复后的数据

C:\Users\Administrator>sqlplus "/as sysdba"

 

SQL*Plus: Release 11.2.0.1.0 Production on 星期五 8 2 10:01:23 2013

 

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

 

 

连接到:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL>

SQL> desc test;

 名称                                      是否为空? 类型

 ----------------------------------------- -------- ----------------------------

 

 OWNER                                              VARCHAR2(30)

 OBJECT_NAME                                        VARCHAR2(128)

 SUBOBJECT_NAME                                     VARCHAR2(30)

 OBJECT_ID                                          NUMBER

 DATA_OBJECT_ID                                     NUMBER

 OBJECT_TYPE                                        VARCHAR2(19)

 CREATED                                            DATE

 LAST_DDL_TIME                                      DATE

 TIMESTAMP                                          VARCHAR2(19)

 STATUS                                             VARCHAR2(7)

 TEMPORARY                                          VARCHAR2(1)

 GENERATED                                          VARCHAR2(1)

 SECONDARY                                          VARCHAR2(1)

 NAMESPACE                                          NUMBER

 EDITION_NAME                                       VARCHAR2(30)

 

SQL> desc test1;

ERROR:

ORA-04043: 对象 test1 不存在

 

发现test表还在,大事test1的表确实删除的状态!!

六。开始恢复到删除表test的状态(不经过设置incarnation恢复)

RMAN> shutdown immediate;

 

数据库已关闭

数据库已卸装

Oracle 实例已关闭

 

RMAN> startup mount;

 

已连接到目标数据库 (未启动)

Oracle 实例已启动

数据库已装载

 

系统全局区域总计    6714322944 字节

 

Fixed Size                     2188448 字节

Variable Size               3523218272 字节

Database Buffers            3170893824 字节

Redo Buffers                  18022400 字节

 

RMAN> run

2> {

3> set until time '2013-08-02 09:58:50';

4> restore database;

5> recover database;

6> }

 

正在执行命令: SET until clause

 

启动 restore 2013-08-02 10:03:04

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: restore 命令 ( 08/02/2013 10:03:04 ) 失败

RMAN-20207: UNTIL TIME or RECOVERY WINDOW is before RESETLOGS time

 

 

RMAN> list incarnation;

 

 

数据库原型列表

DB 关键字  Inc 关键字 DB   DB ID            STATUS  重置 SCN  重置时间

------- ------- -------- ---------------- --- ---------- ----------

1       1       MYTEST   2520448845       PARENT  1          2013-07-20 21:59:41

 

2       2       MYTEST   2520448845       PARENT  2027406    2013-08-01 18:33:34

 

3      3       MYTEST   2520448845       ORPHAN  2045831    2013-08-01 22:13:44

 

4       4       MYTEST   2520448845       PARENT  2046502    2013-08-01 22:39:10

 

5       5       MYTEST   2520448845       CURRENT 2070517    2013-08-02 10:01:00

 

因为之前已经执行过不完全恢复,所以这个时候设置的时间点2013-08-02 09:58:50已经比当前的2013-08-02 10:01:00早,Oracle默认会认为当前时间前的已经是无效的,故会提示失败

 

七。设置incarnation进行恢复到删除表test的状态

RMAN> reset database to incarnation 4;

将数据库重置为原型 4

 

--恢复到删除表test当时的状态

RMAN> run

2> {

3> set until time '2013-08-02 09:58:50';

4> restore database;

5> recover database;

6> }

 

正在执行命令: SET until clause

 

启动 restore 2013-08-02 10:04:32

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: SID=63 设备类型=DISK

 

通道 ORA_DISK_1: 正在开始还原数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集还原的数据文件

通道 ORA_DISK_1: 将数据文件 00001 还原到 D:\APP\ADMINISTRATOR\ORADATA\MYTEST\SYS

TEM01.DBF

通道 ORA_DISK_1: 将数据文件 00002 还原到 D:\APP\ADMINISTRATOR\ORADATA\MYTEST\SYS

AUX01.DBF

通道 ORA_DISK_1: 将数据文件 00003 还原到 D:\APP\ADMINISTRATOR\ORADATA\MYTEST\UND

OTBS01.DBF

通道 ORA_DISK_1: 将数据文件 00004 还原到 D:\APP\ADMINISTRATOR\ORADATA\MYTEST\USE

RS01.DBF

通道 ORA_DISK_1: 将数据文件 00005 还原到 D:\APP\ADMINISTRATOR\ORADATA\MYTEST.DBF

 

通道 ORA_DISK_1: 正在读取备份片段 D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYTES

T\BACKUPSET\2013_08_02\O1_MF_NNNDF_TAG20130802T095341_8ZP496PX_.BKP

通道 ORA_DISK_1: 段句柄 = D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYTEST\BACKUP

SET\2013_08_02\O1_MF_NNNDF_TAG20130802T095341_8ZP496PX_.BKP 标记 = TAG20130802T0

95341

通道 ORA_DISK_1: 已还原备份片段 1

通道 ORA_DISK_1: 还原完成, 用时: 00:00:45

完成 restore 2013-08-02 10:05:18

 

启动 recover 2013-08-02 10:05:19

使用通道 ORA_DISK_1

 

正在开始介质的恢复

 

线程 1 序列 2 的归档日志已作为文件 D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYTE

ST\ARCHIVELOG\2013_08_02\O1_MF_1_2_8ZP4C2DB_.ARC 存在于磁盘上

线程 1 序列 3 的归档日志已作为文件 D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYTE

ST\ARCHIVELOG\2013_08_02\O1_MF_1_3_8ZP4G29C_.ARC 存在于磁盘上

线程 1 序列 4 的归档日志已作为文件 D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYTE

ST\ARCHIVELOG\2013_08_02\O1_MF_1_4_8ZP4PWC4_.ARC 存在于磁盘上

归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYTEST\ARCHIVELOG\2013_0

8_02\O1_MF_1_2_8ZP4C2DB_.ARC 线程=1 序列=2

归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYTEST\ARCHIVELOG\2013_0

8_02\O1_MF_1_3_8ZP4G29C_.ARC 线程=1 序列=3

归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYTEST\ARCHIVELOG\2013_0

8_02\O1_MF_1_4_8ZP4PWC4_.ARC 线程=1 序列=4

介质恢复完成, 用时: 00:00:03

完成 recover 2013-08-02 10:05:24

 

RMAN>

 

RMAN> list incarnation;

 

 

数据库原型列表

DB 关键字  Inc 关键字 DB   DB ID            STATUS  重置 SCN  重置时间

------- ------- -------- ---------------- --- ---------- ----------

1       1       MYTEST   2520448845       PARENT  1          2013-07-20 21:59:41

 

2       2       MYTEST   2520448845       PARENT  2027406    2013-08-01 18:33:34

 

3      3       MYTEST   2520448845       ORPHAN  2045831    2013-08-01 22:13:44

 

4       4       MYTEST   2520448845       CURRENT 2046502    2013-08-01 22:39:10

 

5      5       MYTEST   2520448845       ORPHAN  2070517    2013-08-02 10:01:00

 

 

RMAN> alter database open resetlogs;

 

数据库已打开

 

RMAN> list incarnation;

 

 

数据库原型列表

DB 关键字  Inc 关键字 DB   DB ID            STATUS  重置 SCN  重置时间

------- ------- -------- ---------------- --- ---------- ----------

1       1       MYTEST   2520448845       PARENT  1          2013-07-20 21:59:41

 

2       2       MYTEST   2520448845       PARENT  2027406    2013-08-01 18:33:34

 

3      3       MYTEST   2520448845       ORPHAN  2045831    2013-08-01 22:13:44

 

4       4       MYTEST   2520448845       PARENT  2046502    2013-08-01 22:39:10

 

5      5       MYTEST   2520448845       ORPHAN  2070517    2013-08-02 10:01:00

 

6       6       MYTEST   2520448845       CURRENT 2070778    2013-08-02 10:05:45

 

RMAN>

 

八。验证恢复后的状态

C:\Users\Administrator>sqlplus "/as sysdba"

 

SQL*Plus: Release 11.2.0.1.0 Production on 星期五 8 2 10:06:18 2013

 

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

 

 

连接到:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL>

SQL> desc test;

ERROR:

ORA-04043: 对象 test 不存在

 

SQL> desc test1;

ERROR:

ORA-04043: 对象 test1 不存在

 

此时已经恢复到删除表test的状态,因为之前表test1早就已经删除掉了,所以testtest1都不存在!!

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25269462/viewspace-767691/,如需转载,请注明出处,否则将追究法律责任。

上一篇: RMAN体系结构概述
请登录后发表评论 登录
全部评论

注册时间:2012-08-31

  • 博文量
    15
  • 访问量
    41081