Welcome 微信登录

首页 / 数据库 / MySQL / 使用BBED修改文件头解决数据库Open验证问题

笔者在《一次Oracle数据文件镜像丢失引起的故障解决》(http://www.linuxidc.com/Linux/2016-10/136212.htm)中,使用了强制关闭数据库Open过程中完整性验证来开启数据库。除此之外,还可以使用数据文件头修改的方法,“骗过”Oracle启动机制。本篇就通过BBED来模拟错误和进行修复。注意:BBED是Oracle研究的利器,但是同样也可能是“塌天大祸”的起始。所以,如果没有100%把握,绝对不要轻易在投产环境上应用。作为技术人员,创新精神是可贵的,但是谨慎认真是更需要的一种职业素养。1、环境说明笔者使用Oracle 11gR2进行测试,具体版本为11.2.0.4。SQL> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionPL/SQL Release 11.2.0.4.0 - ProductionCORE   11.2.0.4.0   ProductionTNS for Linux: Version 11.2.0.4.0 - ProductionNLSRTL Version 11.2.0.4.0 – Production当前数据文件列表如下:SQL> select file#, checkpoint_change#, checkpoint_time, name from v$datafile;   FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME NAME---------- ------------------ --------------- --------------------------------------------------------------------------------       1            1713752 2016/10/18 22:0 /u01/app/oracle/oradata/TESTDB/datafile/o1_mf_system_bw773xok_.dbf       2            1713752 2016/10/18 22:0 /u01/app/oracle/oradata/TESTDB/datafile/o1_mf_sysaux_bw773xpr_.dbf       3            1713752 2016/10/18 22:0 /u01/app/oracle/oradata/TESTDB/datafile/o1_mf_undotbs1_bw773xqo_.dbf       4            1713752 2016/10/18 22:0 /u01/app/oracle/oradata/TESTDB/datafile/o1_mf_users_bw773xrv_.dbf       5            1713752 2016/10/18 22:0 /u01/app/oracle/oradata/TESTDB/datafile/o1_mf_TESTdev_bw8xbqrz_.dbf       6            1713752 2016/10/18 22:0 /u01/app/oracle/oradata/TESTDB/datafile/o1_mf_inttestt_bw8xdnkt_.dbf       7            1713752 2016/10/18 22:0 /u01/app/oracle/oradata/TESTDB/datafile/o1_mf_epssite_by19vtnh_.dbf7 rows selected2、故障模拟笔者的思路是:在数据库正常运行过程中,抽取数据文件7。Datafile 7对应的是一个过去时间的SCN编号和文件头。之后,通过一系列的Online Redo Log切换、手工检查点操作,最后直接shutdown immediate关闭服务器动作,推动数据库所有数据文件SCN编号前进。关闭之后,使用过去版本的数据文件7来替换文件。启动数据库进入open状态之后,如果当前online redo log已经乜有接续的文件(被覆盖+非归档),系统报错。当前文件目录,拷贝留存一个旧版本的datafile 7。[oracle@TESTlife datafile]$ ls -ltotal 6482252-rw-r-----  1 oracle oinstall 2017468416 Oct 18 22:05 o1_mf_epssite_by19vtnh_.dbf-rw-r-----  1 oracle oinstall 1702895616 Oct 18 22:05 o1_mf_inttestt_bw8xdnkt_.dbf-rw-r-----. 1 oracle oinstall    5251072 Oct 18 22:05 o1_mf_users_bw773xrv_.dbf(篇幅原因,有省略……)[oracle@TESTlife datafile]$ cp o1_mf_epssite_by19vtnh_.dbf o1_mf_epssite_by19vtnh_.dbf_bk[oracle@TESTlife datafile]$ ls -ltotal 8452440-rw-r-----  1 oracle oinstall 2017468416 Oct 18 22:05 o1_mf_epssite_by19vtnh_.dbf-rw-r-----  1 oracle oinstall 2017468416 Oct 18 22:12 o1_mf_epssite_by19vtnh_.dbf_bk-rw-r-----  1 oracle oinstall 1702895616 Oct 18 22:05 o1_mf_inttestt_bw8xdnkt_.dbf-rw-r-----  1 oracle oinstall 1283465216 Oct 18 22:05 o1_mf_TESTdev_bw8xbqrz_.dbf-rw-r-----. 1 oracle oinstall  597696512 Oct 18 22:10 o1_mf_sysaux_bw773xpr_.dbf多次切换日志,进行检查点操作。SQL> alter system switch logfile;System altered(篇幅原因,有省略……)SQL> alter system checkpoint;System alteredSQL> alter system switch logfile;System alteredSQL> select group#, status, FIRST_CHANGE# from v$log;    GROUP# STATUS         FIRST_CHANGE#---------- ---------------- -------------       1 CURRENT                1714475       2 INACTIVE             1714464       3 INACTIVE             1714467关闭数据库,强行使用旧版本文件替换。[oracle@TESTlife datafile]$ sqlplus /nologSQL*Plus: Release 11.2.0.4.0 Production on Tue Oct 18 22:14:53 2016Copyright (c) 1982, 2013, Oracle.  All rights reserved.SQL> conn / as sysdbaConnected.SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.[oracle@TESTlife datafile]$ cp o1_mf_epssite_by19vtnh_.dbf o1_mf_epssite_by19vtnh_.dbf_bk_f[oracle@TESTlife datafile]$ ls -ltotal 10422628-rw-r-----  1 oracle oinstall 2017468416 Oct 18 22:15 o1_mf_epssite_by19vtnh_.dbf-rw-r-----  1 oracle oinstall 2017468416 Oct 18 22:12 o1_mf_epssite_by19vtnh_.dbf_bk-rw-r-----  1 oracle oinstall 2017468416 Oct 18 22:20 o1_mf_epssite_by19vtnh_.dbf_bk_f-rw-r-----  1 oracle oinstall 1702895616 Oct 18 22:15 o1_mf_inttestt_bw8xdnkt_.dbf-rw-r-----  1 oracle oinstall 1283465216 Oct 18 22:15 [oracle@TESTlife datafile]$ cp o1_mf_epssite_by19vtnh_.dbf_bk o1_mf_epssite_by19vtnh_.dbf启动数据库,在open过程中报错。SQL> conn / as sysdbaConnected to an idle instance.SQL> startupORACLE instance started.Total System Global Area 3540881408 bytesFixed Size                  2258320 bytesVariable Size           855640688 bytesDatabase Buffers       2667577344 bytesRedo Buffers             15405056 bytesDatabase mounted.ORA-01113: file 7 needs media recoveryORA-01110: data file 7:"/u01/app/oracle/oradata/TESTDB/datafile/o1_mf_epssite_by19vtnh_.dbf"使用redo log进行修复,失败。SQL> recover datafile 7ORA-00279: change 1713752 generated at 10/18/2016 22:00:25 needed for thread 1ORA-00289: suggestion :/u01/app/oracle/fast_recovery_area/TESTDB/archivelog/2016_10_18/o1_mf_1_60_%u_.arcORA-00280: change 1713752 for thread 1 is in sequence #60Specify log: {<RET>=suggested | filename | AUTO | CANCEL}ORA-00308: cannot open archived log"/u01/app/oracle/fast_recovery_area/TESTDB/archivelog/2016_10_18/o1_mf_1_60_%u_.arc"ORA-27037: unable to obtain file statusLinux-x86_64 Error: 2: No such file or directoryAdditional information: 3故障出现,尝试进行修复。更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2016-10/136569p2.htm
  • 1
  • 2
  • 下一页
使用NID修改DBID和DBNAME实验MongoDB 3.0.2与wiredTiger存储引擎安装测试相关资讯      BBED 
  • Oracle BBED 修改数据内容  (08月22日)
  • 通过BBED修复ORA-01190错误  (11/16/2015 10:51:13)
  • Oracle 11g 编译使用BBED  (03月08日)
  • Oracle实验:用BBED恢复误删记录的  (06/14/2012 17:21:36)
本文评论 查看全部评论 (0)
表情: 姓名: 字数