移花接木 搞定笔记本上的oracle 数据库
笔记本上有一个自己玩的数据库,最近不知道怎么回事,被我自己玩坏了,跑了一个脚本 dbms_supportmoniter脚本,后来还执行了一下这个存储过程,第二天周五晚上打开库 报ora 600 16703 错误,后面一堆 ora-704 bootstrap process failed 没辙,好早有一个之前备份的system01.dbf 文件,我先备份了这个有问题的 600 16703 数据文件 把之前备份的数据文件拷贝过来,改名为system01.dbf 起库,中间还用了oracle 手术刀bbed 修改了一下 相关的scn 创建新的控制文件 恢复数据库 recover database using backup controlfile until cancel; 应用online redo alter database open resetlogs; 终于打开库了,可是有一个遗憾 wrh$_active_session_history 执行 有ora-08103 错误。 整来整去 我 又试着 来把 600 16703 数据文件打开,也搞不定,重新回到 原来的备份的数据文件 可是这个遇到麻烦了,重建控制文件也不行,都是报 before reslogs 之类的错误 查看 1号文件 select file#,error from v$datafile_header 都是wrong restlogs 错误。今天来到公司想到了办法,使用16703错误的数据文件头拷贝到备份的数据文件都上。操作明细如下:
C:Windowssystem32>cd /d d:oracleoradatamyoracle d:oracleoradatamyoracle>lsbifile.bbd old_db_ctl REDO03.LOG tab$.dbf UNDOTBS01.DBF CONTROL01.CTL OVERFLOW.DBF SYSAUX01.DBF TBS1_01.DBF USERS01.DBF CONTROL02.CTL REDO01.LOG SYSTEM01.DBF TEMP01.DBF log.bbd REDO02.LOG SYSTEM01.DBF.16703 TEST.DBF d:oracleoradatamyoracle>dd if=SYSTEM01.DBF.16703 OF=SYS_HEADER.F bs=8192 count=1 skip=1 dd: invalid number `SYS_HEADER.F' d:oracleoradatamyoracle>dd if=SYSTEM01.DBF.16703 of=SYS_HEADER.F bs=8192 count=1 skip=1 1+0 records in 1+0 records out 用bbed 验证 拷贝出来的文件头是否有问题 d:oracleoradatamyoracle>bbed filename=SYS_HEADER.F Password: BBED: Release 2.0.0.0.0 - Limited Production on Mon Aug 1 09:28:58 2016 Copyright (c) 1982,2002,Oracle Corporation. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> d File: SYS_HEADER.F (0) Block: 1 Offsets: 0 to 511 Dba:0x00000000 ------------------------------------------------------------------------ 0ba20000 01004000 00000000 00000104 32c70000 00000000 0000200b 1be2e36e 4d594f52 41434c45 814b0000 80940100 00200000 01000300 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08024000 07000000 00000000 2d1ca22a 596bc036 5d77dc00 00000000 00000000 00000000 00000000 00000420 06050000 436bc036 05050000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 06005359 5354454d 00000000 00000000 00000000 00000000 00000000 00000000 01000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0a000a00 266ac036 5677dc00 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 6077dc00 0000f016 5c6bc036 0100e811 01000000 02000000 10000000 <32 bytes per line> ---从下可以看出 文件头完整,bbed可以认识到该数据块,认到了结构。 BBED> map File: SYS_HEADER.F (0) Block: 1 Dba:0x00000000 ------------------------------------------------------------ Data File Header struct kcvfh,360 bytes @0 ub4 tailchk @2044 BBED> show all FILE# 0 BLOCK# 1 OFFSET 0 DBA 0x00000000 (0 0,1) FILENAME SYS_HEADER.F BIFILE bifile.bbd LISTFILE BLOCKSIZE 2048 MODE Browse EDIT Unrecoverable IBASE Dec OBASE Dec WIDTH 80 COUNT 512 LOGFILE log.bbd SPOOL No BBED> info all File# Name Size(blks) ----- ---- ---------- BBED> d File: SYS_HEADER.F (0) Block: 1 Offsets: 0 to 511 Dba:0x00000000 ------------------------------------------------------------------------ dd命令把文件 再拷贝到system01.dbf dd if=system_header.f of=system01.dbf seek=1 bs=8192 count=1 再重建控制文件 使用控制文件恢复 recover database using backup controlfile until cancl 应用redo alter database open resetlogs; 终于又把库打开了。 不过 ora-8103 还是存在 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |