代码改变世界

10g跨越resetlogs时间点进行完全/不完全恢复

  Tracy.  阅读(719)  评论(0编辑  收藏  举报
一、全备份数据库
 
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

  

努力加载评论中...
点击右上角即可分享
微信分享提示