Home  >  Article  >  Database  >  Oracle以TSPITR方式恢复表空间数据一例

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

WBOY
WBOYOriginal
2016-06-07 16:40:551094browse

其实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> !

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn