邪恶八进制信息安全团队技术讨论组's Archiver

pub!1c 2006-4-24 12:38

[转载]Oracle冷备份的不完全恢复

<p>信息来源:<font color="#cc0000">赛迪论坛</font></p><p style="TEXT-INDENT: 2em">冷备份的不完全恢复:基于三种情况 </p><p style="TEXT-INDENT: 2em">一 冷备份. </p><p style="TEXT-INDENT: 2em">建立表空间test,用户test,表名test 插入数据 </p><p style="TEXT-INDENT: 2em">insert into test.test(a,b) values(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate,'yyyy-mm-dd hh24:mi’)); </p><p style="TEXT-INDENT: 2em">commit; </p><p style="TEXT-INDENT: 2em">alter system archive log current; </p><p style="TEXT-INDENT: 2em">进行了两个事务(commit)和日志切换 </p><p style="TEXT-INDENT: 2em">commit; </p><p style="TEXT-INDENT: 2em">alter system archive log current;日志切换同时归档 </p><p style="TEXT-INDENT: 2em">select checkpoint_change#,archive_change# ,controlfile_change# from v$database; </p><p style="TEXT-INDENT: 2em">1 984675 983549 984675 初始备份时的scn </p><p style="TEXT-INDENT: 2em">此时进行冷备份 </p><p style="TEXT-INDENT: 2em">执行shutdown immediate </p><p style="TEXT-INDENT: 2em">拷贝所有的数据文件,控制文件,在线日志文件,归档日志文件,如果需要,spfile,密码文件 </p><p style="TEXT-INDENT: 2em">最好多拷贝几份,以便反复测试使用。 </p><p style="TEXT-INDENT: 2em">二、添加数据文件 </p><p style="TEXT-INDENT: 2em">startup </p><p style="TEXT-INDENT: 2em">打开数据库 </p><p style="TEXT-INDENT: 2em">删除test.test 表中的所有数据 </p><p style="TEXT-INDENT: 2em">然后插入数据 </p><p style="TEXT-INDENT: 2em">insert into test.test(a,b) values(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate,'yyyy-mm-dd hh24:mi’)); </p><p style="TEXT-INDENT: 2em">commit; </p><p style="TEXT-INDENT: 2em">alter system archive log current; </p><p style="TEXT-INDENT: 2em">进行了两个事务(commit)和日志切换 </p><p style="TEXT-INDENT: 2em">commit; </p><p style="TEXT-INDENT: 2em">前14条每两个进行一个commit,同时alter system archive log current; </p><p style="TEXT-INDENT: 2em">后面的 </p><p style="TEXT-INDENT: 2em">每一个进行commit; </p><p style="TEXT-INDENT: 2em">alter system archive log current; </p><p style="TEXT-INDENT: 2em">select * from test.test </p><p style="TEXT-INDENT: 2em">1 2005-12-17 16:41:41 2005-12-17 16:41:41 </p><p style="TEXT-INDENT: 2em">2 2005-12-17 16:42:36 2005-12-17 16:42:36 </p><p style="TEXT-INDENT: 2em">3 2005-12-17 16:29:14 2005-12-17 16:29:14 </p><p style="TEXT-INDENT: 2em">4 2005-12-17 16:28:26 2005-12-17 16:28:26 </p><p style="TEXT-INDENT: 2em">5 2005-12-17 16:28:27 2005-12-17 16:28:27 </p><p style="TEXT-INDENT: 2em">6 2005-12-17 16:29:12 2005-12-17 16:29:12 </p><p style="TEXT-INDENT: 2em">7 2005-12-17 16:29:49 2005-12-17 16:29:49 </p><p style="TEXT-INDENT: 2em">8 2005-12-17 16:29:49 2005-12-17 16:29:49 </p><p style="TEXT-INDENT: 2em">9 2005-12-17 16:30:07 2005-12-17 16:30:07 </p><p style="TEXT-INDENT: 2em">10 2005-12-17 16:30:09 2005-12-17 16:30:09 </p><p style="TEXT-INDENT: 2em">11 2005-12-17 16:30:26 2005-12-17 16:30:26 </p><p style="TEXT-INDENT: 2em">12 2005-12-17 16:30:27 2005-12-17 16:30:27 </p><p style="TEXT-INDENT: 2em">13 2005-12-17 16:31:04 2005-12-17 16:31:04 </p><p style="TEXT-INDENT: 2em">14 2005-12-17 16:31:23 2005-12-17 16:31:23 </p><p style="TEXT-INDENT: 2em">15 2005-12-17 16:31:42 2005-12-17 16:31:42 </p><p style="TEXT-INDENT: 2em">16 2005-12-17 16:31:56 2005-12-17 16:31:56 </p><p style="TEXT-INDENT: 2em">17 2005-12-17 16:33:58 2005-12-17 16:33:58 </p><p style="TEXT-INDENT: 2em">18 2005-12-17 16:34:05 2005-12-17 16:34:05 </p><p style="TEXT-INDENT: 2em">19 2005-12-17 16:34:10 2005-12-17 16:34:10 </p><p style="TEXT-INDENT: 2em">20 2005-12-17 16:34:17 2005-12-17 16:34:17 </p><p style="TEXT-INDENT: 2em">产生scn的历史记录是 </p><p style="TEXT-INDENT: 2em">select * from V$log_History </p><p style="TEXT-INDENT: 2em">1 1 577296464 1 1 982616 2005-12-17 16:04:04 983547 </p><p style="TEXT-INDENT: 2em">2 2 577296471 1 2 983547 2005-12-17 16:07:44 983552 </p><p style="TEXT-INDENT: 2em">3 3 577297714 1 3 983552 2005-12-17 16:07:51 985596 </p><p style="TEXT-INDENT: 2em">4 4 577297760 1 4 985596 2005-12-17 16:28:34 985702 </p><p style="TEXT-INDENT: 2em">5 5 577297794 1 5 985702 2005-12-17 16:29:20 985822 </p><p style="TEXT-INDENT: 2em">6 6 577297813 1 6 985822 2005-12-17 16:29:54 985939 </p><p style="TEXT-INDENT: 2em">7 7 577297835 1 7 985939 2005-12-17 16:30:13 986021 </p><p style="TEXT-INDENT: 2em">8 8 577297888 1 8 986021 2005-12-17 16:30:35 986145 </p><p style="TEXT-INDENT: 2em">9 9 577297926 1 9 986145 2005-12-17 16:31:28 986266 </p><p style="TEXT-INDENT: 2em">10 10 577298076 1 10 986266 2005-12-17 16:32:05 986803 </p><p style="TEXT-INDENT: 2em">11 11 577298200 1 11 986803 2005-12-17 16:34:36 987235 </p><p style="TEXT-INDENT: 2em">12 12 577298250 1 12 987235 2005-12-17 16:36:40 987465 </p><p style="TEXT-INDENT: 2em">13 13 577298299 1 13 987465 2005-12-17 16:37:30 987584 </p><p style="TEXT-INDENT: 2em">14 14 577298317 1 14 987584 2005-12-17 16:38:18 987673 </p><p style="TEXT-INDENT: 2em">15 15 577298507 1 15 987673 2005-12-17 16:38:37 988309 </p><p style="TEXT-INDENT: 2em">16 16 577298512 1 16 988309 2005-12-17 16:41:46 988312 </p><p style="TEXT-INDENT: 2em">17 17 577298515 1 17 988312 2005-12-17 16:41:52 988317 </p><p style="TEXT-INDENT: 2em">18 18 577298516 1 18 988317 2005-12-17 16:41:55 988320 </p><p style="TEXT-INDENT: 2em">19 19 577298518 1 19 988320 2005-12-17 16:41:56 988323 </p><p style="TEXT-INDENT: 2em">20 20 577298528 1 20 988323 2005-12-17 16:41:58 988328 </p><p style="TEXT-INDENT: 2em">21 21 577298563 1 21 988328 2005-12-17 16:42:08 988445 </p><p style="TEXT-INDENT: 2em">此时 </p><p style="TEXT-INDENT: 2em">select checkpoint_change#,archive_change# ,controlfile_change# from v$database; </p><p style="TEXT-INDENT: 2em">1 987945 987670 987945 </p><p style="TEXT-INDENT: 2em">shutdown immediate ; </p><p style="TEXT-INDENT: 2em">再次完全冷备份当前的数据文件、控制文件、日志文件,归档日志文件(没有归档日志文件恢复就成了空话)(当不完全恢复不成功或反复使用时使用,这点很重要,在实际你的生产运行数据库恢复时也是要这样。) </p><p style="TEXT-INDENT: 2em">恢复:三种方法 </p><p style="TEXT-INDENT: 2em">基于时间 </p><p style="TEXT-INDENT: 2em">(alter database ) recover database (automatic) until time ‘2005-12-16 11:09:01’; </p><p style="TEXT-INDENT: 2em">(alter database ) recover database (automatic) until time ‘2005-12-16 11:09:01’ using backup controlfile; </p><p style="TEXT-INDENT: 2em">基于变更 </p><p style="TEXT-INDENT: 2em">(alter database ) recover database until change 985822; </p><p style="TEXT-INDENT: 2em">(alter database ) recover database until change 985822using backup controlfile; </p><p style="TEXT-INDENT: 2em">基于撤销 </p><p style="TEXT-INDENT: 2em">(alter database ) recover database until cancel ; </p><p style="TEXT-INDENT: 2em">(alter database ) recover database until cancel until change 985822using backup </p><p style="TEXT-INDENT: 2em">controlfile; </p><p style="TEXT-INDENT: 2em">这里的是否使用控制文件,取决于原有的控制文件是否损坏,和控制文件发生了变化(比如删除了表空间的操作,而,删除数据和表的操作时不会影响到控制文件的变化) </p><p style="TEXT-INDENT: 2em">A、 基于时间(不使用备份的控制文件) </p><p style="TEXT-INDENT: 2em">shutdown immediate </p><p style="TEXT-INDENT: 2em">使用原来备份的数据文件,控制文件使用最新的,而不是备份的数据文件; </p><p style="TEXT-INDENT: 2em">SQL> shutdown immediate </p><p style="TEXT-INDENT: 2em">数据库已经关闭。 </p><p style="TEXT-INDENT: 2em">已经卸载数据库。 </p><p style="TEXT-INDENT: 2em">ORACLE 例程已经关闭。 </p><p style="TEXT-INDENT: 2em">SQL> startup mount </p><p style="TEXT-INDENT: 2em">ORACLE 例程已经启动。 </p><p style="TEXT-INDENT: 2em">Total System Global Area 135338868 bytes </p><p style="TEXT-INDENT: 2em">Fixed Size 453492 bytes </p><p style="TEXT-INDENT: 2em">Variable Size 109051904 bytes </p><p style="TEXT-INDENT: 2em">Database Buffers 25165824 bytes </p><p style="TEXT-INDENT: 2em">Redo Buffers 667648 bytes </p><p style="TEXT-INDENT: 2em">数据库装载完毕。 </p><p style="TEXT-INDENT: 2em">SQL> recover database until time '2005-12-17 16:30:07' ; </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 984674 (在 12/17/2005 16:14:05 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00003.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 984674 对于线程 1 是按序列 # 3 进行的 </p><p style="TEXT-INDENT: 2em">指定日志: {<ret />=suggested | filename | AUTO | CANCEL} </p><p style="TEXT-INDENT: 2em">auto </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985596 (在 12/17/2005 16:28:34 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00004.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985596 对于线程 1 是按序列 # 4 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00003.001' </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985702 (在 12/17/2005 16:29:20 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00005.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985702 对于线程 1 是按序列 # 5 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00004.001' </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985822 (在 12/17/2005 16:29:54 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00006.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985822 对于线程 1 是按序列 # 6 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00005.001' </p><p style="TEXT-INDENT: 2em">已应用的日志。 </p><p style="TEXT-INDENT: 2em">完成介质恢复。 </p><p style="TEXT-INDENT: 2em">SQL> alter database open resetlogs; </p><p style="TEXT-INDENT: 2em">数据库已更改。 </p><p style="TEXT-INDENT: 2em">------------------------------ </p><p style="TEXT-INDENT: 2em">到此恢复成功 </p><p style="TEXT-INDENT: 2em">因为使用的是介质恢复(不完全恢复) </p><p style="TEXT-INDENT: 2em">故一定要使用resetlogs,重置日志序列号,和将日志scn归零,当再次添加数据或引起scn变化的时候 archive_change#将得到和其他连个相近(?)的数字 </p><p style="TEXT-INDENT: 2em">可以查询一下 </p><p style="TEXT-INDENT: 2em">SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database; </p><p style="TEXT-INDENT: 2em">CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE# </p><p style="TEXT-INDENT: 2em">------------------ --------------- ------------------- </p><p style="TEXT-INDENT: 2em">985935 0 985997 </p><p style="TEXT-INDENT: 2em">SQL> select * from test.test; </p><p style="TEXT-INDENT: 2em">A B </p><p style="TEXT-INDENT: 2em">-------------------- -------------------- </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:14 2005-12-17 16:29:14 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:28:26 2005-12-17 16:28:26 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:28:27 2005-12-17 16:28:27 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:12 2005-12-17 16:29:12 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:49 2005-12-17 16:29:49 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:49 2005-12-17 16:29:49 </p><p style="TEXT-INDENT: 2em">已选择6行。 </p><p style="TEXT-INDENT: 2em">查询第六行的时间和log_history的记录发现是scn=985822 </p><p style="TEXT-INDENT: 2em">故恢复的时候如果直接恢复到第六条数据,就可使用scn=985822 </p><p style="TEXT-INDENT: 2em">b 基于时间恢复(使用备份的控制文件) </p><p style="TEXT-INDENT: 2em">拷贝第一次冷备份的所有的数据文件,控制文件 </p><p style="TEXT-INDENT: 2em">SQL> shutdown immediate </p><p style="TEXT-INDENT: 2em">ORA-01109: 数据库未打开 </p><p style="TEXT-INDENT: 2em">已经卸载数据库。 </p><p style="TEXT-INDENT: 2em">ORACLE 例程已经关闭。 </p><p style="TEXT-INDENT: 2em">SQL> startup mount </p><p style="TEXT-INDENT: 2em">ORACLE 例程已经启动。 </p><p style="TEXT-INDENT: 2em">Total System Global Area 135338868 bytes </p><p style="TEXT-INDENT: 2em">Fixed Size 453492 bytes </p><p style="TEXT-INDENT: 2em">Variable Size 109051904 bytes </p><p style="TEXT-INDENT: 2em">Database Buffers 25165824 bytes </p><p style="TEXT-INDENT: 2em">Redo Buffers 667648 bytes </p><p style="TEXT-INDENT: 2em">数据库装载完毕。 </p><p style="TEXT-INDENT: 2em">SQL> recover database until time '2005-12-17 16:30:07' using backup controlfile; </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 984674 (在 12/17/2005 16:14:05 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00003.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 984674 对于线程 1 是按序列 # 3 进行的 </p><p style="TEXT-INDENT: 2em">指定日志: {<ret />=suggested | filename | AUTO | CANCEL} </p><p style="TEXT-INDENT: 2em">auto </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985596 (在 12/17/2005 16:28:34 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00004.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985596 对于线程 1 是按序列 # 4 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00003.001' </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985702 (在 12/17/2005 16:29:20 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00005.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985702 对于线程 1 是按序列 # 5 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00004.001' </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985822 (在 12/17/2005 16:29:54 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00006.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985822 对于线程 1 是按序列 # 6 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00005.001' </p><p style="TEXT-INDENT: 2em">已应用的日志。 </p><p style="TEXT-INDENT: 2em">完成介质恢复。 </p><p style="TEXT-INDENT: 2em">SQL> alter database open resetlogs; </p><p style="TEXT-INDENT: 2em">数据库已更改。 </p><p style="TEXT-INDENT: 2em">SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database; </p><p style="TEXT-INDENT: 2em">CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE# </p><p style="TEXT-INDENT: 2em">------------------ --------------- ------------------- </p><p style="TEXT-INDENT: 2em">985935 0 985997 </p><p style="TEXT-INDENT: 2em">SQL> select * from test.test; </p><p style="TEXT-INDENT: 2em">A B </p><p style="TEXT-INDENT: 2em">-------------------- -------------------- </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:14 2005-12-17 16:29:14 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:28:26 2005-12-17 16:28:26 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:28:27 2005-12-17 16:28:27 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:12 2005-12-17 16:29:12 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:49 2005-12-17 16:29:49 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:49 2005-12-17 16:29:49 </p><p style="TEXT-INDENT: 2em">已选择6行。 </p><p style="TEXT-INDENT: 2em">SQL> </p><p style="TEXT-INDENT: 2em">B、a 基于变更的恢复(不包含备份的控制文件) </p><p style="TEXT-INDENT: 2em">SQL> recover database until change 985822; </p><p style="TEXT-INDENT: 2em">ORA-00905: 缺少关键字 </p><p style="TEXT-INDENT: 2em">SQL> recover database until change 985822; </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 984674 (在 12/17/2005 16:14:05 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00003.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 984674 对于线程 1 是按序列 # 3 进行的 </p><p style="TEXT-INDENT: 2em">指定日志: {<ret />=suggested | filename | AUTO | CANCEL} </p><p style="TEXT-INDENT: 2em">auto </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985596 (在 12/17/2005 16:28:34 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00004.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985596 对于线程 1 是按序列 # 4 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00003.001' </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985702 (在 12/17/2005 16:29:20 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00005.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985702 对于线程 1 是按序列 # 5 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00004.001' </p><p style="TEXT-INDENT: 2em">已应用的日志。 </p><p style="TEXT-INDENT: 2em">完成介质恢复。 </p><p style="TEXT-INDENT: 2em">SQL> alter database open resetlogs; </p><p style="TEXT-INDENT: 2em">数据库已更改。 </p><p style="TEXT-INDENT: 2em">SQL> select * from test.test; </p><p style="TEXT-INDENT: 2em">A B </p><p style="TEXT-INDENT: 2em">-------------------- -------------------- </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:14 2005-12-17 16:29:14 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:28:26 2005-12-17 16:28:26 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:28:27 2005-12-17 16:28:27 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:12 2005-12-17 16:29:12 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:49 2005-12-17 16:29:49 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:49 2005-12-17 16:29:49 </p><p style="TEXT-INDENT: 2em">已选择6行。 </p><p style="TEXT-INDENT: 2em">SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database; </p><p style="TEXT-INDENT: 2em">CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE# </p><p style="TEXT-INDENT: 2em">------------------ --------------- ------------------- </p><p style="TEXT-INDENT: 2em">985824 0 985886 </p><p style="TEXT-INDENT: 2em">B、b 基于变更的恢复(包含备份的控制文件) </p><p style="TEXT-INDENT: 2em">SQL> shutdown immediate </p><p style="TEXT-INDENT: 2em">数据库已经关闭。 </p><p style="TEXT-INDENT: 2em">已经卸载数据库。 </p><p style="TEXT-INDENT: 2em">ORACLE 例程已经关闭。 </p><p style="TEXT-INDENT: 2em">SQL> startup mount </p><p style="TEXT-INDENT: 2em">ORACLE 例程已经启动。 </p><p style="TEXT-INDENT: 2em">Total System Global Area 135338868 bytes </p><p style="TEXT-INDENT: 2em">Fixed Size 453492 bytes </p><p style="TEXT-INDENT: 2em">Variable Size 109051904 bytes </p><p style="TEXT-INDENT: 2em">Database Buffers 25165824 bytes </p><p style="TEXT-INDENT: 2em">Redo Buffers 667648 bytes </p><p style="TEXT-INDENT: 2em">数据库装载完毕。 </p><p style="TEXT-INDENT: 2em">SQL> recover database automic until change 985822 using backup controlfile; </p><p style="TEXT-INDENT: 2em">ORA-00905: 缺少关键字 </p><p style="TEXT-INDENT: 2em">#说明这里的automic 是不能使用的 </p><p style="TEXT-INDENT: 2em">SQL> recover database until change 985822 using backup controlfile; </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 984674 (在 12/17/2005 16:14:05 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00003.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 984674 对于线程 1 是按序列 # 3 进行的 </p><p style="TEXT-INDENT: 2em">指定日志: {<ret />=suggested | filename | AUTO | CANCEL} </p><p style="TEXT-INDENT: 2em">auto </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985596 (在 12/17/2005 16:28:34 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00004.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985596 对于线程 1 是按序列 # 4 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00003.001' </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985702 (在 12/17/2005 16:29:20 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00005.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985702 对于线程 1 是按序列 # 5 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00004.001' </p><p style="TEXT-INDENT: 2em">已应用的日志。 </p><p style="TEXT-INDENT: 2em">完成介质恢复。 </p><p style="TEXT-INDENT: 2em">SQL> alter database open resetlogs; </p><p style="TEXT-INDENT: 2em">数据库已更改。 </p><p style="TEXT-INDENT: 2em">SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database; </p><p style="TEXT-INDENT: 2em">CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE# </p><p style="TEXT-INDENT: 2em">------------------ --------------- ------------------- </p><p style="TEXT-INDENT: 2em">985824 0 985885 </p><p style="TEXT-INDENT: 2em">SQL> select * from test.test; </p><p style="TEXT-INDENT: 2em">A B </p><p style="TEXT-INDENT: 2em">-------------------- -------------------- </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:14 2005-12-17 16:29:14 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:28:26 2005-12-17 16:28:26 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:28:27 2005-12-17 16:28:27 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:12 2005-12-17 16:29:12 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:49 2005-12-17 16:29:49 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:49 2005-12-17 16:29:49 </p><p style="TEXT-INDENT: 2em">已选择6行。 </p><p style="TEXT-INDENT: 2em">SQL> </p><p style="TEXT-INDENT: 2em">SQL> shutdown immediate </p><p style="TEXT-INDENT: 2em">数据库已经关闭。 </p><p style="TEXT-INDENT: 2em">已经卸载数据库。 </p><p style="TEXT-INDENT: 2em">ORACLE 例程已经关闭。 </p><p style="TEXT-INDENT: 2em">SQL> startup </p><p style="TEXT-INDENT: 2em">ORACLE 例程已经启动。 </p><p style="TEXT-INDENT: 2em">Total System Global Area 135338868 bytes </p><p style="TEXT-INDENT: 2em">Fixed Size 453492 bytes </p><p style="TEXT-INDENT: 2em">Variable Size 109051904 bytes </p><p style="TEXT-INDENT: 2em">Database Buffers 25165824 bytes </p><p style="TEXT-INDENT: 2em">Redo Buffers 667648 bytes </p><p style="TEXT-INDENT: 2em">数据库装载完毕。 </p><p style="TEXT-INDENT: 2em">数据库已经打开。 </p><p style="TEXT-INDENT: 2em">SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database; </p><p style="TEXT-INDENT: 2em">CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE# </p><p style="TEXT-INDENT: 2em">------------------ --------------- ------------------- </p><p style="TEXT-INDENT: 2em">987124 0 987124 </p><p style="TEXT-INDENT: 2em">SQL </p><p style="TEXT-INDENT: 2em">这里关闭后重启发现 CHECKPOINT_CHANGE和controlfile_change# from v$database </p><p style="TEXT-INDENT: 2em">数字变了,而ARCHIVE_CHANGE#依然是0,说明什么问题呢??? </p><p style="TEXT-INDENT: 2em">如果添加数据后 </p><p style="TEXT-INDENT: 2em">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 </p><p style="TEXT-INDENT: 2em">:ss')); </p><p style="TEXT-INDENT: 2em">已创建 1 行。 </p><p style="TEXT-INDENT: 2em">SQL> commit; </p><p style="TEXT-INDENT: 2em">提交完成。 </p><p style="TEXT-INDENT: 2em">SQL> alter system archive log current; </p><p style="TEXT-INDENT: 2em">系统已更改。 </p><p style="TEXT-INDENT: 2em">SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database; </p><p style="TEXT-INDENT: 2em">CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE# </p><p style="TEXT-INDENT: 2em">------------------ --------------- ------------------- </p><p style="TEXT-INDENT: 2em">987124 987744 987747 </p><p style="TEXT-INDENT: 2em">添加数据后发现archive 和控制文件的scn一致,但check_point 的scn没变 </p><p style="TEXT-INDENT: 2em">下面的事件 </p><p style="TEXT-INDENT: 2em">SQL> shutdown immediate </p><p style="TEXT-INDENT: 2em">数据库已经关闭。 </p><p style="TEXT-INDENT: 2em">已经卸载数据库。 </p><p style="TEXT-INDENT: 2em">ORACLE 例程已经关闭。 </p><p style="TEXT-INDENT: 2em">SQL> startup </p><p style="TEXT-INDENT: 2em">ORACLE 例程已经启动。 </p><p style="TEXT-INDENT: 2em">Total System Global Area 135338868 bytes </p><p style="TEXT-INDENT: 2em">Fixed Size 453492 bytes </p><p style="TEXT-INDENT: 2em">Variable Size 109051904 bytes </p><p style="TEXT-INDENT: 2em">Database Buffers 25165824 bytes </p><p style="TEXT-INDENT: 2em">Redo Buffers 667648 bytes </p><p style="TEXT-INDENT: 2em">数据库装载完毕。 </p><p style="TEXT-INDENT: 2em">数据库已经打开。 </p><p style="TEXT-INDENT: 2em">SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database; </p><p style="TEXT-INDENT: 2em">CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE# </p><p style="TEXT-INDENT: 2em">------------------ --------------- ------------------- </p><p style="TEXT-INDENT: 2em">987906 987744 987906 </p><p style="TEXT-INDENT: 2em">SQL> </p><p style="TEXT-INDENT: 2em">发现CHECKPOINT_CHANGE# 和CONTROLFILE_CHANGE#序号始终一致,而日志scn </p><p style="TEXT-INDENT: 2em">值得思考???????? </p><p style="TEXT-INDENT: 2em">C a基于取消(不包含备份的控制文件) </p><p style="TEXT-INDENT: 2em">SQL> shutdown immediate </p><p style="TEXT-INDENT: 2em">数据库已经关闭。 </p><p style="TEXT-INDENT: 2em">已经卸载数据库。 </p><p style="TEXT-INDENT: 2em">ORACLE 例程已经关闭。 </p><p style="TEXT-INDENT: 2em">SQL> startup mount </p><p style="TEXT-INDENT: 2em">ORACLE 例程已经启动。 </p><p style="TEXT-INDENT: 2em">Total System Global Area 135338868 bytes </p><p style="TEXT-INDENT: 2em">Fixed Size 453492 bytes </p><p style="TEXT-INDENT: 2em">Variable Size 109051904 bytes </p><p style="TEXT-INDENT: 2em">Database Buffers 25165824 bytes </p><p style="TEXT-INDENT: 2em">Redo Buffers 667648 bytes </p><p style="TEXT-INDENT: 2em">数据库装载完毕。 </p><p style="TEXT-INDENT: 2em">SQL> recover database until cancel; </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 984674 (在 12/17/2005 16:14:05 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00003.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 984674 对于线程 1 是按序列 # 3 进行的 </p><p style="TEXT-INDENT: 2em">指定日志: {<ret />=suggested | filename | AUTO | CANCEL} </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985596 (在 12/17/2005 16:28:34 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00004.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985596 对于线程 1 是按序列 # 4 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00003.001' </p><p style="TEXT-INDENT: 2em">指定日志: {<ret />=suggested | filename | AUTO | CANCEL} </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985702 (在 12/17/2005 16:29:20 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00005.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985702 对于线程 1 是按序列 # 5 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00004.001' </p><p style="TEXT-INDENT: 2em">指定日志: {<ret />=suggested | filename | AUTO | CANCEL} </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985822 (在 12/17/2005 16:29:54 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00006.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985822 对于线程 1 是按序列 # 6 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00005.001' </p><p style="TEXT-INDENT: 2em">指定日志: {<ret />=suggested | filename | AUTO | CANCEL} </p><p style="TEXT-INDENT: 2em">cancel </p><p style="TEXT-INDENT: 2em">介质恢复已取消。 </p><p style="TEXT-INDENT: 2em">SQL> alter database open resetlogs; </p><p style="TEXT-INDENT: 2em">数据库已更改。 </p><p style="TEXT-INDENT: 2em">SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database; </p><p style="TEXT-INDENT: 2em">CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE# </p><p style="TEXT-INDENT: 2em">------------------ --------------- ------------------- </p><p style="TEXT-INDENT: 2em">985824 0 985886 </p><p style="TEXT-INDENT: 2em">SQL> select * from test.test; </p><p style="TEXT-INDENT: 2em">A B </p><p style="TEXT-INDENT: 2em">-------------------- -------------------- </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:14 2005-12-17 16:29:14 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:28:26 2005-12-17 16:28:26 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:28:27 2005-12-17 16:28:27 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:12 2005-12-17 16:29:12 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:49 2005-12-17 16:29:49 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:49 2005-12-17 16:29:49 </p><p style="TEXT-INDENT: 2em">已选择6行。 </p><p style="TEXT-INDENT: 2em">SQL> </p><p style="TEXT-INDENT: 2em">C b基于取消(包含备份的控制文件) </p><p style="TEXT-INDENT: 2em">SQL> shutdown immediate </p><p style="TEXT-INDENT: 2em">数据库已经关闭。 </p><p style="TEXT-INDENT: 2em">已经卸载数据库。 </p><p style="TEXT-INDENT: 2em">ORACLE 例程已经关闭。 </p><p style="TEXT-INDENT: 2em">SQL> recover database until cancel using backup controlfile; </p><p style="TEXT-INDENT: 2em">ORA-01034: ORACLE not available </p><p style="TEXT-INDENT: 2em">SQL> startup mount </p><p style="TEXT-INDENT: 2em">ORACLE 例程已经启动。 </p><p style="TEXT-INDENT: 2em">Total System Global Area 135338868 bytes </p><p style="TEXT-INDENT: 2em">Fixed Size 453492 bytes </p><p style="TEXT-INDENT: 2em">Variable Size 109051904 bytes </p><p style="TEXT-INDENT: 2em">Database Buffers 25165824 bytes </p><p style="TEXT-INDENT: 2em">Redo Buffers 667648 bytes </p><p style="TEXT-INDENT: 2em">数据库装载完毕。 </p><p style="TEXT-INDENT: 2em">SQL> recover database until cancel using backup controlfile; </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 984674 (在 12/17/2005 16:14:05 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00003.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 984674 对于线程 1 是按序列 # 3 进行的 </p><p style="TEXT-INDENT: 2em">指定日志: {<ret />=suggested | filename | AUTO | CANCEL} </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985596 (在 12/17/2005 16:28:34 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00004.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985596 对于线程 1 是按序列 # 4 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00003.001' </p><p style="TEXT-INDENT: 2em">指定日志: {<ret />=suggested | filename | AUTO | CANCEL} </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985702 (在 12/17/2005 16:29:20 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00005.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985702 对于线程 1 是按序列 # 5 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00004.001' </p><p style="TEXT-INDENT: 2em">指定日志: {<ret />=suggested | filename | AUTO | CANCEL} </p><p style="TEXT-INDENT: 2em">ORA-00279: 更改 985822 (在 12/17/2005 16:29:54 生成) 对于线程 1 是必需的 </p><p style="TEXT-INDENT: 2em">ORA-00289: 建议: D:\ORACLE\ORACLE92\RDBMS\ARC00006.001 </p><p style="TEXT-INDENT: 2em">ORA-00280: 更改 985822 对于线程 1 是按序列 # 6 进行的 </p><p style="TEXT-INDENT: 2em">ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORACLE92\RDBMS\ARC00005.001' </p><p style="TEXT-INDENT: 2em">指定日志: {<ret />=suggested | filename | AUTO | CANCEL} </p><p style="TEXT-INDENT: 2em">cancle </p><p style="TEXT-INDENT: 2em">ORA-00308: 无法打开存档日志 'cancle' </p><p style="TEXT-INDENT: 2em">ORA-27041: 无法打开文件 </p><p style="TEXT-INDENT: 2em">OSD-04002: 无法打开文件 </p><p style="TEXT-INDENT: 2em">O/S-Error: (OS 2) 系统找不到指定的文件。 </p><p style="TEXT-INDENT: 2em">指定日志: {<ret />=suggested | filename | AUTO | CANCEL} </p><p style="TEXT-INDENT: 2em">cancel </p><p style="TEXT-INDENT: 2em">介质恢复已取消。 </p><p style="TEXT-INDENT: 2em">SQL> alter database open resetlogs; </p><p style="TEXT-INDENT: 2em">数据库已更改。 </p><p style="TEXT-INDENT: 2em">SQL> select checkpoint_change#,archive_change# ,controlfile_change# from v$database; </p><p style="TEXT-INDENT: 2em">CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE# </p><p style="TEXT-INDENT: 2em">------------------ --------------- ------------------- </p><p style="TEXT-INDENT: 2em">985824 0 985886 </p><p style="TEXT-INDENT: 2em">SQL> select * from test.test; </p><p style="TEXT-INDENT: 2em">A B </p><p style="TEXT-INDENT: 2em">-------------------- -------------------- </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:14 2005-12-17 16:29:14 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:28:26 2005-12-17 16:28:26 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:28:27 2005-12-17 16:28:27 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:12 2005-12-17 16:29:12 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:49 2005-12-17 16:29:49 </p><p style="TEXT-INDENT: 2em">2005-12-17 16:29:49 2005-12-17 16:29:49 </p><p style="TEXT-INDENT: 2em">已选择6行。 </p><p style="TEXT-INDENT: 2em">SQL><br /></p>

页: [1]
© 1999-2008 EvilOctal Security Team