3 恢复的流程
3.1 大体流程
建立一个AUXILIARY 实例,对表所在的表空间或数据文件做不完全的恢复,然后把数据库EXP 出来IMP 到原库。对表所在的整个表空间的恢复适用于表空间不大的情况下,如果一个表空间300GB而你要恢复的表只有30M 的话,显然还是恢复表所在一个或几个数据文件方便。
需要说明的是,AUXILIARY 库必须包括SYSTEM 表空间、UNDO 表空间以及你误操作表的表空间。如果你的UNDO 表空间也比较大,且你有DUL 工具的话,UNDO 表空间也是不需要的。
3.2 注意事项
如果你的AUXILIARY 库与主库在一台机器,一定要小心操作,以免恢复中覆盖主库文件,使主库发生损坏。
3.3 模拟问题的产生
3.3.1 模拟环境的配置
系统环境为Solaris9+Oracle9.2.0.6 ,主库的SID 为orcl,归档方式
表空间:
SQL> select tablespace_name from dba_tablespaces; TABLESPACE_NAME ------------------------------ SYSTEM UNDOTBS1 TEMP EXAMPLE INDX TOOLS USERS 7 rows selected.
数据文件:
SQL> select file_id,file_name,tablespace_name from dba_data_files; FILE_ID FILE_NAME TABLESPACE ---------- ---------------------------------------- ---------- 1 /yang/oradata/orcl/system01.dbf SYSTEM 2 /yang/oradata/orcl/undotbs01.dbf UNDOTBS1 3 /yang/oradata/orcl/example01.dbf EXAMPLE 4 /yang/oradata/orcl/indx01.dbf INDX 5 /yang/oradata/orcl/tools01.dbf TOOLS 6 /yang/oradata/orcl/users01.dbf USERS 7 /yang/oradata/orcl/users02.dbf USERS 7 rows selected. 日志文件: SQL> select member from v$logfile; MEMBER ---------------------------------------- /yang/oradata/orcl/redo01.log /yang/oradata/orcl/redo02.log /yang/oradata/orcl/redo03.log
3.3.2 备份一下数据库
$ rman cmdfile=b0 Recovery Manager: Release 9.2.0.6.0 - 64bit Production Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved. RMAN> connect target / 2> connect catalog rman/rman@prod 3> 4> run 5> { 6> allocate channel c1 type disk; 7> allocate channel c2 type disk; 8> allocate channel c3 type disk; 9> 10> backup incremental level 0 11> filesperset 3 12> format '/yang/backup/db_incr0_%t_%s_%p' 13> database; 14> 15> sql 'alter system archive log current'; 16> 17> backup filesperset 5 18> format '/yang/backup/arch_%t_%s_%p' 19> archivelog all delete input; 20> 21> sql 'alter system archive log current'; 22> 23> release channel c1; 24> release channel c2; 25> release channel c3; 26> } 27> 28> connected to target database: ORCL (DBID=1153028581) connected to recovery catalog database allocated channel: c1 channel c1: sid=11 devtype=DISK allocated channel: c2 channel c2: sid=15 devtype=DISK allocated channel: c3 channel c3: sid=19 devtype=DISK Starting backup at 15-JUN-07 channel c1: starting incremental level 0 datafile backupset channel c1: specifying datafile(s) in backupset input datafile fno=00003 name=/yang/oradata/orcl/example01.dbf input datafile fno=00004 name=/yang/oradata/orcl/indx01.dbf input datafile fno=00006 name=/yang/oradata/orcl/users01.dbf channel c1: starting piece 1 at 15-JUN-07 channel c2: starting incremental level 0 datafile backupset channel c2: specifying datafile(s) in backupset input datafile fno=00002 name=/yang/oradata/orcl/undotbs01.dbf input datafile fno=00005 name=/yang/oradata/orcl/tools01.dbf input datafile fno=00007 name=/yang/oradata/orcl/users02.dbf channel c2: starting piece 1 at 15-JUN-07 channel c3: starting incremental level 0 datafile backupset channel c3: specifying datafile(s) in backupset including current SPFILE in backupset including current controlfile in backupset input datafile fno=00001 name=/yang/oradata/orcl/system01.dbf channel c3: starting piece 1 at 15-JUN-07 channel c1: finished piece 1 at 15-JUN-07 piece handle=/yang/backup/db_incr0_625323864_29_1 comment=NONE channel c1: backup set complete, elapsed time: 00:00:16 channel c2: finished piece 1 at 15-JUN-07 piece handle=/yang/backup/db_incr0_625323865_30_1 comment=NONE channel c2: backup set complete, elapsed time: 00:00:22 channel c3: finished piece 1 at 15-JUN-07 piece handle=/yang/backup/db_incr0_625323865_31_1 comment=NONE channel c3: backup set complete, elapsed time: 00:00:22 Finished backup at 15-JUN-07 sql statement: alter system archive log current Starting backup at 15-JUN-07 current log archived channel c1: starting archive log backupset channel c1: specifying archive log(s) in backup set input archive log thread=1 sequence=18 recid=20 stamp=625312589 channel c1: starting piece 1 at 15-JUN-07 channel c2: starting archive log backupset channel c2: specifying archive log(s) in backup set input archive log thread=1 sequence=19 recid=21 stamp=625312591 input archive log thread=1 sequence=20 recid=18 stamp=625311783 channel c2: starting piece 1 at 15-JUN-07 channel c3: starting archive log backupset channel c3: specifying archive log(s) in backup set input archive log thread=1 sequence=21 recid=19 stamp=625312046 input archive log thread=1 sequence=22 recid=22 stamp=625323889 channel c3: starting piece 1 at 15-JUN-07 channel c1: finished piece 1 at 15-JUN-07 piece handle=/yang/backup/arch_625323891_32_1 comment=NONE channel c1: backup set complete, elapsed time: 00:00:02 channel c1: deleting archive log(s) archive log filename=/yang/arch1/arch1_18.arc recid=20 stamp=625312589 channel c2: finished piece 1 at 15-JUN-07 piece handle=/yang/backup/arch_625323891_33_1 comment=NONE channel c2: backup set complete, elapsed time: 00:00:02 channel c2: deleting archive log(s) archive log filename=/yang/arch1/arch1_19.arc recid=21 stamp=625312591 archive log filename=/yang/arch/arch1_20.arc recid=18 stamp=625311783 channel c3: finished piece 1 at 15-JUN-07 piece handle=/yang/backup/arch_625323891_34_1 comment=NONE channel c3: backup set complete, elapsed time: 00:00:02 channel c3: deleting archive log(s) archive log filename=/yang/arch/arch1_21.arc recid=19 stamp=625312046 archive log filename=/yang/arch/arch1_22.arc recid=22 stamp=625323889 channel c1: starting archive log backupset channel c1: specifying archive log(s) in backup set input archive log thread=1 sequence=23 recid=23 stamp=625323890 channel c1: starting piece 1 at 15-JUN-07 channel c1: finished piece 1 at 15-JUN-07 piece handle=/yang/backup/arch_625323893_35_1 comment=NONE channel c1: backup set complete, elapsed time: 00:00:01 channel c1: deleting archive log(s) archive log filename=/yang/arch/arch1_23.arc recid=23 stamp=625323890 Finished backup at 15-JUN-07 sql statement: alter system archive log current released channel: c1 released channel: c2 released channel: c3 Recovery Manager complete.