一、全备份数据库 C:\> rman target / RMAN> backup database plus archivelog delete all input; 二、进行数据的更改 C:\> sqlplus "/ as sysdba" SQL > insert into tony.test select * from dba_objects ; SQL > commit; SQL > select count(*) from tony.test ; COUNT(*) ---------- 46598 SQL > alter system switch logfile; SQL > insert into tony.test select * from dba_objects ; SQL > commit; SQL > select count(*) from tony.test ; COUNT(*) ---------- 93196 SQL > alter system switch logfile; SQL > insert into tony.test select * from dba_objects ; SQL > commit; SQL > select count(*) from tony.test ; COUNT(*) ---------- 139794 SQL > alter system switch logfile; SQL > insert into tony.test select * from dba_objects ; commit; SQL > select count(*) from tony.test ; COUNT(*) ---------- 186392 SQL > alter system switch logfile; 日志序列的情况如下: SQL> select * from v$log_history where RECID > 45 ; RECID,STAMP,THREAD#,SEQUENCE#,FIRST_CHANGE#,FIRST_TIME,NEXT_CHANGE#,RESETLOGS_CHANGE#,RESETLOGS_TIME 46,760012033,1,9,537154,2011-08-24 10:26:00,537391,532087,2011-08-24 9:44:20 47,760012086,1,10,537391,2011-08-24 10:27:13,537561,532087,2011-08-24 9:44:20 48,760013089,1,11,537561,2011-08-24 10:28:06,539062,532087,2011-08-24 9:44:20 三、执行不完全恢复 SQL > shutdown immeidate ; SQL > startup mount ; C:\>rman target / 恢复管理器: Release 10.2.0.4.0 - Production on 星期三 8月 24 09:38:47 2011 Copyright (c) 1982, 2007, Oracle. All rights reserved. 已连接到目标数据库: TEST (DBID=2057987867, 未打开) RMAN> run { set until sequence 10 thread 1 ; restore database; recover database; } 正在执行命令: SET until clause 使用目标数据库控制文件替代恢复目录 启动 restore 于 24-8月 -11 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=156 devtype=DISK 通道 ORA_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_DISK_1: 正在指定从备份集还原的数据文件 正将数据文件00001还原到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF 正将数据文件00002还原到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF 正将数据文件00003还原到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF 正将数据文件00004还原到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF 通道 ORA_DISK_1: 正在读取备份片段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2011_08_24\O1_MF_NCSDF_TAG 20110824T081321_758JK4BQ_.BKP 通道 ORA_DISK_1: 已还原备份片段 1 段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2011_08_24\O1_MF_NCSDF_TAG20110824T081321_758JK4BQ_ .BKP 标记 = TAG20110824T081321 通道 ORA_DISK_1: 还原完成, 用时: 00:01:17 完成 restore 于 24-8月 -11 启动 recover 于 24-8月 -11 使用通道 ORA_DISK_1 正在开始介质的恢复 存档日志线程 1 序列 34 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH\ARC00034_0759841435.001 存在于磁盘上 通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复 通道 ORA_DISK_1: 正在恢复存档日志 存档日志线程 =1 序列=33 通道 ORA_DISK_1: 正在读取备份片段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2011_08_24\O1_MF_ANNNN_TAG 20110824T081420_758JLXRF_.BKP 通道 ORA_DISK_1: 已还原备份片段 1 段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2011_08_24\O1_MF_ANNNN_TAG20110824T081420_758JLXRF_ .BKP 标记 = TAG20110824T081420 通道 ORA_DISK_1: 还原完成, 用时: 00:00:02 存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH\ARC00033_0759841435.001 线程 =1 序列 =33 存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH\ARC00034_0759841435.001 线程 =1 序列 =34 介质恢复完成, 用时: 00:00:06 完成 recover 于 24-8月 -11 RMAN> RMAN> sql 'alter database open resetlogs' ; sql 语句: alter database open resetlogs RMAN> 四、此时的数据库状态 C:\>sqlplus "/as sysdba" SQL*Plus: Release 10.2.0.4.0 - Production on 星期三 8月 24 11:09:50 2011 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production With the Partitioning, OLAP, Data Mining Scoring Engine and Real Application Testing options SQL> archive log list 数据库日志模式 存档模式 自动存档 启用 存档终点 D:\oracle\product\10.2.0\oradata\test\arch 最早的联机日志序列 1 下一个存档日志序列 1 当前日志序列 1 SQL> select count(*) from tony.test; COUNT(*) ---------- 46598 SQL> 五、继续进行数据更改 SQL> create table tony.test2 as select * from dba_users; SQL> alter system switch logfile; SQL> select count(*) from tony.test2 ; COUNT(*) ---------- 18 SQL> insert into tony.test2 select * from tony.test2 ; SQL> commit; SQL> alter system switch logfile; SQL> select count(*) from tony.test2 ; COUNT(*) ---------- 36 此时的日志序列: SQL> select * from v$log_history where recid > 45 ; RECID,STAMP,THREAD#,SEQUENCE#,FIRST_CHANGE#,FIRST_TIME,NEXT_CHANGE#,RESETLOGS_CHANGE#,RESETLOGS_TIME 46,760012033,1,9,537154,2011-08-24 10:26:00,537391,532087,2011-08-24 9:44:20 47,760012086,1,10,537391,2011-08-24 10:27:13,537561,532087,2011-08-24 9:44:20 48,760013089,1,11,537561,2011-08-24 10:28:06,539062,532087,2011-08-24 9:44:20 49,760013619,1,12,539062,2011-08-24 10:44:49,540420,532087,2011-08-24 9:44:20 50,760014917,1,1,537392,2011-08-24 11:07:39,538596,537392,2011-08-24 11:07:39 51,760014959,1,2,538596,2011-08-24 11:15:17,538620,537392,2011-08-24 11:07:39 六、再次执行恢复 SQL> shutdown immediate; SQL> startup mount; C:\> rman target / RMAN> restore database; 启动 restore 于 24-8月 -11 使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=156 devtype=DISK 通道 ORA_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_DISK_1: 正在指定从备份集还原的数据文件 正将数据文件00001还原到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF 正将数据文件00002还原到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF 正将数据文件00003还原到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF 正将数据文件00004还原到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF 通道 ORA_DISK_1: 正在读取备份片段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2011_08_24\O1_MF_NCSDF_TAG 20110824T102502_758R81SW_.BKP 通道 ORA_DISK_1: 已还原备份片段 1 段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2011_08_24\O1_MF_NCSDF_TAG20110824T102502_758R81SW_ .BKP 标记 = TAG20110824T102502 通道 ORA_DISK_1: 还原完成, 用时: 00:01:16 完成 restore 于 24-8月 -11 RMAN> RMAN> recover database; 启动 recover 于 24-8月 -11 使用通道 ORA_DISK_1 正在开始介质的恢复 存档日志线程 1 序列 8 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH\ARC00008_0760009460.001 存档日志线程 1 序列 9 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH\ARC00009_0760009460.001 存档日志线程 1 序列 1 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH\ARC00001_0760014459.001 存档日志线程 1 序列 2 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH\ARC00002_0760014459.001 存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH\ARC00008_0760009460.001 线程 =1 序列 =8 存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ARCH\ARC00009_0760009460.001 线程 =1 序列 =9 介质恢复完成, 用时: 00:00:08 完成 recover 于 24-8月 -11 RMAN> sql ' alter database open ' ; sql 语句: alter database open RMAN> 七、最后检查数据恢复情况 注意此次恢复跨越了resetlogs时间点(从最初备份进行恢复,中间有resetlog, 后面的重置后的归档日志也可以恢复到原备份中) 。 C:\> sqlplus "/ as sysdba" SQL> select count(*) from tony.test ; COUNT(*) ---------- 46598 SQL> select count(*) from tony.test2 ; COUNT(*) ---------- 36