这几天再次系统学习了次oracle基于时间点不完全恢复的一些恢复方式,上一篇使用restore database的方式进行不完全恢复,见
http://gaoshan.blog.51cto.com/742525/426326
这次使用的是duplicate复制数据库的方式进行不完全恢复,以下是实验例子:
实验目的:test1用户使用truncate table 和drop方式删除t1,t2 表,测试数据恢复。
1、源库建立环境:
建立2个表空间:
SQL> create tablespace test1 datafile'/u01/app/oracle/oradata/aix5/test01.dbf' size 10m;
Tablespace created.
SQL> create tablespace test2 datafile '/u01/app/oracle/oradata/aix5/test02.dbf' size 10m;
Tablespace created.
建立2个用户并授权:
SQL> create user test1 identified by test1 default tablespace test1;
User created.
SQL> create user test2 identified by test2 default tablespace test2;
User created.
SQL> grant dba to test1;
Grant succeeded.
SQL> grant dba to test2;
Grant succeeded.
2、此时做一个rman全备数据库,步骤略过。
SQL> conn / as sysdba
Connected.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/archive
Oldest online log sequence 75
Next log sequence to archive 77
Current log sequence 77
SQL> alter system switch logfile;
System altered.
3、建立实验表:
test1建立t1,t2表
SQL> conn test1/test1
Connected.
SQL> create table t1 as select * from all_users;
Table created.
SQL> create table t2 as select * from all_users;
Table created.
test2建立t1,t2表
SQL> conn test2/test2
Connected.
SQL> create table t1 (id number);
Table created.
SQL> create table t2 (id number);
Table created.
test1再建立t3表
SQL> conn test1/test1;
Connected.
SQL> create table t3 (id number);
Table created.
SQL> insert into t3 values (1);
1 row created.
SQL> commit;
Commit complete.
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
记录t3表插入记录后时间,
SQL> select sysdate from dual;
SYSDATE
-------------------
2010-11-27 11:11:00
SQL> select count(*) from t1;
COUNT(*)
----------
30
SQL> select count(*) from t2;
COUNT(*)
----------
30
SQL> select count(*) from t3;
COUNT(*)
----------
1
4、清空t1表。
SQL> truncate table t1;
Table truncated.
删除t2表。
SQL> drop table t2 purge;
SQL> col object_name format a20;
SQL> select object_name,last_ddl_time from user_objects;
OBJECT_NAME LAST_DDL_TIME
-------------------- -------------------
T1 2010-11-27 11:11:41
T3 2010-11-27 11:10:18
5、准备目标库的环境:
$ pwd
/u01/app/oracle
$ mkdir -p ./admin/aux/bdump
$ mkdir -p ./admin/aux/cdump
$ mkdir -p ./admin/aux/udump
$ mkdir -p ./admin/aux/adump
$ ls -l
total 48
drwxr-s--- 6 oracle oinstall 512 Nov 27 11:33 admin
-rw-r--r-- 1 oracle oinstall 1042 Nov 27 08:53 dbs
drwxr-s--- 4 oracle oinstall 512 Nov 27 09:43 flash_recovery_area
drwxrwxr-x 6 oracle oinstall 512 Oct 28 12:07 oraInventory
drwxr-s--- 5 oracle oinstall 512 Nov 27 10:05 oradata
drwxrws--- 3 oracle oinstall 512 Oct 27 15:58 product
$ mkdir ./oradata/aux
$ mkdir /u01/archive/aux
$ cd $ORACLE_HOME/dbs
$ pwd
/u01/app/oracle/product/10.2.0/db1/dbs
$ mv inittest.ora initaux.ora
$ orapwd file=orapwaux password=oracle entries=10
$ vi initaux.ora
"initaux.ora" 30 lines, 1143 characters
aux.__db_cache_size=209715200
aux.__java_pool_size=4194304
aux.__large_pool_size=4194304
aux.__shared_pool_size=88080384
aux.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/aux/adump'
*.background_dump_dest='/u01/app/oracle/admin/aux/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u01/app/oracle/oradata/aux/control01.ctl','/u01/app/oracle/oradata/aux/control02.ctl','/u01/app/oracle/oradata/aux/control0
3.ctl'
*.core_dump_dest='/u01/app/oracle/admin/aux/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_file_name_convert='aix5','aux'
*.db_name='aux'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=auxXDB)'
*.job_queue_processes=10
*.log_archive_dest_2='location=/u01/archive/aux'
*.log_file_name_convert='aix5','aux'
*.open_cursors=300
*.pga_aggregate_target=157286400
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=314572800
*.sga_target=314572800
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/oracle/admin/aux/udump'
6、目标库启动到nomount状态。
$ export ORACLE_SID=aux
$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Sat Nov 27 11:34:30 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to an idle instance.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 314572800 bytes
Fixed Size 2083760 bytes
Variable Size 96470096 bytes
Database Buffers 209715200 bytes
Redo Buffers 6303744 bytes
7、开始duplicate ,可以使用skip tablespace 命令跳过不需要的表空间。
$ export ORACLE_SID=aux
$ rman target sys/oracle@aix5 auxiliary /
Recovery Manager: Release 10.2.0.4.0 - Production on Sat Nov 27 11:15:08 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: AIX5 (DBID=2940324364)
connected to auxiliary database: AUX (not mounted)
RMAN> run{
2> allocate auxiliary channel d1 device type disk;
3> allocate channel c1 device type disk;
4> set until time "to_date('2010-11-27 11:11:00','yyyy-mm-dd hh24:mi:ss')";
5> duplicate target database to aux skip tablespace test2 nofilenamecheck;
6> }
using target database control file instead of recovery catalog
allocated channel: d1
channel d1: sid=155 devtype=DISK
allocated channel: c1
channel c1: sid=137 devtype=DISK
executing command: SET until clause
Starting Duplicate Db at 27-NOV-10
Datafile 7 skipped by request
contents of Memory Script:
{
set until scn 2360497;
set newname for datafile 1 to
"/u01/app/oracle/oradata/aux/system01.dbf";
set newname for datafile 2 to
"/u01/app/oracle/oradata/aux/undotbs01.dbf";
set newname for datafile 3 to
"/u01/app/oracle/oradata/aux/sysaux01.dbf";
set newname for datafile 4 to
"/u01/app/oracle/oradata/aux/users01.dbf";
set newname for datafile 5 to
"/u01/app/oracle/oradata/aux/example01.dbf";
set newname for datafile 6 to
"/u01/app/oracle/oradata/aux/test01.dbf";
restore
check readonly
clone database
skip tablespace TEST2 ;
}
executing Memory Script
executing command: SET until clause
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 27-NOV-10
channel d1: starting datafile backupset restore
channel d1: specifying datafile(s) to restore from backup set
restoring datafile 00002 to /u01/app/oracle/oradata/aux/undotbs01.dbf
restoring datafile 00003 to /u01/app/oracle/oradata/aux/sysaux01.dbf
restoring datafile 00004 to /u01/app/oracle/oradata/aux/users01.dbf
channel d1: reading from backup piece /u01/orabk/db_AIX5_0blu20ga_1_1.dbf
channel d1: restored backup piece 1
piece handle=/u01/orabk/db_AIX5_0blu20ga_1_1.dbf tag=TAG20101127T104009
channel d1: restore complete, elapsed time: 00:00:46
channel d1: starting datafile backupset restore
channel d1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /u01/app/oracle/oradata/aux/system01.dbf
restoring datafile 00005 to /u01/app/oracle/oradata/aux/example01.dbf
restoring datafile 00006 to /u01/app/oracle/oradata/aux/test01.dbf
channel d1: reading from backup piece /u01/orabk/db_AIX5_0clu20ga_1_1.dbf
channel d1: restored backup piece 1
piece handle=/u01/orabk/db_AIX5_0clu20ga_1_1.dbf tag=TAG20101127T104009
channel d1: restore complete, elapsed time: 00:01:06
Finished restore at 27-NOV-10
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "AUX" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ( '/u01/app/oracle/oradata/aux/redo01.log' ) SIZE 50 M REUSE,
GROUP 2 ( '/u01/app/oracle/oradata/aux/redo02.log' ) SIZE 50 M REUSE,
GROUP 3 ( '/u01/app/oracle/oradata/aux/redo03.log' ) SIZE 50 M REUSE
DATAFILE
'/u01/app/oracle/oradata/aux/system01.dbf'
CHARACTER SET ZHS16GBK
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
datafile 2 switched to datafile copy
input datafile copy recid=1 stamp=736169850 filename=/u01/app/oracle/oradata/aux/undotbs01.dbf
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=736169850 filename=/u01/app/oracle/oradata/aux/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=736169850 filename=/u01/app/oracle/oradata/aux/users01.dbf
datafile 5 switched to datafile copy
input datafile copy recid=4 stamp=736169850 filename=/u01/app/oracle/oradata/aux/example01.dbf
datafile 6 switched to datafile copy
input datafile copy recid=5 stamp=736169850 filename=/u01/app/oracle/oradata/aux/test01.dbf
contents of Memory Script:
{
set until time "to_date('2010-11-27 11:11:00','yyyy-mm-dd hh24:mi:ss')";
recover
clone database
delete archivelog
;
}
executing Memory Script
executing command: SET until clause
Starting recover at 27-NOV-10
datafile 7 not processed because file is offline
starting media recovery
archive log thread 1 sequence 77 is already on disk as file /u01/archive/1_77_733512527.dbf
archive log filename=/u01/archive/1_77_733512527.dbf thread=1 sequence=77
unable to find archive log
archive log thread=1 sequence=78
released channel: d1
released channel: c1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 11/27/2010 11:37:35
RMAN-03015: error occurred in stored script Memory Script
RMAN-06054: media recovery requesting unknown log: thread 1 seq 78 lowscn 2361416
8.复制完成后检查:
复制到最后有错误信息,提示需要78号日志,检查发现78号日志是源库的当前SEQUENCE,还没有进行归档。
检查目标数据库,已经到mount状态。
SQL> select open_mode from v$database;
OPEN_MODE
----------
MOUNTED
查看oradata下文件。
$ ls -l
total 2808256
-rw-r----- 1 oracle oinstall 5652480 Nov 27 11:42 control01.ctl
-rw-r----- 1 oracle oinstall 5652480 Nov 27 11:42 control02.ctl
-rw-r----- 1 oracle oinstall 5652480 Nov 27 11:42 control03.ctl
-rw-r----- 1 oracle oinstall 157294592 Nov 27 11:37 example01.dbf
-rw-r----- 1 oracle oinstall 377495552 Nov 27 11:37 sysaux01.dbf
-rw-r----- 1 oracle oinstall 534781952 Nov 27 11:37 system01.dbf
-rw-r----- 1 oracle oinstall 10493952 Nov 27 11:37 test01.dbf
-rw-r----- 1 oracle oinstall 335552512 Nov 27 11:37 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 Nov 27 11:37 users01.dbf
$ ls -l
9、尝试打开数据库:
SQL> alter database open resetlogs;
Database altered.
再次检查数据文件,redo文件已经自动生成,复制数据库完成。
total 3115480
-rw-r----- 1 oracle oinstall 5652480 Nov 27 11:43 control01.ctl
-rw-r----- 1 oracle oinstall 5652480 Nov 27 11:43 control02.ctl
-rw-r----- 1 oracle oinstall 5652480 Nov 27 11:43 control03.ctl
-rw-r----- 1 oracle oinstall 157294592 Nov 27 11:43 example01.dbf
-rw-r----- 1 oracle oinstall 52429312 Nov 27 11:43 redo01.log
-rw-r----- 1 oracle oinstall 52429312 Nov 27 11:43 redo02.log
-rw-r----- 1 oracle oinstall 52429312 Nov 27 11:43 redo03.log
-rw-r----- 1 oracle oinstall 377495552 Nov 27 11:43 sysaux01.dbf
-rw-r----- 1 oracle oinstall 534781952 Nov 27 11:43 system01.dbf
-rw-r----- 1 oracle oinstall 10493952 Nov 27 11:43 test01.dbf
-rw-r----- 1 oracle oinstall 335552512 Nov 27 11:43 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 Nov 27 11:43 users01.dbf
$
检查其它数据文件,发现复制表空间时跳过的test2表空间状态还是recover的,这里直接删除它就可以了。
SQL> select name,bytes,status from v$datafile;
NAME BYTES STATUS
-------------------------------------------------- ---------- -------
/u01/app/oracle/oradata/aux/system01.dbf 534773760 SYSTEM
/u01/app/oracle/oradata/aux/undotbs01.dbf 335544320 ONLINE
/u01/app/oracle/oradata/aux/sysaux01.dbf 377487360 ONLINE
/u01/app/oracle/oradata/aux/users01.dbf 5242880 ONLINE
/u01/app/oracle/oradata/aux/example01.dbf 157286400 ONLINE
/u01/app/oracle/oradata/aux/test01.dbf 10485760 ONLINE
/u01/app/oracle/product/10.2.0/db1/dbs/MISSING0000 0 RECOVER
7
7 rows selected.
SQL> select name from v$tablespace;
NAME
--------------------------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
EXAMPLE
TEST1
TEMP
TEST2
8 rows selected.
10、数据完整性检查:
使用test1登录,检查数据:
SQL> conn test1/test1
Connected.
SQL> select count(*) from test1.t1;
select count(*) from test1.t1
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select * from tab;
no rows selected
发现用户下的t1,t2表都不存在了,不完全恢复没有成功,估计是要78号日志时发生了错误造成的。
重新进行duplicate 复制,复制前源库先switch 切换日志:
继续实验:
1、源库操作switch:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/archive
Oldest online log sequence 76
Next log sequence to archive 78
Current log sequence 78
SQL> alter system switch logfile;
System altered.
SQL> !ls -l /u01/archive
total 397584
-rw-r----- 1 oracle oinstall 47127552 Nov 25 01:17 1_73_733512527.dbf
-rw-r----- 1 oracle oinstall 47127552 Nov 25 21:26 1_74_733512527.dbf
-rw-r----- 1 oracle oinstall 47127552 Nov 26 21:00 1_75_733512527.dbf
-rw-r----- 1 oracle oinstall 47510016 Nov 27 05:00 1_76_733512527.dbf
-rw-r----- 1 oracle oinstall 14043648 Nov 27 11:09 1_77_733512527.dbf
-rw-r----- 1 oracle oinstall 607744 Nov 27 11:55 1_78_733512527.dbf
drwxr-sr-x 2 oracle oinstall 512 Nov 27 11:34 aux
drwxr-sr-x 2 oracle oinstall 512 Nov 27 10:08 test
2、目标库启动到Nomount:
SQL> conn / as sysdba
Connected.
SQL> startup nomount force;
ORACLE instance started.
Total System Global Area 314572800 bytes
Fixed Size 2083760 bytes
Variable Size 96470096 bytes
Database Buffers 209715200 bytes
Redo Buffers 6303744 bytes
3、开始duplicate:
$ rman target sys/oracle@aix5 auxiliary /;
Recovery Manager: Release 10.2.0.4.0 - Production on Sat Nov 27 11:56:59 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: AIX5 (DBID=2940324364)
connected to auxiliary database: AUX (not mounted)
RMAN> run{
2> allocate auxiliary channel d1 device type disk;
3> allocate channel c1 device type disk;
4> set until time "to_date('2010-11-27 11:11:00','yyyy-mm-dd hh24:mi:ss')";
5> duplicate target database to aux skip tablespace test2 nofilenamecheck;
6> }
using target database control file instead of recovery catalog
allocated channel: d1
channel d1: sid=155 devtype=DISK
allocated channel: c1
channel c1: sid=142 devtype=DISK
executing command: SET until clause
Starting Duplicate Db at 27-NOV-10
Datafile 7 skipped by request
contents of Memory Script:
{
set until scn 2361416;
set newname for datafile 1 to
"/u01/app/oracle/oradata/aux/system01.dbf";
set newname for datafile 2 to
"/u01/app/oracle/oradata/aux/undotbs01.dbf";
set newname for datafile 3 to
"/u01/app/oracle/oradata/aux/sysaux01.dbf";
set newname for datafile 4 to
"/u01/app/oracle/oradata/aux/users01.dbf";
set newname for datafile 5 to
"/u01/app/oracle/oradata/aux/example01.dbf";
set newname for datafile 6 to
"/u01/app/oracle/oradata/aux/test01.dbf";
restore
check readonly
clone database
skip tablespace TEST2 ;
}
executing Memory Script
executing command: SET until clause
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 27-NOV-10
channel d1: starting datafile backupset restore
channel d1: specifying datafile(s) to restore from backup set
restoring datafile 00002 to /u01/app/oracle/oradata/aux/undotbs01.dbf
restoring datafile 00003 to /u01/app/oracle/oradata/aux/sysaux01.dbf
restoring datafile 00004 to /u01/app/oracle/oradata/aux/users01.dbf
channel d1: reading from backup piece /u01/orabk/db_AIX5_0blu20ga_1_1.dbf
channel d1: restored backup piece 1
piece handle=/u01/orabk/db_AIX5_0blu20ga_1_1.dbf tag=TAG20101127T104009
channel d1: restore complete, elapsed time: 00:00:46
channel d1: starting datafile backupset restore
channel d1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /u01/app/oracle/oradata/aux/system01.dbf
restoring datafile 00005 to /u01/app/oracle/oradata/aux/example01.dbf
restoring datafile 00006 to /u01/app/oracle/oradata/aux/test01.dbf
channel d1: reading from backup piece /u01/orabk/db_AIX5_0clu20ga_1_1.dbf
channel d1: restored backup piece 1
piece handle=/u01/orabk/db_AIX5_0clu20ga_1_1.dbf tag=TAG20101127T104009
channel d1: restore complete, elapsed time: 00:00:56
Finished restore at 27-NOV-10
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "AUX" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ( '/u01/app/oracle/oradata/aux/redo01.log' ) SIZE 50 M REUSE,
GROUP 2 ( '/u01/app/oracle/oradata/aux/redo02.log' ) SIZE 50 M REUSE,
GROUP 3 ( '/u01/app/oracle/oradata/aux/redo03.log' ) SIZE 50 M REUSE
DATAFILE
'/u01/app/oracle/oradata/aux/system01.dbf'
CHARACTER SET ZHS16GBK
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
datafile 2 switched to datafile copy
input datafile copy recid=1 stamp=736171151 filename=/u01/app/oracle/oradata/aux/undotbs01.dbf
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=736171151 filename=/u01/app/oracle/oradata/aux/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=736171151 filename=/u01/app/oracle/oradata/aux/users01.dbf
datafile 5 switched to datafile copy
input datafile copy recid=4 stamp=736171151 filename=/u01/app/oracle/oradata/aux/example01.dbf
datafile 6 switched to datafile copy
input datafile copy recid=5 stamp=736171151 filename=/u01/app/oracle/oradata/aux/test01.dbf
contents of Memory Script:
{
set until time "to_date('2010-11-27 11:11:00','yyyy-mm-dd hh24:mi:ss')";
recover
clone database
delete archivelog
;
}
executing Memory Script
executing command: SET until clause
Starting recover at 27-NOV-10
datafile 7 not processed because file is offline
starting media recovery
archive log thread 1 sequence 77 is already on disk as file /u01/archive/1_77_733512527.dbf
archive log thread 1 sequence 78 is already on disk as file /u01/archive/1_78_733512527.dbf
archive log filename=/u01/archive/1_77_733512527.dbf thread=1 sequence=77
archive log filename =/u01/archive/1_78_733512527.dbf thread=1 sequence=78
media recovery complete, elapsed time: 00:00:03
Finished recover at 27-NOV-10
contents of Memory Script:
{
shutdown clone;
startup clone nomount ;
}
executing Memory Script
user interrupt received
released channel: c1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 11/27/2010 12:15:59
RMAN-03015: error occurred in stored script Memory Script
RMAN-06136: ORACLE error from auxiliary database: ORA-01013: user requested cancel of current operation
4、当复制到上面红色字executing Memory Script 时长时间没有反应。
查看目标库的alert文件,应该是在创建test2表空间时给卡死了,日志信息如下:
Thread 1 advanced to log sequence 77 (LGWR switch)
Current log# 1 seq# 77 mem# 0: /u01/app/oracle/oradata/aix5/redo01.log
Sat Nov 27 10:10:56 2010
create tablespace test1 datafile'/u01/app/oracle/oradata/aix5/test01.dbf' size 10m
Sat Nov 27 10:10:57 2010
Completed: create tablespace test1 datafile'/u01/app/oracle/oradata/aix5/test01.dbf' size 10m
Sat Nov 27 10:11:18 2010
create tablespace test2 datafile '/u01/app/oracle/oradata/aix5/test02.dbf' size 10m
Sat Nov 27 10:11:18 2010
Completed: create tablespace test2 datafile '/u01/app/oracle/oradata/aix5/test02.dbf' size 10m
~
再查看生成的数据文件,除redo02,redo03外都大于原先生成的11:43 分了,
$ ls -l
total 3115480
-rw-r----- 1 oracle oinstall 5652480 Nov 27 12:15 control01.ctl
-rw-r----- 1 oracle oinstall 5652480 Nov 27 12:15 control02.ctl
-rw-r----- 1 oracle oinstall 5652480 Nov 27 12:15 control03.ctl
-rw-r----- 1 oracle oinstall 157294592 Nov 27 11:59 example01.dbf
-rw-r----- 1 oracle oinstall 52429312 Nov 27 11:55 redo01.log
-rw-r----- 1 oracle oinstall 52429312 Nov 27 11:43 redo02.log
-rw-r----- 1 oracle oinstall 52429312 Nov 27 11:43 redo03.log
-rw-r----- 1 oracle oinstall 377495552 Nov 27 11:59 sysaux01.dbf
-rw-r----- 1 oracle oinstall 534781952 Nov 27 11:59 system01.dbf
-rw-r----- 1 oracle oinstall 10493952 Nov 27 11:59 test01.dbf
-rw-r----- 1 oracle oinstall 335552512 Nov 27 11:59 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 Nov 27 11:59 users01.dbf
所以按 ctrl+c 结束复制任务。
5、目标库打开数据库:
SQL> select open_mode from v$database;
OPEN_MODE
----------
MOUNTED
SQL> alter database open resetlogs;
Database altered.
6、检查数据库,可以看到2010-11-27 11:11:00 前的数据已经全部恢复:
SQL> select count(*) from test1.t1;
COUNT(*)
----------
30
SQL> select count(*) from test1.t2;
COUNT(*)
----------
30
SQL> select count(*) from test1.t3;
COUNT(*)
----------
1
SQL> col name format a60;
SQL> select name,bytes,status from v$datafile;
NAME BYTES STATUS
------------------------------------------------------------ ---------- -------
/u01/app/oracle/oradata/aux/system01.dbf 534773760 SYSTEM
/u01/app/oracle/oradata/aux/undotbs01.dbf 335544320 ONLINE
/u01/app/oracle/oradata/aux/sysaux01.dbf 377487360 ONLINE
/u01/app/oracle/oradata/aux/users01.dbf 5242880 ONLINE
/u01/app/oracle/oradata/aux/example01.dbf 157286400 ONLINE
/u01/app/oracle/oradata/aux/test01.dbf 10485760 ONLINE
/u01/app/oracle/product/10.2.0/db1/dbs/MISSING00007 0 RECOVER
SQL> drop tablespace test2 including contents and datafiles;
Tablespace dropped.
本篇文章参考了 http://muyizi2001.blog.163.com/blog/static/3156228320097254927357/ 里的思想。