以TSPITR方式恢复表空间数据一例(二)

2015-01-25 22:16:24 · 作者: · 浏览: 39
up/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> !
创建表的时候,logseq是32,之后切换了一次日志,到33,此时的表中仍然是有数据的,但是truncate操作后表中的数据就没有了,这个动作基本就是在logseq 34的时候发生的,truncate完以后又切了日志,到了35,我们实验的目的就是要把表空间恢复到logseq=34这个时间点(Time In Point)。根据刚才说的那个例子,就是到故障点8点以前的某个数据未丢失的时间点(5点)
--创建一个auxiliary目录(必要步骤) [oracle@bak ~]$ mkdir /u01/aux [oracle@bak ~]$ rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Fri Dec 26 16:54:36 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: ORA10G (DBID=4175411955)
auxiliary目标目录中会在之后的RMAN脚本执行过程中,生成一些 系统恢复需要的文件,等RMAN恢复完后会展示一下这个目录的结构。
--最关键的来了,用RMAN命令进行TSPITR恢复到故障点之前的某个时刻 RMAN> recover tablespace tspitr until logseq 33 auxiliary destination '/u01/aux';
Starting recover at 26-DEC-14 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=159 devtype=DISK RMAN-05026: WARNING: presuming following set of tablespaces applies to spec