bbed恢复bootstrap$表

环境:
    操作系统:windows
    数据版本:11.2.0.1(单实例)

故障现象:
SQL> delete from bootstrap$;

已删除60行。

SQL> commit;

提交完成。

起库报错:
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 3373858816 bytes
Fixed Size                  2180424 bytes
Variable Size            1845496504 bytes
Database Buffers         1509949440 bytes
Redo Buffers               16232448 bytes
数据库装载完毕。
ORA-03113: 通信通道的文件结尾
进程 ID: 6692
会话 ID: 5 序列号: 3

alert日志内容:

ALTER DATABASE OPEN
Beginning crash recovery of 1 threads
 parallel recovery started with 3 processes
Started redo scan
Completed redo scan
……
Exception [type: ACCESS_VIOLATION, UNABLE_TO_READ] [ADDR:0x0] [PC:0x8AA6E1A, lmebucp()+30]
ERROR: Unable to normalize symbol name for the following short stack (at offset 199):
dbgexProcessError()+193<-dbgeExecuteForError()+65<-dbgePostErrorKGE()+1726<-dbkePostKGE_kgsf()+75<-kgeade()+560<-kgerev()+125<-kgerec5()+60<-sss_xcpt_EvalFilterEx()+1869<-sss_xcpt_EvalFilter()+174<-.1.6_8+59<-0000000076FB7398<-0000000076FCBF9D<-0000000076FA04CA<-0000000076FCB63E<-lmebucp()+30<-kqlbebs()+1714<-kqlblfc()+222<-adbdrv()+44244<-opiexe()+20842<-opiosq0()+5129<-kpooprx()+357<-kpoal8()+940<-opiodr()+1662<-ttcpip()+1325<-opitsk()+2040<-opiino()+1258<-opiodr()+1662<-opidrv()+864<-sou2o()+98<-opimai_real()+158<-opimai()+191<-OracleThreadStart()+724<-0000000076E559CD<-0000000076FB383D
Errors in file d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_6692.trc  (incident=15761):
ORA-07445: 出现异常错误: 核心转储 [lmebucp()+30] [ACCESS_VIOLATION] [ADDR:0x0] [PC:0x8AA6E1A] [UNABLE_TO_READ] []
Incident details in: d:\app\administrator\diag\rdbms\orcl\orcl\incident\incdir_15761\orcl_ora_6692_i15761.trc
Thu Jun 28 14:06:59 2018
Trace dumping is performing id=[cdmp_20180628140659]
Thu Jun 28 14:07:06 2018
PMON (ospid: 4352): terminating the instance due to error 397
Instance terminated by PMON, pid = 435


进行10046事务跟踪启动过程:
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 3373858816 bytes
Fixed Size                  2180424 bytes
Variable Size            1845496504 bytes
Database Buffers         1509949440 bytes
Redo Buffers               16232448 bytes
数据库装载完毕。
SQL> oradebug setmypid
已处理的语句
SQL> oradebug event 10046 trace name context forever,level 12;
已处理的语句
SQL> oradebug tracefile_name
d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_564.trc
SQL> alter database open
  2  ;
alter database open
*
第 1 行出现错误:
ORA-03113: 通信通道的文件结尾
进程 ID: 564
会话 ID: 5 序列号: 3

alter database open;后日志如下:

=====================
PARSING IN CURSOR #2 len=188 dep=1 uid=0 oct=1 lid=0 tim=3127027009 hv=4006182593 ad='7ffc696ac50' sqlid='32r4f1brckzq1'
create table bootstrap$ ( line#         number not null,   obj#           number not null,   sql_text   varchar2(4000) not null)   storage (initial 50K objno 59 extents (file 1 block 520))
END OF STMT
PARSE #2:c=0,e=384,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=3127027008
EXEC #2:c=0,e=93,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=0,tim=3127027158
CLOSE #2:c=0,e=5,dep=1,type=0,tim=3127027221
=====================
PARSING IN CURSOR #2 len=55 dep=1 uid=0 oct=3 lid=0 tim=3127027509 hv=2111436465 ad='7ffc696a150' sqlid='6apq2rjyxmxpj'
select line#, sql_text from bootstrap$ where obj# != :1
END OF STMT
PARSE #2:c=15600,e=277,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=3127027509
BINDS #2:
 Bind#0
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0
  kxsbbbfp=1aed80e8  bln=22  avl=02  flg=05
  value=59
EXEC #2:c=0,e=532,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=867914364,tim=3127028119
WAIT #2: nam='db file sequential read' ela= 6708 file#=1 block#=520 blocks=1 obj#=59 tim=3127034876
WAIT #2: nam='db file scattered read' ela= 296 file#=1 block#=521 blocks=3 obj#=59 tim=3127035295
FETCH #2:c=0,e=7209,p=4,cr=5,cu=0,mis=0,r=0,dep=1,og=4,plh=867914364,tim=3127035351
STAT #2 id=1 cnt=0 pid=0 pos=1 obj=59 op='TABLE ACCESS FULL BOOTSTRAP$ (cr=5 pr=4 pw=0 time=0 us)'
Exception [type: ACCESS_VIOLATION, UNABLE_TO_READ] [ADDR:0x0] [PC:0x8AA6E1A, lmebucp()+30]
Incident 16961 created, dump file: d:\app\administrator\diag\rdbms\orcl\orcl\incident\incdir_16961\orcl_ora_564_i16961.trc
ORA-07445: 出现异常错误: 核心转储 [lmebucp()+30] [ACCESS_VIOLATION] [ADDR:0x0] [PC:0x8AA6E1A] [UNABLE_TO_READ] []

查询相同版本数据库获取59对象:
select 
  rowid,
  dbms_rowid.rowid_object(rowid) "object",
  dbms_rowid.rowid_relative_fno(rowid) "file",
  dbms_rowid.rowid_block_number(rowid) "block",
  dbms_rowid.rowid_row_number(rowid) "row"
  from bootstrap$;
  

ROWID                  object       file      block        row
------------------ ---------- ---------- ---------- ----------
AAAAA7AABAAAAIJAAA         59          1        521          0
AAAAA7AABAAAAIJAAB         59          1        521          1
AAAAA7AABAAAAIJAAC         59          1        521          2
AAAAA7AABAAAAIJAAD         59          1        521          3
AAAAA7AABAAAAIJAAE         59          1        521          4
AAAAA7AABAAAAIJAAF         59          1        521          5
AAAAA7AABAAAAIJAAG         59          1        521          6
AAAAA7AABAAAAIJAAH         59          1        521          7
AAAAA7AABAAAAIJAAI         59          1        521          8
AAAAA7AABAAAAIJAAJ         59          1        521          9
AAAAA7AABAAAAIJAAK         59          1        521         10
AAAAA7AABAAAAIJAAL         59          1        521         11
AAAAA7AABAAAAIJAAM         59          1        521         12
AAAAA7AABAAAAIJAAN         59          1        521         13
AAAAA7AABAAAAIJAAO         59          1        521         14
AAAAA7AABAAAAIJAAP         59          1        521         15
AAAAA7AABAAAAIJAAQ         59          1        521         16
AAAAA7AABAAAAIJAAR         59          1        521         17
AAAAA7AABAAAAIJAAS         59          1        521         18
AAAAA7AABAAAAIJAAT         59          1        521         19
AAAAA7AABAAAAIJAAU         59          1        521         20
AAAAA7AABAAAAIJAAV         59          1        521         21
AAAAA7AABAAAAIJAAW         59          1        521         22
AAAAA7AABAAAAIJAAX         59          1        521         23
AAAAA7AABAAAAIKAAA         59          1        522          0
AAAAA7AABAAAAIKAAB         59          1        522          1
AAAAA7AABAAAAIKAAC         59          1        522          2
AAAAA7AABAAAAIKAAD         59          1        522          3
AAAAA7AABAAAAIKAAE         59          1        522          4
AAAAA7AABAAAAIKAAF         59          1        522          5
AAAAA7AABAAAAIKAAG         59          1        522          6
AAAAA7AABAAAAIKAAH         59          1        522          7
AAAAA7AABAAAAIKAAI         59          1        522          8
AAAAA7AABAAAAIKAAJ         59          1        522          9
AAAAA7AABAAAAIKAAK         59          1        522         10
AAAAA7AABAAAAIKAAL         59          1        522         11
AAAAA7AABAAAAIKAAM         59          1        522         12
AAAAA7AABAAAAIKAAN         59          1        522         13
AAAAA7AABAAAAIKAAO         59          1        522         14
AAAAA7AABAAAAIKAAP         59          1        522         15
AAAAA7AABAAAAIKAAQ         59          1        522         16
AAAAA7AABAAAAIKAAR         59          1        522         17
AAAAA7AABAAAAIKAAS         59          1        522         18
AAAAA7AABAAAAIKAAT         59          1        522         19
AAAAA7AABAAAAIKAAU         59          1        522         20
AAAAA7AABAAAAILAAA         59          1        523          0
AAAAA7AABAAAAILAAB         59          1        523          1
AAAAA7AABAAAAILAAC         59          1        523          2
AAAAA7AABAAAAILAAD         59          1        523          3
AAAAA7AABAAAAILAAE         59          1        523          4
AAAAA7AABAAAAILAAF         59          1        523          5
AAAAA7AABAAAAILAAG         59          1        523          6
AAAAA7AABAAAAILAAH         59          1        523          7
AAAAA7AABAAAAILAAI         59          1        523          8
AAAAA7AABAAAAILAAJ         59          1        523          9
AAAAA7AABAAAAILAAK         59          1        523         10
AAAAA7AABAAAAILAAL         59          1        523         11
AAAAA7AABAAAAILAAM         59          1        523         12
AAAAA7AABAAAAILAAN         59          1        523         13
AAAAA7AABAAAAILAAO         59          1        523         14
已选择60行。
bootstrap$表占用了521,522,523三个块

SQL> select object_id from dba_objects where object_name='BOOTSTRAP$';

 OBJECT_ID
----------
        59
SQL> select line#,sql_text from bootstrap$ where obj#=59;

     LINE#
----------
SQL_TEXT
--------------------------------------------------------------------------------
        59
CREATE TABLE BOOTSTRAP$("LINE#" NUMBER NOT NULL,"OBJ#" NUMBER NOT NULL,"SQL_TEXT
" VARCHAR2(4000) NOT NULL) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE
 (  INITIAL 56K NEXT 1024K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 OBJN
O 59 EXTENTS (FILE 1 BLOCK 520))


SQL> select header_file,header_block from dba_segments where segment_name='BOOTSTRAP$';

HEADER_FILE HEADER_BLOCK
----------- ------------
          1          520

说明:
     数据库启动过程中,需要访问bootstrap$表时,不能够访问。读取到522块时,因为没有内容导致数据库启动异常。

使用bbed修复:
修复思路:
找相同版本的数据库的system表空间数据文件,将好的bootstrap$表块复制到已经删除的块的位置。

准备工作:
将备份损坏system01.dbf文件,将相同版本system01.dbf改名system0101.dbf后复制到和system01.dbf相同目录下。

listfile内容如下:
1      D:\app\Administrator\oradata\orcl\SYSTEM01.DBF   713039872
2      D:\app\Administrator\oradata\orcl\SYSTEM0101.DBF   713039872  (未损坏文件)

listfile文件格式:
第一列:文件号
第二列:文件绝对路径
第三列:文件大小

bbed 参数文件:
blocksize=8192
listfile=D:\file.txt
mode=edit

说明:
    blocksize为数据库块大小
    listfile为文件位置
    mode模式有edit和brower(查看)两种模式,此处为edit(编辑)模式
    

故障处理:

D:\bbed>bbed parfile=D:\bbed.par
Password:

BBED: Release 2.0.0.0.0 - Limited Production on Thu Jun 28 14:59:51 2018

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

************* !!! For Oracle Internal Use only !!! ***************

BBED>
默认密码:blockedit

设定块位置:
BBED> set dba 2,521
        DBA             0x00800209 (8389129 2,521)
BBED> show
        FILE#           2
        BLOCK#          521
        OFFSET          0
        DBA             0x00800209 (8389129 2,521)
        FILENAME        D:\app\Administrator\oradata\orcl\SYSTEM0101.DBF
        BIFILE          bifile.bbd
        LISTFILE        D:\file.txt
        BLOCKSIZE       8192
        MODE            Edit
        EDIT            Unrecoverable
        IBASE           Dec
        OBASE           Dec
        WIDTH           80
        COUNT           512
        LOGFILE         log.bbd
        SPOOL           No
查看块内容:
BBED> d /v count 16
 File: D:\app\Administrator\oradata\orcl\SYSTEM0101.DBF (2)
 Block: 521     Offsets:    0 to   15  Dba:0x00800209
-------------------------------------------------------
 10a20000 08024000 4e020000 00000104 l .?...@.N.......

 <16 bytes per line>

说明:  
 10a20000  10代表segment free list block  #此处应为06开头,代表具有ITL插槽的数据块
 0000代表unused
 08024000代表rdba
 
确认:
map通过偏移量显示块信息
BBED> map
 File: D:\app\Administrator\oradata\orcl\SYSTEM0101.DBF (2)
 Block: 521                                   Dba:0x00800209
------------------------------------------------------------
 Unlimited Data Segment Header

 struct kcbh, 20 bytes                      @0

 struct ktech, 72 bytes                     @20

 struct ktemh, 16 bytes                     @92

 struct ktetb[1], 8 bytes                   @108

 struct ktshc, 8 bytes                      @4148

 struct ktsfs_seg[1], 20 bytes              @4156

 struct ktsfs_txn[16], 320 bytes            @4176

 ub4 tailchk                                @8188

此处没有rowdata显示

设置块2,522,偏移量为0的位置
BBED> set dba 2,522 offset 0
        DBA             0x0080020a (8389130 2,522)
        OFFSET          0

BBED> d /v count 16
 File: D:\app\Administrator\oradata\orcl\SYSTEM0101.DBF (2)
 Block: 522     Offsets:    0 to   15  Dba:0x0080020a
-------------------------------------------------------
 06a20000 09024000 60020000 00000106 l .?...@.`.......

 <16 bytes per line>
 

BBED> map
 File: D:\app\Administrator\oradata\orcl\SYSTEM0101.DBF (2)
 Block: 522                                   Dba:0x0080020a
------------------------------------------------------------
 KTB Data Block (Table/Cluster)

 struct kcbh, 20 bytes                      @0

 struct ktbbh, 48 bytes                     @20

 struct kdbh, 14 bytes                      @68

 struct kdbt[1], 4 bytes                    @82

 sb2 kdbr[24]                               @86

 ub1 freespace[1156]                        @134

 ub1 rowdata[6898]                          @1290

 ub4 tailchk                                @8188
 
说明:
     sb2 kdbr[24] 24代表块行数

设置块523
BBED> set dba 2,523 offset 0
        DBA             0x0080020b (8389131 2,523)
        OFFSET          0

BBED> map
 File: D:\app\Administrator\oradata\orcl\SYSTEM0101.DBF (2)
 Block: 523                                   Dba:0x0080020b
------------------------------------------------------------
 KTB Data Block (Table/Cluster)

 struct kcbh, 20 bytes                      @0

 struct ktbbh, 48 bytes                     @20

 struct kdbh, 14 bytes                      @68

 struct kdbt[1], 4 bytes                    @82

 sb2 kdbr[21]                               @86

 ub1 freespace[1398]                        @128

 ub1 rowdata[6662]                          @1526

 ub4 tailchk                                @8188

设置块524
BBED> set dba 2,524 offset 0
        DBA             0x0080020c (8389132 2,524)
        OFFSET          0

BBED> map
 File: D:\app\Administrator\oradata\orcl\SYSTEM0101.DBF (2)
 Block: 524                                   Dba:0x0080020c
------------------------------------------------------------
 KTB Data Block (Table/Cluster)

 struct kcbh, 20 bytes                      @0

 struct ktbbh, 48 bytes                     @20

 struct kdbh, 14 bytes                      @68

 struct kdbt[1], 4 bytes                    @82

 sb2 kdbr[15]                               @86

 ub1 freespace[3525]                        @116

 ub1 rowdata[4547]                          @3641

 ub4 tailchk                                @8188

说明:
     522,523,524三个块总行数:24+21+15=60
     
    三个块的总行数与bootstrap$表行数相同。
    select block地址为521,522,523,说明windows块实际地址实需要+1
   


确定文件1块地址:
BBED> set dba 1,522 offset 0
        DBA             0x0040020a (4194826 1,522)
        OFFSET          0

BBED> map
 File: D:\app\Administrator\oradata\orcl\SYSTEM01.DBF (1)
 Block: 522                                   Dba:0x0040020a
------------------------------------------------------------
 KTB Data Block (Table/Cluster)

 struct kcbh, 20 bytes                      @0

 struct ktbbh, 48 bytes                     @20

 struct kdbh, 14 bytes                      @68

 struct kdbt[1], 4 bytes                    @82

 sb2 kdbr[24]                               @86

 ub1 freespace[1156]                        @134

 ub1 rowdata[6898]                          @1290

 ub4 tailchk                                @8188


BBED> set dba 1,523 offset 0
        DBA             0x0040020b (4194827 1,523)
        OFFSET          0

BBED> map
 File: D:\app\Administrator\oradata\orcl\SYSTEM01.DBF (1)
 Block: 523                                   Dba:0x0040020b
------------------------------------------------------------
 KTB Data Block (Table/Cluster)

 struct kcbh, 20 bytes                      @0

 struct ktbbh, 48 bytes                     @20

 struct kdbh, 14 bytes                      @68

 struct kdbt[1], 4 bytes                    @82

 sb2 kdbr[21]                               @86

 ub1 freespace[1398]                        @128

 ub1 rowdata[6662]                          @1526

 ub4 tailchk                                @8188

BBED> set dba 1,524 offset 0
        DBA             0x0040020c (4194828 1,524)
        OFFSET          0

BBED> map
 File: D:\app\Administrator\oradata\orcl\SYSTEM01.DBF (1)
 Block: 524                                   Dba:0x0040020c
------------------------------------------------------------
 KTB Data Block (Table/Cluster)

 struct kcbh, 20 bytes                      @0

 struct ktbbh, 48 bytes                     @20

 struct kdbh, 14 bytes                      @68

 struct kdbt[1], 4 bytes                    @82

 sb2 kdbr[15]                               @86

 ub1 freespace[3525]                        @116

 ub1 rowdata[4547]                          @3641

 ub4 tailchk                                @8188

说明:
    文件1 522,523,524块信息与文件2 522,523,524信息一致
    


执行块复制:
BBED> copy dba 2,522 to dba 1,522
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) Y
 File: D:\app\Administrator\oradata\orcl\SYSTEM01.DBF (1)
 Block: 522              Offsets:    0 to   15           Dba:0x0040020a
------------------------------------------------------------------------
 06a20000 09024000 60020000 00000106

 <32 bytes per line>

BBED> copy dba 2,523 to dba 1,523
 File: D:\app\Administrator\oradata\orcl\SYSTEM01.DBF (1)
 Block: 523              Offsets:    0 to   15           Dba:0x0040020b
------------------------------------------------------------------------
 06a20000 0a024000 60020000 00000106

 <32 bytes per line>

BBED> copy dba 2,524 to dba 1,524
 File: D:\app\Administrator\oradata\orcl\SYSTEM01.DBF (1)
 Block: 524              Offsets:    0 to   15           Dba:0x0040020c
------------------------------------------------------------------------
 06a20000 0b024000 60020000 00000106

 <32 bytes per line>
 

生效:

BBED> sum dba 1,522 apply
Check value for File 1, Block 522:
current = 0x51a2, required = 0x51a2

BBED> sum dba 1,523 apply
Check value for File 1, Block 523:
current = 0x1e90, required = 0x1e90

BBED> sum dba 1,524 apply
Check value for File 1, Block 524:
current = 0x7e16, required = 0x7e16

启动数据库:
D:\bbed>sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 星期四 628 15:55:15 2018

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

SQL> conn /as sysdba
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 3373858816 bytes
Fixed Size                  2180424 bytes
Variable Size            1845496504 bytes
Database Buffers         1509949440 bytes
Redo Buffers               16232448 bytes
数据库装载完毕。
数据库已经打开。
SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ WRITE
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A Master

您的鼓励是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值