>  기사  >  데이터 베이스  >  Oracle以TSPITR方式恢复表空间数据一例

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

WBOY
WBOY원래의
2016-06-07 16:40:551094검색

其实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으로 문의하세요.