Oracle以TSPITR方式恢复表空间数据一例

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

举一个例子:一个Oracle数据库运行在归档模式下,在夜间22点保留一份完全备份。早上8点时候,某个特定表空间上数据表(单个表独占表空间)发生一个误操作,数据损坏。要求在不伤害其他数据表数据的情况下,将表空间数据恢复到早上5点。这样部分数据恢复的场景,就是TSPITR的典型应用。在实际场景中,常常希望恢复部分的数据到过去时间点上。

TSPITR目前最方便的方法是使用RMAN进行自动的恢复。

其使用前提为两个:

1. 必须存在相应的备份集合

2. 表空间对象是子包含的,也就是其他表空间中不包括与这个表空间对象相关的对象数据(互相独立)

 

恢复步骤和原理如下:

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

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

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

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

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

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

这种系列操作,如果使用RMAN命令系列是可以逐步完成的。自动化RMANTSPITR操作也是对这个过程的完全自动化运行。

下面通过实验来进行演示操作:


--创建测试用户zlm并赋予权限

 

SQL> create user zlm identified by zlm;

 

User created.

 

SQL> grant dba to zlm;

 

Grant succeeded.

 

--创建测试表空间tspitr

 

SQL> create tablespace tspitr datafile '/data/oradata/ora10g/tspitr01.dbf' size 100m autoextend off extent management local uniform size 1m segment space management auto;

 

Tablespace created.

 

--修改用户zlm缺省表空间为tspitr

 

SQL> alter user zlm default tablespace tspitr;

 

User altered.

 

SQL> show user

USER is ""

SQL> conn zlm/zlm@ora10g213

Connected.

SQL>  !

 

--创建一个RMAN备份集

 

[oracle@bak ~]$ rman target /

 

Recovery Manager: Release 10.2.0.1.0 - Production on Fri Dec 26 16:44:00 2014

 

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

 

connected to target database: ORA10G (DBID=4175411955)

 

RMAN> backup as compressed backupset database format '/u01/orabackup/backupsets/full_ora10g_%U' plus archive log format '/u01/orabackup/backupsets/arc_ora10g_%U' delete all input;

 

 

Starting backup at 26-DEC-14

current log archived

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=138 devtype=DISK

channel ORA_DISK_1: starting compressed archive log backupset

channel ORA_DISK_1: specifying archive log(s) in backup set

input archive log thread=1 sequence=30 recid=30 stamp=867343597

channel ORA_DISK_1: starting piece 1 at 26-DEC-14

channel ORA_DISK_1: finished piece 1 at 26-DEC-14

piece handle=/u01/orabackup/backupsets/arc_ora10g_13pr577g_1_1 tag=TAG20141226T164639 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:04

channel ORA_DISK_1: deleting archive log(s)

archive log filename=/oracle/flash_recovery_area/ORA10G/archivelog/2014_12_26/o1_mf_1_30_b9t83f1s_.arc recid=30 stamp=867343597

Finished backup at 26-DEC-14

 

Starting backup at 26-DEC-14

using channel ORA_DISK_1

channel ORA_DISK_1: starting compressed full datafile backupset

channel ORA_DISK_1: specifying datafile(s) in backupset

input datafile fno=00001 name=/data/oradata/ora10g/system01.dbf

input datafile fno=00003 name=/data/oradata/ora10g/sysaux01.dbf

input datafile fno=00002 name=/data/oradata/ora10g/undotbs01.dbf

input datafile fno=00005 name=/data/oradata/ora10g/example01.dbf

input datafile fno=00006 name=/data/oradata/ora10g/tspitr01.dbf

input datafile fno=00004 name=/data/oradata/ora10g/users01.dbf

channel ORA_DISK_1: starting piece 1 at 26-DEC-14

channel ORA_DISK_1: finished piece 1 at 26-DEC-14

piece handle=/u01/orabackup/backupsets/full_ora10g_14pr577l_1_1 tag=TAG20141226T164644 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:02:47

Finished backup at 26-DEC-14

 

Starting backup at 26-DEC-14

current log archived

using channel ORA_DISK_1

channel ORA_DISK_1: starting compressed archive log backupset

channel ORA_DISK_1: specifying archive log(s) in backup set

input archive log thread=1 sequence=31 recid=31 stamp=867343772

channel ORA_DISK_1: starting piece 1 at 26-DEC-14

channel ORA_DISK_1: finished piece 1 at 26-DEC-14

piece handle=/u01/orabackup/backupsets/arc_ora10g_15pr57ct_1_1 tag=TAG20141226T164933 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01

channel ORA_DISK_1: deleting archive log(s)

archive log filename=/oracle/flash_recovery_area/ORA10G/archivelog/2014_12_26/o1_mf_1_31_b9t88wnv_.arc recid=31 stamp=867343772

Finished backup at 26-DEC-14

 

Starting Control File and SPFILE Autobackup at 26-DEC-14

piece handle=/u01/orabackup/backupsets/ora10g-c-4175411955-20141226-05.ctl comment=NONE

Finished Control File and SPFILE Autobackup at 26-DEC-14

 

RMAN> exit

 

 

Recovery Manager complete.

 

--连接到测试用户zlm查看当前日志

 

[oracle@bak ~]$ sqlplus /nolog

 

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Dec 26 16:50:46 2014

 

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

 

 

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

 

SQL> conn zlm/zlm@ora10g213

Connected.

SQL> select sequence#,status from v$log;

 

 SEQUENCE# STATUS

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

       32 CURRENT

        30 INACTIVE

        31 ACTIVE

 

--创建测试表t1,并切换若干次日志

 

SQL> create table t1 as select * from dba_objects;

 

Table created.

 

SQL> alter system switch logfile;

 

System altered.

 

SQL> select sequence#,status from v$log;

 

 SEQUENCE# STATUS

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

        32 ACTIVE

        33 CURRENT

        31 ACTIVE

 

SQL> alter system switch logfile;

 

System altered.

 

SQL> select sequence#,status from v$log;

 

 SEQUENCE# STATUS

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

        32 ACTIVE

        33 ACTIVE

        34 CURRENT    --此时仍然时候数据的

 

SQL> select count(*) from t1;

 

  COUNT(*)

----------

     50382

 

--对表进行truancate操作,模拟误操作

 

SQL> truncate table t1;

 

Table truncated.

 

SQL> select count(*) from t1;

 

  COUNT(*)

----------

         0

 

SQL> alter system switch logfile;

 

System altered.

 

SQL> select sequence#,status from v$log;

 

 SEQUENCE# STATUS

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

        35 CURRENT    --truncate之后又切换了一次日志,当前日志为35

        33 ACTIVE

        34 ACTIVE

 

SQL> !

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0f417dac01ed75369c919483d6341626.html