Chinaunix首页 | 论坛 | 博客
  • 博客访问: 674297
  • 博文数量: 176
  • 博客积分: 4791
  • 博客等级: 上校
  • 技术积分: 1921
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-24 18:47
个人简介

it江湖漂,怎能不挨刀;一朝机器当,看你怎么着!

文章分类

全部博文(176)

文章存档

2014年(2)

2012年(17)

2011年(27)

2010年(18)

2009年(6)

2008年(21)

2007年(43)

2006年(42)

分类: LINUX

2007-05-17 14:56:41

2、  模拟环境:
1)首先使用rman作整个数据库备份
2)时间:
# date
Tue Aug 23 17:35:19 BEIDT 2005
3)操作:
sql>truncate table scott.emp
3、  恢复数据库到2005年8月23日17点35分19秒
4、  数据库到mount状态
5、  设置变量
$set nls_date_format=yyyy-mm-dd:hh24:mi:ss
6、  连接到rman
$rman target / catalog
RMAN> run {
2> set until time="to_date('2005-08-23:17:35:19','yyyy-mm-dd:hh24:mi:ss')";
3> restore database;
4> recover database;
5> }
 
executing command: SET until clause
 
Starting restore at 23-AUG-05
 
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=14 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=15 devtype=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: sid=16 devtype=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: sid=17 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00003 to /oradata/hb130000/cwmlite01.dbf
restoring datafile 00010 to /oradata/hb130000/xdb01.dbf
restoring datafile 00012 to /oradata/hb130000/GFB.DBF
restoring datafile 00013 to /oradata/hb130000/CA.dbf
restoring datafile 00017 to /oradata/hb130000/GDSS.dbf
channel ORA_DISK_2: starting datafile backupset restore
channel ORA_DISK_2: specifying datafile(s) to restore from backup set
restoring datafile 00004 to /oradata/hb130000/drsys01.dbf
restoring datafile 00005 to /oradata/hb130000/example01.dbf
restoring datafile 00006 to /oradata/hb130000/indx01.dbf
restoring datafile 00014 to /oradata/hb130000/QUEST.dbf
restoring datafile 00018 to /oradata/hb130000/FPJKDB.dbf
channel ORA_DISK_3: starting datafile backupset restore
channel ORA_DISK_3: specifying datafile(s) to restore from backup set
restoring datafile 00002 to /oradata/hb130000/undotbs01.dbf
restoring datafile 00007 to /oradata/hb130000/odm01.dbf
restoring datafile 00009 to /oradata/hb130000/users01.dbf
restoring datafile 00011 to /oradata/hb130000/YSZX130000002005.DBF
restoring datafile 00015 to /oradata/hb130000/FOGLIGHT.dbf
channel ORA_DISK_4: starting datafile backupset restore
channel ORA_DISK_4: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /oradata/hb130000/system01.dbf
restoring datafile 00008 to /oradata/hb130000/tools01.dbf
restoring datafile 00016 to /oradata/hb130000/gwd.dbf
restoring datafile 00019 to /oradata/hb130000/tgggg.dbf
channel ORA_DISK_2: restored backup piece 1
piece handle=/oradata/rmanbackup/df_HB130000_567080235_66_1.bak tag=TAG20050823T
101715 params=NULL
channel ORA_DISK_2: restore complete
channel ORA_DISK_3: restored backup piece 1
piece handle=/oradata/rmanbackup/df_HB130000_567080235_67_1.bak tag=TAG20050823T
101715 params=NULL
channel ORA_DISK_3: restore complete
channel ORA_DISK_1: restored backup piece 1
piece handle=/oradata/rmanbackup/df_HB130000_567080236_68_1.bak tag=TAG20050823T
101715 params=NULL
channel ORA_DISK_1: restore complete
channel ORA_DISK_4: restored backup piece 1
piece handle=/oradata/rmanbackup/df_HB130000_567080237_69_1.bak tag=TAG20050823T
101715 params=NULL
channel ORA_DISK_4: restore complete
Finished restore at 23-AUG-05
 
Starting recover at 23-AUG-05
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3
using channel ORA_DISK_4
 
starting media recovery
 
archive log thread 1 sequence 4 is already on disk as file /oradata/rmanbackup/a
rchive/hb130000_1_4.dbf
channel ORA_DISK_1: starting archive log restore to default destination
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=3
channel ORA_DISK_1: restored backup piece 1
piece handle=/oradata/rmanbackup/df_HB130000_567080296_72_1.bak tag=TAG20050823T
101815 params=NULL
channel ORA_DISK_1: restore complete
archive log filename=/oradata/rmanbackup/archive/hb130000_1_3.dbf thread=1 seque
nce=3
media recovery complete
Finished recover at 23-AUG-05
 
RMAN>
 
7、  连接到数据库
$sqlplus nolog
sql>conn / as sysdba
connected
sql>alter database open resetlogs
database altered.
8、查询表scott.emp数据得到恢复。
 
 一 冷备份.
     建立表空间test,用户test,表名test 插入数据
  insert into test.test(a,b) values(to_char(sysdate,'yyyy-mm-dd
hh24:mi:ss'),to_char(sysdate,'yyyy-mm-dd hh24:mi’));
  commit;
  alter system  archive log  current;
  进行了两个事务(commit)和日志切换
  commit;
  alter system  archive log  current;日志切换同时归档
  
  select checkpoint_change#,archive_change# ,controlfile_change# from v$database;
  1  984675  983549  984675 初始备份时的scn
  此时进行冷备份
  执行shutdown immediate
  拷贝所有的数据文件,控制文件,在线日志文件,归档日志文件,如果需要,spfile,密码文件
  最好多拷贝几份,以便反复测试使用。
  二、添加数据文件
  startup
  打开数据库
  删除test.test 表中的所有数据
  然后插入数据
  insert into test.test(a,b) values(to_char(sysdate,'yyyy-mm-dd
hh24:mi:ss'),to_char(sysdate,'yyyy-mm-dd hh24:mi’));
  commit;
  alter system  archive log  current;
  进行了两个事务(commit)和日志切换
  commit;
  前14条每两个进行一个commit,同时alter system  archive log  current;
  后面的
  每一个进行commit;
  alter system  archive log  current;
  select * from test.test
  1  2005-12-17 16:41:41  2005-12-17 16:41:41
  2  2005-12-17 16:42:36  2005-12-17 16:42:36
  3  2005-12-17 16:29:14  2005-12-17 16:29:14
  4  2005-12-17 16:28:26  2005-12-17 16:28:26
  5  2005-12-17 16:28:27  2005-12-17 16:28:27
  6  2005-12-17 16:29:12  2005-12-17 16:29:12
  7  2005-12-17 16:29:49  2005-12-17 16:29:49
  8  2005-12-17 16:29:49  2005-12-17 16:29:49
  9  2005-12-17 16:30:07  2005-12-17 16:30:07
  10  2005-12-17 16:30:09  2005-12-17 16:30:09
  11  2005-12-17 16:30:26  2005-12-17 16:30:26
  12  2005-12-17 16:30:27  2005-12-17 16:30:27
  13  2005-12-17 16:31:04  2005-12-17 16:31:04
  14  2005-12-17 16:31:23  2005-12-17 16:31:23
  15  2005-12-17 16:31:42  2005-12-17 16:31:42
  16  2005-12-17 16:31:56  2005-12-17 16:31:56
  17  2005-12-17 16:33:58  2005-12-17 16:33:58
  18  2005-12-17 16:34:05  2005-12-17 16:34:05
  19  2005-12-17 16:34:10  2005-12-17 16:34:10
  20  2005-12-17 16:34:17  2005-12-17 16:34:17
  产生scn的历史记录是
  select * from V$log_History
  1  1  577296464  1  1  982616  2005-12-17 16:04:04  983547
  2  2  577296471  1  2  983547  2005-12-17 16:07:44  983552
  3  3  577297714  1  3  983552  2005-12-17 16:07:51  985596
  4  4  577297760  1  4  985596  2005-12-17 16:28:34  985702
  5  5  577297794  1  5  985702  2005-12-17 16:29:20  985822
  6  6  577297813  1  6  985822  2005-12-17 16:29:54  985939
  7  7  577297835  1  7  985939  2005-12-17 16:30:13  986021
  8  8  577297888  1  8  986021  2005-12-17 16:30:35  986145
  9  9  577297926  1  9  986145  2005-12-17 16:31:28  986266
  10  10  577298076  1  10  986266  2005-12-17 16:32:05  986803
  11  11  577298200  1  11  986803  2005-12-17 16:34:36  987235
  12  12  577298250  1  12  987235  2005-12-17 16:36:40  987465
  13  13  577298299  1  13  987465  2005-12-17 16:37:30  987584
  14  14  577298317  1  14  987584  2005-12-17 16:38:18  987673
  15  15  577298507  1  15  987673  2005-12-17 16:38:37  988309
  16  16  577298512  1  16  988309  2005-12-17 16:41:46  988312
  17  17  577298515  1  17  988312  2005-12-17 16:41:52  988317
  18  18  577298516  1  18  988317  2005-12-17 16:41:55  988320
  19  19  577298518  1  19  988320  2005-12-17 16:41:56  988323
  20  20  577298528  1  20  988323  2005-12-17 16:41:58  988328
  21  21  577298563  1  21  988328  2005-12-17 16:42:08  988445
  此时
  select checkpoint_change#,archive_change# ,controlfile_change# from v$database;
  1  987945  987670  987945
  shutdown immediate ;
  再次完全冷备份当前的数据文件、控制文件、日志文件,归档日志文件(没有归档日志文件恢复就成了空话)
(当不完全恢复不成功或反复使用时使用,这点很重要,在实际你的生产运行数据库恢复时也是要这样。)
  恢复:三种方法
  基于时间
  (alter database ) recover database (automatic) until time ‘2005-12-16 11:09:01’;
  (alter database ) recover database (automatic) until time ‘2005-12-16 11:09:01’ using backup
controlfile;
  
  基于变更
  (alter database ) recover database   until change 985822;
  (alter database ) recover database   until change 985822using backup controlfile;
  
  基于撤销
   (alter database ) recover database until cancel ;
  (alter database ) recover database until cancel until change 985822using backup controlfile;
  这里的是否使用控制文件,取决于原有的控制文件是否损坏,和控制文件发生了变化(比如删除了表空间的
操作,而,删除数据和表的操作时不会影响到控制文件的变化)
  
  A、  基于时间(不使用备份的控制文件)
  shutdown immediate
  使用原来备份的数据文件,控制文件使用最新的,而不是备份的数据文件;
  SQL> shutdown immediate
  数据库已经关闭。
  已经卸载数据库。
  ORACLE 例程已经关闭。
  SQL> startup mount
  ORACLE 例程已经启动。
  
  Total System Global Area  135338868 bytes
  Fixed Size                   453492 bytes
  Variable Size             109051904 bytes
  Database Buffers           25165824 bytes
  Redo Buffers                 667648 bytes
  数据库装载完毕。
  SQL> recover database until time  '2005-12-17 16:30:07' ;
  ORA-00279: 更改 984674 (在 12/17/2005 16:14:05 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00003.001
  ORA-00280: 更改 984674 对于线程 1 是按序列 # 3 进行的
  
  
  指定日志: {=suggested | filename | AUTO | CANCEL}
  auto
  ORA-00279: 更改 985596 (在 12/17/2005 16:28:34 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00004.001
  ORA-00280: 更改 985596 对于线程 1 是按序列 # 4 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00003.001'
  
  
  ORA-00279: 更改 985702 (在 12/17/2005 16:29:20 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00005.001
  ORA-00280: 更改 985702 对于线程 1 是按序列 # 5 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00004.001'
  
  
  ORA-00279: 更改 985822 (在 12/17/2005 16:29:54 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00006.001
  ORA-00280: 更改 985822 对于线程 1 是按序列 # 6 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00005.001'
  
  
  已应用的日志。
  完成介质恢复。
  SQL> alter database open resetlogs;
  
  数据库已更改。
  ------------------------------
  到此恢复成功
  因为使用的是介质恢复(不完全恢复)
  故一定要使用resetlogs,重置日志序列号,和将日志scn归零,当再次添加数据或引起scn变化的时候
archive_change#将得到和其他连个相近(?)的数字
  可以查询一下
  
  
  SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database;
  
  CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE#
  ------------------ --------------- -------------------
              985935               0              985997
  
  
  SQL> select * from test.test;
  
  A                    B
  -------------------- --------------------
  2005-12-17 16:29:14  2005-12-17 16:29:14
  2005-12-17 16:28:26  2005-12-17 16:28:26
  2005-12-17 16:28:27  2005-12-17 16:28:27
  2005-12-17 16:29:12  2005-12-17 16:29:12
  2005-12-17 16:29:49  2005-12-17 16:29:49
  2005-12-17 16:29:49  2005-12-17 16:29:49
  
  已选择6行。
  查询第六行的时间和log_history的记录发现是scn=985822
  故恢复的时候如果直接恢复到第六条数据,就可使用scn=985822
  b  基于时间恢复(使用备份的控制文件)
  拷贝第一次冷备份的所有的数据文件,控制文件
  SQL> shutdown immediate
  ORA-01109: 数据库未打开
  
  
  已经卸载数据库。
  ORACLE 例程已经关闭。
  SQL> startup mount
  ORACLE 例程已经启动。
  
  Total System Global Area  135338868 bytes
  Fixed Size                   453492 bytes
  Variable Size             109051904 bytes
  Database Buffers           25165824 bytes
  Redo Buffers                 667648 bytes
  数据库装载完毕。
  SQL>  recover database until time  '2005-12-17 16:30:07'  using backup controlfile;
  ORA-00279: 更改 984674 (在 12/17/2005 16:14:05 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00003.001
  ORA-00280: 更改 984674 对于线程 1 是按序列 # 3 进行的
  
  
  指定日志: {=suggested | filename | AUTO | CANCEL}
  auto
  ORA-00279: 更改 985596 (在 12/17/2005 16:28:34 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00004.001
  ORA-00280: 更改 985596 对于线程 1 是按序列 # 4 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00003.001'
  
  
  ORA-00279: 更改 985702 (在 12/17/2005 16:29:20 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00005.001
  ORA-00280: 更改 985702 对于线程 1 是按序列 # 5 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00004.001'
  
  
  ORA-00279: 更改 985822 (在 12/17/2005 16:29:54 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00006.001
  ORA-00280: 更改 985822 对于线程 1 是按序列 # 6 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00005.001'
  
  
  已应用的日志。
  完成介质恢复。
  SQL> alter database open resetlogs;
  
  数据库已更改。
  
  SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database;
  
  CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE#
  ------------------ --------------- -------------------
              985935               0              985997
  
  SQL> select * from test.test;
  
  A                    B
  -------------------- --------------------
  2005-12-17 16:29:14  2005-12-17 16:29:14
  2005-12-17 16:28:26  2005-12-17 16:28:26
  2005-12-17 16:28:27  2005-12-17 16:28:27
  2005-12-17 16:29:12  2005-12-17 16:29:12
  2005-12-17 16:29:49  2005-12-17 16:29:49
  2005-12-17 16:29:49  2005-12-17 16:29:49
  
  已选择6行。
  
  SQL>
  
  
  
  
  
  
   B、a 基于变更的恢复(不包含备份的控制文件)
  SQL> recover database  until change 985822;
  ORA-00905: 缺少关键字
  
  
  SQL> recover database  until change 985822;
  ORA-00279: 更改 984674 (在 12/17/2005 16:14:05 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00003.001
  ORA-00280: 更改 984674 对于线程 1 是按序列 # 3 进行的
  
  
  指定日志: {=suggested | filename | AUTO | CANCEL}
  auto
  ORA-00279: 更改 985596 (在 12/17/2005 16:28:34 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00004.001
  ORA-00280: 更改 985596 对于线程 1 是按序列 # 4 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00003.001'
  
  
  ORA-00279: 更改 985702 (在 12/17/2005 16:29:20 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00005.001
  ORA-00280: 更改 985702 对于线程 1 是按序列 # 5 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00004.001'
  
  
  已应用的日志。
  完成介质恢复。
  SQL> alter database open resetlogs;
  
  数据库已更改。
  
  SQL> select * from test.test;
  
  A                    B
  -------------------- --------------------
  2005-12-17 16:29:14  2005-12-17 16:29:14
  2005-12-17 16:28:26  2005-12-17 16:28:26
  2005-12-17 16:28:27  2005-12-17 16:28:27
  2005-12-17 16:29:12  2005-12-17 16:29:12
  2005-12-17 16:29:49  2005-12-17 16:29:49
  2005-12-17 16:29:49  2005-12-17 16:29:49
  
  已选择6行。
  
  SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database;
  
  CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE#
  ------------------ --------------- -------------------
  985824               0              985886
  B、b 基于变更的恢复(包含备份的控制文件)
  SQL> shutdown immediate
  数据库已经关闭。
  已经卸载数据库。
  ORACLE 例程已经关闭。
  SQL> startup mount
  ORACLE 例程已经启动。
  
  Total System Global Area  135338868 bytes
  Fixed Size                   453492 bytes
  Variable Size             109051904 bytes
  Database Buffers           25165824 bytes
  Redo Buffers                 667648 bytes
  数据库装载完毕。
  SQL> recover database automic until change 985822 using backup controlfile;
  ORA-00905: 缺少关键字
  #说明这里的automic 是不能使用的
  
  
  SQL> recover database until  change 985822 using backup controlfile;
  ORA-00279: 更改 984674 (在 12/17/2005 16:14:05 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00003.001
  ORA-00280: 更改 984674 对于线程 1 是按序列 # 3 进行的
  
  
  指定日志: {=suggested | filename | AUTO | CANCEL}
  auto
  ORA-00279: 更改 985596 (在 12/17/2005 16:28:34 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00004.001
  ORA-00280: 更改 985596 对于线程 1 是按序列 # 4 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00003.001'
  
  
  ORA-00279: 更改 985702 (在 12/17/2005 16:29:20 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00005.001
  ORA-00280: 更改 985702 对于线程 1 是按序列 # 5 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00004.001'
  
  
  已应用的日志。
  完成介质恢复。
  SQL> alter database open resetlogs;
  
  数据库已更改。
  
  SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database;
  
  CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE#
  ------------------ --------------- -------------------
              985824               0              985885
  
  SQL> select * from test.test;
  
  A                    B
  -------------------- --------------------
  2005-12-17 16:29:14  2005-12-17 16:29:14
  2005-12-17 16:28:26  2005-12-17 16:28:26
  2005-12-17 16:28:27  2005-12-17 16:28:27
  2005-12-17 16:29:12  2005-12-17 16:29:12
  2005-12-17 16:29:49  2005-12-17 16:29:49
  2005-12-17 16:29:49  2005-12-17 16:29:49
  
  已选择6行。
  
  SQL>
  SQL> shutdown immediate
  数据库已经关闭。
  已经卸载数据库。
  ORACLE 例程已经关闭。
  SQL> startup
  ORACLE 例程已经启动。
  
  Total System Global Area  135338868 bytes
  Fixed Size                   453492 bytes
  Variable Size             109051904 bytes
  Database Buffers           25165824 bytes
  Redo Buffers                 667648 bytes
  数据库装载完毕。
  数据库已经打开。
  SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database;
  
  CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE#
  ------------------ --------------- -------------------
              987124               0              987124
  
  SQL
  这里关闭后重启发现 CHECKPOINT_CHANGE和controlfile_change# from v$database
  数字变了,而ARCHIVE_CHANGE#依然是0,说明什么问题呢???
  如果添加数据后
  SQL> insert into test.test(a,b) values(to_char(sysdate,'YYYY-MM-DD
hh24:mi:ss'),to_char(sysdate,'YYYY-MM-DD hh24:mi
  :ss'));
  
  已创建 1 行。
  
  SQL> commit;
  
  提交完成。
  
  SQL> alter system archive log current;
  
  系统已更改。
  
  SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database;
  
  CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE#
  ------------------ --------------- -------------------
  987124          987744              987747
  添加数据后发现archive 和控制文件的scn一致,但check_point 的scn没变
  下面的事件
  
  SQL> shutdown immediate
  数据库已经关闭。
  已经卸载数据库。
  ORACLE 例程已经关闭。
  SQL> startup
  ORACLE 例程已经启动。
  
  Total System Global Area  135338868 bytes
  Fixed Size                   453492 bytes
  Variable Size             109051904 bytes
  Database Buffers           25165824 bytes
  Redo Buffers                 667648 bytes
  数据库装载完毕。
  数据库已经打开。
  SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database;
  
  CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE#
  ------------------ --------------- -------------------
              987906          987744              987906
  
  SQL>
  发现CHECKPOINT_CHANGE# 和CONTROLFILE_CHANGE#序号始终一致,而日志scn
  值得思考????????
  C a基于取消(不包含备份的控制文件)
  SQL> shutdown immediate
  数据库已经关闭。
  已经卸载数据库。
  ORACLE 例程已经关闭。
  SQL> startup mount
  ORACLE 例程已经启动。
  
  Total System Global Area  135338868 bytes
  Fixed Size                   453492 bytes
  Variable Size             109051904 bytes
  Database Buffers           25165824 bytes
  Redo Buffers                 667648 bytes
  数据库装载完毕。
  SQL> recover database until cancel;
  ORA-00279: 更改 984674 (在 12/17/2005 16:14:05 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00003.001
  ORA-00280: 更改 984674 对于线程 1 是按序列 # 3 进行的
  
  
  指定日志: {=suggested | filename | AUTO | CANCEL}
  
  ORA-00279: 更改 985596 (在 12/17/2005 16:28:34 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00004.001
  ORA-00280: 更改 985596 对于线程 1 是按序列 # 4 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00003.001'
  
  
  指定日志: {=suggested | filename | AUTO | CANCEL}
  
  ORA-00279: 更改 985702 (在 12/17/2005 16:29:20 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00005.001
  ORA-00280: 更改 985702 对于线程 1 是按序列 # 5 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00004.001'
  
  
  指定日志: {=suggested | filename | AUTO | CANCEL}
  
  ORA-00279: 更改 985822 (在 12/17/2005 16:29:54 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00006.001
  ORA-00280: 更改 985822 对于线程 1 是按序列 # 6 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00005.001'
  
  
  指定日志: {=suggested | filename | AUTO | CANCEL}
  cancel
  介质恢复已取消。
  SQL> alter database open resetlogs;
  
  数据库已更改。
  
  SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database;
  
  CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE#
  ------------------ --------------- -------------------
              985824               0              985886
  
  SQL> select * from test.test;
  
  A                    B
  -------------------- --------------------
  2005-12-17 16:29:14  2005-12-17 16:29:14
  2005-12-17 16:28:26  2005-12-17 16:28:26
  2005-12-17 16:28:27  2005-12-17 16:28:27
  2005-12-17 16:29:12  2005-12-17 16:29:12
  2005-12-17 16:29:49  2005-12-17 16:29:49
  2005-12-17 16:29:49  2005-12-17 16:29:49
  
  已选择6行。
  
  SQL>
  C b基于取消(包含备份的控制文件)
  SQL> shutdown immediate
  数据库已经关闭。
  已经卸载数据库。
  ORACLE 例程已经关闭。
  SQL> recover database until cancel using backup controlfile;
  ORA-01034: ORACLE not available
  
  
  SQL> startup mount
  ORACLE 例程已经启动。
  
  Total System Global Area  135338868 bytes
  Fixed Size                   453492 bytes
  Variable Size             109051904 bytes
  Database Buffers           25165824 bytes
  Redo Buffers                 667648 bytes
  数据库装载完毕。
  SQL> recover database until cancel using backup controlfile;
  ORA-00279: 更改 984674 (在 12/17/2005 16:14:05 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00003.001
  ORA-00280: 更改 984674 对于线程 1 是按序列 # 3 进行的
  
  
  指定日志: {=suggested | filename | AUTO | CANCEL}
  
  ORA-00279: 更改 985596 (在 12/17/2005 16:28:34 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00004.001
  ORA-00280: 更改 985596 对于线程 1 是按序列 # 4 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00003.001'
  
  
  指定日志: {=suggested | filename | AUTO | CANCEL}
  
  ORA-00279: 更改 985702 (在 12/17/2005 16:29:20 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00005.001
  ORA-00280: 更改 985702 对于线程 1 是按序列 # 5 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00004.001'
  
  
  指定日志: {=suggested | filename | AUTO | CANCEL}
  
  ORA-00279: 更改 985822 (在 12/17/2005 16:29:54 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00006.001
  ORA-00280: 更改 985822 对于线程 1 是按序列 # 6 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00005.001'
  
  
  指定日志: {=suggested | filename | AUTO | CANCEL}
  cancle
  ORA-00308: 无法打开存档日志 'cancle'
  ORA-27041: 无法打开文件
  OSD-04002: 无法打开文件
  O/S-Error: (OS 2) 系统找不到指定的文件。
  
  
  指定日志: {=suggested | filename | AUTO | CANCEL}
  cancel
  介质恢复已取消。
  SQL> alter database open resetlogs;
  
  数据库已更改。
  
  SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database;
  
  CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE#
  ------------------ --------------- -------------------
              985824               0              985886
  
  SQL> select * from test.test;
  
  A                    B
  -------------------- --------------------
  2005-12-17 16:29:14  2005-12-17 16:29:14
  2005-12-17 16:28:26  2005-12-17 16:28:26
  2005-12-17 16:28:27  2005-12-17 16:28:27
  2005-12-17 16:29:12  2005-12-17 16:29:12
  2005-12-17 16:29:49  2005-12-17 16:29:49
  2005-12-17 16:29:49  2005-12-17 16:29:49
  
  已选择6行。
热备方式:

1 起动数据库在ARCHIVELOG模式
2 startup mount
3 recover database until time '2007-05-24 12:23:00';
4 alter database open resetlogs;
阅读(1159) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-04-11 09:51:31

很好的帖子,很实用