使用RMAN进行表空间TSPITR自动恢复(一)

2014-11-24 17:24:22 · 作者: · 浏览: 0

--------------------------------------分割线 --------------------------------------


推荐阅读:


--------------------------------------分割线 --------------------------------------


1、聊聊TSPITR


严格的说TSPITR是一种相对细粒度的不完全恢复技术。我们通常见到的还原操作,都是将所有的表空间和数据还原到相同的一个时间点上,无论是否是故障恢复点。而TSPITR则是以表空间为粒度单元,单独将某个表空间内容还原到一个特定可恢复时间点上。

举一个例子:一个Oracle数据库运行在归档模式下,在夜间零时保留一份完全备份。早上七点时候,某个特定表空间上数据表(单个表独占表空间)发生一个误操作,数据损坏。要求在不伤害其他数据表数据的情况下,将表空间数据恢复到早上六点。

这样部分数据恢复的场景,就是TSPITR的典型应用。我们在实际场景中,常常希望恢复部分的数据到过去时间点上,而不希望对现有数据进行补录。

TSPITR目前最方便的方法是使用RMAN进行自动的恢复。其使用前提为两个,一个是必须存在相应的备份集合,另一个是表空间对象是“self-contain”,也就是其他表空间中不包括与这个表空间对象相关的对象数据。

恢复步骤和原理如下:


ü RMAN三个对象集合:catalog、target和auxiliary。其中auxiliary就是用于辅助target各种备份还原要求的操作数据库。这个库在TSPITR中扮演临时数据还原作用的;

ü 首先完成数据检查工作,确定备份集合和表空间完整性;

ü 当前时间是T1,如果需要将数据还原为T0。使用RMAN提取备份数据集合,还原到auxiliary上形成一个新的实例数据库。选择性应用归档日志序列,还原auxiliary到TO时间点;

ü 使用expdp工具从auxiliary中导出目标表空间为dump对象。注意:还原auxiliary并不是100%重建target,而是选择系统运行表空间和目标表空间;

ü 在target数据库中删除原表空间。使用impdp工具导入dump文件进入target数据库;

ü 清理环境,将创建的auxiliary数据库删除;


这种系列操作,我们如果使用RMAN命令系列是可以逐步完成的。自动化RMAN的TSPITR操作也是对这个过程的完全自动化运行。下面我们通过实验来进行演示操作。


2、环境准备


我们选择Oracle 11gR2进行试验。


SQL> select * from v$version;

BANNER

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

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

PL/SQL Release 11.2.0.1.0 - Production

CORE 11.2.0.1.0 Production

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 – Production


SQL> select log_mode from v$database;

LOG_MODE

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

ARCHIVELOG


创建实验表空间和实验数据表T。注意:由于我们使用的是11.2.0.1版本,如果使用sys用户进行测试,会引起Bug 12411104 : RMAN DUPLICATE RMAN-05548 WHEN CONNECTED TO TARGET。为避免问题,我们切换入scott用户执行。


SQL> create tablespace tsptiptbl datafile size 100m autoextend off

2 extent management local uniform size 1m

3 segment space management auto;

Tablespace created


--切换到scott用户进行试验,这个很重要!!(在11.2.0.1版本上)

SQL> conn scott/tiger@wilson ;

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0


Connected as scott


SQL> create table t tablespace tsptiptbl as select * from dba_objects;

Table created


保留一个备份集合。


BS Key Type LV Size Device Type Elapsed Time Completion Time

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

142 Full 1.33G DISK 00:02:52 16-FEB-14


BP Key: 142 Status: AVAILABLE Compressed: NO Tag: TAG20140216T191156

Piece Name: /u01/flash_recovery_area/WILSON/backupset/2014_02_16/o1_mf_nnndf_TAG20140216T191156_9j177yk1_.bkp

List of Datafiles in backup set 142

(篇幅原因,有省略……)


BS Key Size Device Type Elapsed Time Completion Time

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

143 21.50K DISK 00:00:00 16-FEB-14


BP Key: 143 Status: AVAILABLE Compressed: NO Tag: TAG20140216T191454

Piece Name: /u01/flash_recovery_area/WILSON/backupset/2014_02_16/o1_mf_annnn_TAG20140216T191454_9j17fgd3_.bkp


List of Archived Logs in backup set 143

Thrd Seq Low SCN Low Time Next SCN Next Time

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

1 497 5398705 16-FEB-14 5398798 16-FEB-14


BS Key Type LV Size Device Type Elapsed Time Completion Time

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

144 Full 9.67M DISK 00:00:04