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

原创
2016-06-07 16:40:55 833浏览

其实TSPITR方式是对整个表空间的恢复,无论该表空间上有多少张表或对象,只要是自包含的表空间,就可以使用这种方法来进行恢复。

其使用前提为两个:

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

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

恢复步骤和原理如下:

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

时间点

数据库

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


--创建测试用户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> !

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。