特殊恢复:ORA-00704、ORA-00604、ORA-01555未提交事务时的处理方案
我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。
一、案例背景
本次案例主要是分享有未提交的事务,导致数据库在启动过程中触发ORA-01555的报错。这个案例也是来至于一个网友,数据库无法打开,希望能帮助他把数据库打开。因为数据库比较小,所以网友是通过云盘的方式共享所有的数据文件,我在自己的环境中操作的。
二、环境与版本
- 数据库版本:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
- 操作系统:Red Hat Enterprise Linux AS release 4 (Nahant Update 8)
三、故障现象
数据库启动过程中,出现如下报错:
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00704: bootstrap process failure
ORA-00604: error occurred at recursive SQL level 1
ORA-01555: snapshot too old: rollback segment number 6 with name "_SYSSMU6_3654194381$" too small
简要说明:
ORA-01555 是 Oracle 中常见的“快照过旧”错误,通常出现在长事务或回滚段空间不足时。本案例中,该错误直接导致数据库无法正常 open。
四、初步处理过程
1. 修改数据文件位置与参数
由于恢复环境与原环境路径不一致,需调整参数文件和数据文件路径。通过重建控制文件、修改参数文件等方式,确保数据库能正常 mount。
2. 尝试恢复数据库
执行 recover database using backup controlfile until cancel;
,并尝试 alter database open resetlogs;
,但依然报错 ORA-01555。
3. 切换 UNDO 表空间
尝试将 undo_tablespace
参数切换为 SYSTEM
,但问题依旧。
4. 设置隐藏参数
尝试设置 _offline_rollback_segments
和 _corrupted_rollback_segments
,无效。
五、详细分析过程
1. 查看 Alert 日志
通过 alert 日志发现,报错 SQL 为:
select obj#,type#,ctime,mtime,stime, status, dataobj#, flags, oid$, spare1, spare2
from obj$
where owner#=:1 and name=:2 and namespace=:3 and remoteowner is null and linkname is null and subname is null
2. 配置事件获取详细日志
通过 oradebug
配置 10046 及 errorstack 事件,获取详细 trace 文件,便于后续分析。
3. 分析 Trace 文件
- 发现 SQL 访问了 file#=1 block#=20804,涉及索引块。
- 进一步分析发现,相关事务的 undo 记录已被覆盖,导致回滚时无法获取所需的 undo 信息,最终触发 ORA-01555。
Block header dump: 0x00405144
Object id on Block? Y
seg/obj: 0x25 csc: 0x00.21eda4 itc: 2 flg: - typ: 2 - INDEX
fsl: 0 fnx: 0x0 ver: 0x01
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0002.015.0000009f 0x00c03a8d.001c.01 CB-- 0 scn 0x0000.0002a810
0x02 0x0006.014.00000442 0x00c001b8.010e.11 ---- 1 fsc 0x0000.00000000
这里我们可以看到XID的信息,ITL 02上面有一行的数据正在被修改,使用的undo段为6,使用的uba地址为00c001b8,使用的插槽号为14,trap#为442,块为索引块。其实这里看到是索引块,如果正常情况下,我们重建索引就可以解决问题了。或者是不走索引也是可以的。下面是将uba中的地址转为数据文件与块号
www.htz.pw > @dba_to_fno_bno.sql
Enter value for dba: 00c001b8
FILE BLOCK
---------- ----------
3 440
下面继续查看块中行记录的信息
row#102[1300] flag: ------, lock: 2, len=32, data:(6): 00 41 42 1e 00 3d
col 0; len 1; (1): 80
col 1; len 5; (5): 54 45 53 54 32
col 2; len 2; (2): c1 02
col 3; NULL
col 4; NULL
col 5; NULL
col 6; len 2; (2): c1 03
col 7; len 1; (1): 80
col 8; len 4; (4): c3 08 45 2e
这里看到了索引中的行记录,下面继续查看块中对象的信息
www.htz.pw > set echo off
Enter Search Object Id (i.e. 1235) : 37
Object Create Last_Ddl
OWNEROBJECT_NAME SUBOBJECT_NAME Type Time Time STATUS
----------------- ------------------------------ -------------------- -------------------- ----------
SYS I_OBJ2 INDEX 2013-08-24 11:37:35 2013-08-24 11:37:35 VALID
这里可以看到是索引的名字等详细的信息,
4.查看undo块与头的信息
从5.3.4中我们查看了undo块的信息,下面我们来看看undo的信息
BH (0x7cbf91b8) file#: 3 rdba: 0x00c000d0 (3/208) class: 27 ba: 0x7cb7e000
set: 3 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 0,0
dbwrid: 0 obj: -1 objn: 0 tsn: 2 afn: 3 hint: f
hash: [0x8d040fa0,0x8d040fa0] lru: [0x7cbf93d0,0x7cbf9170]
ckptq: [NULL] fileq: [NULL] objq: [0x8a1adeb8,0x8a1adeb8] objaq: [0x8a1adea8,0x8a1adea8]
st: XCURRENT md: NULL fpin: 'ktuwh05: ktugct' tch: 1
flags:
LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
buffer tsn: 2 rdba: 0x00c000d0 (3/208)
scn: 0x0000.0012a779 seq: 0x02 flg: 0x04 tail: 0xa7792602
frmt: 0x02 chkval: 0x33bf type: 0x26=KTU SMU HEADER BLOCK
07CB7FFF0 00000000 00000000 00000000 A7792602 [.............&y.]
Extent Control Header
-----------------------------------------------------------------
Extent Header:: spare1: 0 spare2: 0 #extents: 5 #blocks: 39
last map 0x00000000 #maps: 0 offset: 4080
Highwater:: 0x00c001a5 ext#: 1 blk#: 5 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 0
mapblk 0x00000000 offset: 1
Unlocked
Map Header:: next 0x00000000 #extents: 5 obj#: 0 flag: 0x40000000
Extent Map
-----------------------------------------------------------------
0x00c000d1 length: 7
0x00c001a0 length: 8
0x00c001b8 length: 8
0x00c000d8 length: 8
0x00c00138 length: 8
Retention Table
-----------------------------------------------------------
Extent Number:0 Commit Time: 1409188509
Extent Number:1 Commit Time: 1409188509
Extent Number:2 Commit Time: 0
Extent Number:3 Commit Time: 1409188428
Extent Number:4 Commit Time: 1409188492
TRN CTL:: seq: 0x010d chd: 0x000d ctl: 0x0015 inc: 0x00000000 nfb: 0x0001
mgc: 0xb000 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe)
uba: 0x00c001a5.010d.25 scn: 0x0000.0012a420
Version: 0x01
FREE BLOCK POOL::
uba: 0x00c001a5.010d.25 ext: 0x1 spc: 0xe10
uba: 0x00000000.0109.07 ext: 0x0 spc: 0x1a20
uba: 0x00000000.00d1.25 ext: 0x5 spc: 0x608
uba: 0x00000000.00b0.01 ext: 0x6 spc: 0x1ed0
uba: 0x00000000.00b0.01 ext: 0x6 spc: 0x1ed0
TRN TBL::
index state cflags wrap# uel scn dba parent-xid nub stmt_num cmt
------------------------------------------------------------------------------------------------
0x00 9 0x00 0x0442 0x001f 0x0000.0012a6b9 0x00c001a4 0x0000.000.00000000 0x00000001 0x00000000 1409188524
0x01 9 0x00 0x0442 0x0015 0x0000.0012a760 0x00c001a5 0x0000.000.00000000 0x00000001 0x00000000 1409188658
0x02 9 0x00 0x0441 0x0014 0x0000.0012a515 0x00c0013b 0x0000.000.00000000 0x00000003 0x00000000 1409188485
0x03 9 0x00 0x0441 0x000b 0x0000.0012a4b5 0x00c00138 0x0000.000.00000000 0x00000001 0x00000000 1409188478
0x04 9 0x00 0x0441 0x0003 0x0000.0012a4a1 0x00c00138 0x0000.000.00000000 0x00000001 0x00000000 1409188478
0x05 9 0x00 0x0441 0x0007 0x0000.0012a451 0x00c00138 0x0000.000.00000000 0x00000001 0x00000000 1409188477
0x06 9 0x00 0x0442 0x0008 0x0000.0012a71f 0x00c001a5 0x0000.000.00000000 0x00000002 0x00000000 1409188606
0x07 9 0x00 0x0441 0x0010 0x0000.0012a477 0x00c00138 0x0000.000.00000000 0x00000001 0x00000000 1409188478
0x08 9 0x00 0x0441 0x0001 0x0000.0012a73d 0x00c001a5 0x0000.000.00000000 0x00000001 0x00000000 1409188608
0x09 9 0x00 0x0441 0x0002 0x0000.0012a502 0x00c00139 0x0000.000.00000000 0x00000001 0x00000000 1409188485
0x0a 9 0x00 0x0442 0x0020 0x0000.0012a6de 0x00c001a4 0x0000.000.00000000 0x00000001 0x00000000 1409188545
0x0b 9 0x00 0x0441 0x0011 0x0000.0012a4cc 0x00c00138 0x0000.000.00000000 0x00000001 0x00000000 1409188481
0x0c 9 0x00 0x0441 0x001a 0x0000.0012a5af 0x00c000d3 0x0000.000.00000000 0x00000006 0x00000000 1409188492
0x0d 9 0x00 0x0440 0x0005 0x0000.0012a43b 0x00c00138 0x0000.000.00000000 0x00000001 0x00000000 1409188471
0x0e 9 0x00 0x0441 0x0013 0x0000.0012a552 0x00c0013b 0x0000.000.00000000 0x00000001 0x00000000 1409188486
0x0f 9 0x00 0x0441 0x0009 0x0000.0012a4f4 0x00c00139 0x0000.000.00000000 0x00000002 0x00000000 1409188485
0x10 9 0x00 0x0441 0x0004 0x0000.0012a48a 0x00c00138 0x0000.000.00000000 0x00000001 0x00000000 1409188478
0x11 9 0x00 0x0441 0x000f 0x0000.0012a4e2 0x00c00138 0x0000.000.00000000 0x00000001 0x00000000 1409188485
0x12 9 0x00 0x0441 0x0000 0x0000.0012a6a9 0x00c001a4 0x0000.000.00000000 0x00000001 0x00000000 1409188523
0x13 9 0x00 0x0441 0x0016 0x0000.0012a56a 0x00c0013c 0x0000.000.00000000 0x00000002 0x00000000 1409188487
0x14 9 0x00 0x0441 0x0017 0x0000.0012a52a 0x00c0013b 0x0000.000.00000000 0x00000001 0x00000000 1409188485
0x15 9 0x00 0x0441 0xffff 0x0000.0012a779 0x00c001a5 0x0000.000.00000000 0x00000001 0x00000000 1409188665
0x16 9 0x00 0x0441 0x0019 0x0000.0012a57e 0x00c0013c 0x0000.000.00000000 0x00000001 0x00000000 1409188489
0x17 9 0x00 0x0441 0x000e 0x0000.0012a541 0x00c0013b 0x0000.000.00000000 0x00000001 0x00000000 1409188486
0x18 9 0x00 0x0441 0x001c 0x0000.0012a67e 0x00c001a1 0x0000.000.00000000 0x00000007 0x00000000 1409188509
0x19 9 0x00 0x0441 0x000c 0x0000.0012a59b 0x00000000 0x0000.000.00000000 0x00000000 0x00000000 1409188490
0x1a 9 0x00 0x0441 0x001b 0x0000.0012a5c5 0x00c000d3 0x0000.000.00000000 0x00000001 0x00000000 1409188494
0x1b 9 0x00 0x0441 0x0021 0x0000.0012a5eb 0x00c000d3 0x0000.000.00000000 0x00000001 0x00000000 1409188494
0x1c 9 0x00 0x0441 0x0012 0x0000.0012a689 0x00c001a4 0x0000.000.00000000 0x00000003 0x00000000 1409188509
0x1d 9 0x00 0x0441 0x001e 0x0000.0012a617 0x00c000d3 0x0000.000.00000000 0x00000001 0x00000000 1409188499
0x1e 9 0x00 0x0441 0x0018 0x0000.0012a632 0x00c000d3 0x0000.000.00000000 0x00000001 0x00000000 1409188507
0x1f 9 0x00 0x0441 0x000a 0x0000.0012a6cb 0x00c001a4 0x0000.000.00000000 0x00000001 0x00000000 1409188538
0x20 9 0x00 0x0441 0x0006 0x0000.0012a701 0x00c001a4 0x0000.000.00000000 0x00000001 0x00000000 1409188586
0x21 9 0x00 0x0440 0x001d 0x0000.0012a601 0x00c000d3 0x0000.000.00000000 0x00000001 0x00000000 1409188499
这里可以看到undo段头中index为14的事务状态是9(非活动的),wrap#值为0441,比之前的块中的442还小。所以此时的undo段头块比我们所需要的段头块还要旧。
下面继续查看undo块的信息
********************************************************************************
UNDO BLK:
xid: 0x0008.007.00000389 seq: 0xdb cnt: 0x4 irb: 0x4 icl: 0x0 flg: 0x0000
Rec Offset Rec Offset Rec Offset Rec Offset Rec Offset
---------------------------------------------------------------------------
0x01 0x1f38 0x02 0x1eb0 0x03 0x1e50 0x04 0x1dc8
*-----------------------------
* Rec #0x1 slt: 0x18 objn: 457(0x000001c9) objd: 457 tblspc: 0(0x00000000)
* Layer: 11 (Row) opc: 1 rci 0x00
Undo type: Regular undo Begin trans Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000Ext idx: 0
flg2: 0
*-----------------------------
uba: 0x00c0014f.00da.3d ctl max scn: 0x0000.00126bb5 prv tx scn: 0x0000.00126bcd
txn start scn: scn: 0x0000.00126f93 logon user: 0
prev brb: 12583242 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x0005.020.00000375 uba: 0x00c001ae.00ba.2e
flg: C--- lkc: 0 scn: 0x0000.00126b8b
KDO Op code: URP row dependencies Disabled
xtype: XAxtype KDO_KDOM2 flags: 0x00000080 bdba: 0x00400c21 hdba: 0x00400c18
itli: 1 ispac: 0 maxfr: 4863
tabn: 0 slot: 173(0xad) flag: 0x2c lock: 0 ckix: 11
ncol: 9 nnew: 7 size: 0
Vector content:
col 2: [ 2] c1 07
col 3: [ 2] c1 04
col 4: [ 1] 80
col 5: [ 1] 80
col 6: [ 1] 80
col 7: [ 1] 80
col 8: [ 7] 78 72 08 1a 0c 01 10
*-----------------------------
* Rec #0x2 slt: 0x1b objn: 461(0x000001cd) objd: 461 tblspc: 0(0x00000000)
* Layer: 11 (Row) opc: 1 rci 0x00
Undo type: Regular undo Begin trans Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000Ext idx: 0
flg2: 0
*-----------------------------
uba: 0x00c001b8.00db.01 ctl max scn: 0x0000.00126bcd prv tx scn: 0x0000.00126bd9
txn start scn: scn: 0x0000.00126f9d logon user: 0
prev brb: 12583244 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x0001.00c.000002b9 uba: 0x00c0023a.00cc.36
flg: C--- lkc: 0 scn: 0x0000.00126f9b
KDO Op code: DRP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x00400c72 hdba: 0x00400c70
itli: 1 ispac: 0 maxfr: 4863
tabn: 0 slot: 171(0xab)
*-----------------------------
* Rec #0x3 slt: 0x1b objn: 462(0x000001ce) objd: 462 tblspc: 0(0x00000000)
* Layer: 10 (Index) opc: 22 rci 0x02
Undo type: Regular undo Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
index undo for leaf key operations
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x0009.006.00000394 uba: 0x00c00155.00e6.29
flg: C--- lkc: 0 scn: 0x0000.00126f9c
Dump kdilk : itl=2, kdxlkflg=0x1 sdc=32655 indexid=0x400c90 block=0x00400c91
(kdxlpu): purge leaf row
key :(5): 04 c3 08 13 29
*-----------------------------
* Rec #0x4 slt: 0x07 objn: 71834(0x0001189a) objd: 71834 tblspc: 1(0x00000001)
* Layer: 11 (Row) opc: 1 rci 0x00
Undo type: Regular undo Begin trans Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000Ext idx: 0
flg2: 0
*-----------------------------
uba: 0x00c001b8.00db.02 ctl max scn: 0x0000.00126bd9 prv tx scn: 0x0000.00126c09
txn start scn: scn: 0x0000.00126ec1 logon user: 71
prev brb: 12583244 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: L itl: xid: 0x000a.009.000002d3 uba: 0x00c00356.009a.0c
flg: C--- lkc: 0 scn: 0x0000.0012666e
KDO Op code: DRP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x00810933 hdba: 0x00810932
itli: 1 ispac: 0 maxfr: 4858
tabn: 0 slot: 1(0x1)
在undo数据块中,也没有查看我们所需要的事务的UNDO记录数
5.分析结果
由于undo中没有包含事务所需要的undo记录,导致事务rollback的时候,触发了ORA-01555报错。这里知道原因后,解决问题就很简单了
6.bbed验证一下块中数据
[oracle@www.htz.pw trace]$bbed
Password:
BBED: Release 2.0.0.0.0 - Limited Production on Thu Aug 28 12:39:42 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED> set filename '/oracle/app/oracle/oradata/database/cos11g/system01.dbf';
FILENAME /oracle/app/oracle/oradata/database/cos11g/system01.dbf
BBED> set block 20804
BLOCK# 20804
BBED> map
File: /oracle/app/oracle/oradata/database/cos11g/system01.dbf (0)
Block: 20804 Dba:0x00000000
------------------------------------------------------------
KTB Data Block (Index Leaf)
struct kcbh, 20 bytes @0
struct ktbbh, 72 bytes @20
struct kdxle, 32 bytes @92
sb2 kd_off[156] @124
ub1 freespace[952] @436
ub1 rowdata[6732] @1388
ub4 tailchk @8188
BBED> p ktbbh
struct ktbbh, 72 bytes @20
ub1 ktbbhtyp @20 0x02 (KDDBTINDEX)
union ktbbhsid, 4 bytes @24
ub4 ktbbhsg1 @24 0x00000025
ub4 ktbbhod1 @24 0x00000025
struct ktbbhcsc, 8 bytes @28
ub4 kscnbas @28 0x0012a91c
ub2 kscnwrp @32 0x0000
sb2 ktbbhict @36 7938
ub1 ktbbhflg @38 0x02 (NONE)
ub1 ktbbhfsl @39 0x00
ub4 ktbbhfnx @40 0x00000000
struct ktbbhitl[0], 24 bytes @44
struct ktbitxid, 8 bytes @44
ub2 kxidusn @44 0x0002
ub2 kxidslt @46 0x0015
ub4 kxidsqn @48 0x0000009f
struct ktbituba, 8 bytes @52
ub4 kubadba @52 0x00c03a8d
ub2 kubaseq @56 0x001c
ub1 kubarec @58 0x01
ub2 ktbitflg @60 0xc000 (KTBFIBI, KTBFCOM)
union _ktbitun, 2 bytes @62
sb2 _ktbitfsc @62 0
ub2 _ktbitwrp @62 0x0000
ub4 ktbitbas @64 0x0002a810
struct ktbbhitl[1], 24 bytes @68
struct ktbitxid, 8 bytes @68
ub2 kxidusn @68 0x0006
ub2 kxidslt @70 0x0014
ub4 kxidsqn @72 0x00000442
struct ktbituba, 8 bytes @76
ub4 kubadba @76 0x00c001b8
ub2 kubaseq @80 0x010e
ub1 kubarec @82 0x11
ub2 ktbitflg @84 0x0001 (NONE)
union _ktbitun, 2 bytes @86
sb2 _ktbitfsc @86 0
ub2 _ktbitwrp @86 0x0000
ub4 ktbitbas @88 0x00000000
BBED> x /rncnn *kd_off[104]
rowdata[4] @1392
----------
flag@1392: 0x00 (NONE)
lock@1393: 0x02
keydata[6]: 0x00 0x41 0x42 0x1e 0x00 0x3d
data key:
col 0[1] @1401: 0
col 1[5] @1403: TEST2
col 2[2] @1409: 1
col 3[0] @1412: *NULL*
col 4[0] @1413: *NULL*
col 5[0] @1414: *NULL*
col 6[2] @1415: 2
col 7[1] @1418: 0
col 8[4] @1420: 76845
六、 故障处理过程
此故障处理的方法一般有2种
- 走全表扫描
- 手动提交事务信息
6.1 走全表扫描
由于这里是oracle2进制中的sql触发的报错,所以要走全表扫描,需要修改oracle2进制文件,见曾经的笔记ORA-08103,使用ue修改oracle2进制文件来完美解决,连接ue修改oracle文件
6.2 手动提交事务
相信这种情况下,大家一般会选择bbed的方法来解决,因为这种方法更简单,但是这种方法风险更高。如果要修改oracle2进制文件,需要在sql中增加full提示或者修改where后面列的信息,上面sql中引用的列都是字符集,增加更改起来比较麻烦,不仅需要改SQL内容,还需要更改其它地方,不然会open的时候会触发ORA-07445报错。
BBED> x /rncnn *kd_off[104]
rowdata[4] @1392
----------
flag@1392: 0x00 (NONE)
lock@1393: 0x02
keydata[6]: 0x00 0x41 0x42 0x1e 0x00 0x3d
data key:
col 0[1] @1401: 0
col 1[5] @1403: TEST2
col 2[2] @1409: 1
col 3[0] @1412: *NULL*
col 4[0] @1413: *NULL*
col 5[0] @1414: *NULL*
col 6[2] @1415: 2
col 7[1] @1418: 0
col 8[4] @1420: 76845
BBED> set offset 1393
OFFSET 1393
BBED> set count 10
COUNT 10
BBED> set mode edit
MODE Edit
BBED> dump
File: /oracle/app/oracle/oradata/database/cos11g/system01.dbf (0)
Block: 20804 Offsets: 1393 to 1402 Dba:0x00000000
------------------------------------------------------------------------
02004142 1e003d01 8005
<32 bytes per line>
BBED> modify /x 00 offset 1393
File: /oracle/app/oracle/oradata/database/cos11g/system01.dbf (0)
Block: 20804 Offsets: 1393 to 1402 Dba:0x00000000
------------------------------------------------------------------------
00004142 1e003d01 8005
<32 bytes per line>
BBED> verify
DBVERIFY - Verification starting
FILE = /oracle/app/oracle/oradata/database/cos11g/system01.dbf
BLOCK = 20804
Block Checking: DBA = 4215108, Block Type = KTB-managed data block
**** actual rows locked by itl 2 = 0 != # in trans. header = 1
---- end index block validation
Block 20804 failed with check code 6401
DBVERIFY - Verification complete
Total Blocks Examined : 1
Total Blocks Processed (Data) : 0
Total Blocks Failing (Data) : 0
Total Blocks Processed (Index): 1
Total Blocks Failing (Index): 1
Total Blocks Empty : 0
Total Blocks Marked Corrupt : 0
Total Blocks Influx : 0
Message 531 not found; product=RDBMS; facility=BBED
BBED> p ktbbh
struct ktbbh, 72 bytes @20
ub1 ktbbhtyp @20 0x02 (KDDBTINDEX)
union ktbbhsid, 4 bytes @24
ub4 ktbbhsg1 @24 0x00000025
ub4 ktbbhod1 @24 0x00000025
struct ktbbhcsc, 8 bytes @28
ub4 kscnbas @28 0x0012a91c
ub2 kscnwrp @32 0x0000
sb2 ktbbhict @36 7938
ub1 ktbbhflg @38 0x02 (NONE)
ub1 ktbbhfsl @39 0x00
ub4 ktbbhfnx @40 0x00000000
struct ktbbhitl[0], 24 bytes @44
struct ktbitxid, 8 bytes @44
ub2 kxidusn @44 0x0002
ub2 kxidslt @46 0x0015
ub4 kxidsqn @48 0x0000009f
struct ktbituba, 8 bytes @52
ub4 kubadba @52 0x00c03a8d
ub2 kubaseq @56 0x001c
ub1 kubarec @58 0x01
ub2 ktbitflg @60 0xc000 (KTBFIBI, KTBFCOM)
union _ktbitun, 2 bytes @62
sb2 _ktbitfsc @62 0
ub2 _ktbitwrp @62 0x0000
ub4 ktbitbas @64 0x0002a810
struct ktbbhitl[1], 24 bytes @68
struct ktbitxid, 8 bytes @68
ub2 kxidusn @68 0x0006
ub2 kxidslt @70 0x0014
ub4 kxidsqn @72 0x00000442
struct ktbituba, 8 bytes @76
ub4 kubadba @76 0x00c001b8
ub2 kubaseq @80 0x010e
ub1 kubarec @82 0x11
ub2 ktbitflg @84 0x0001 (NONE)
union _ktbitun, 2 bytes @86
sb2 _ktbitfsc @86 0
ub2 _ktbitwrp @86 0x0000
ub4 ktbitbas @88 0x00000000
BBED> modify /x offset 84
BBED-00209: invalid number (offset)
BBED> modify /x 0080 offset 84
File: /oracle/app/oracle/oradata/database/cos11g/system01.dbf (0)
Block: 20804 Offsets: 84 to 93 Dba:0x00000000
------------------------------------------------------------------------
00800000 00000000 0000
<32 bytes per line>
BBED> p ktbbh
struct ktbbh, 72 bytes @20
ub1 ktbbhtyp @20 0x02 (KDDBTINDEX)
union ktbbhsid, 4 bytes @24
ub4 ktbbhsg1 @24 0x00000025
ub4 ktbbhod1 @24 0x00000025
struct ktbbhcsc, 8 bytes @28
ub4 kscnbas @28 0x0012a91c
ub2 kscnwrp @32 0x0000
sb2 ktbbhict @36 7938
ub1 ktbbhflg @38 0x02 (NONE)
ub1 ktbbhfsl @39 0x00
ub4 ktbbhfnx @40 0x00000000
struct ktbbhitl[0], 24 bytes @44
struct ktbitxid, 8 bytes @44
ub2 kxidusn @44 0x0002
ub2 kxidslt @46 0x0015
ub4 kxidsqn @48 0x0000009f
struct ktbituba, 8 bytes @52
ub4 kubadba @52 0x00c03a8d
ub2 kubaseq @56 0x001c
ub1 kubarec @58 0x01
ub2 ktbitflg @60 0xc000 (KTBFIBI, KTBFCOM)
union _ktbitun, 2 bytes @62
sb2 _ktbitfsc @62 0
ub2 _ktbitwrp @62 0x0000
ub4 ktbitbas @64 0x0002a810
struct ktbbhitl[1], 24 bytes @68
struct ktbitxid, 8 bytes @68
ub2 kxidusn @68 0x0006
ub2 kxidslt @70 0x0014
ub4 kxidsqn @72 0x00000442
struct ktbituba, 8 bytes @76
ub4 kubadba @76 0x00c001b8
ub2 kubaseq @80 0x010e
ub1 kubarec @82 0x11
ub2 ktbitflg @84 0x8000 (KTBFCOM)
union _ktbitun, 2 bytes @86
sb2 _ktbitfsc @86 0
ub2 _ktbitwrp @86 0x0000
ub4 ktbitbas @88 0x00000000
BBED> verify
DBVERIFY - Verification starting
FILE = /oracle/app/oracle/oradata/database/cos11g/system01.dbf
BLOCK = 20804
DBVERIFY - Verification complete
Total Blocks Examined : 1
Total Blocks Processed (Data) : 0
Total Blocks Failing (Data) : 0
Total Blocks Processed (Index): 1
Total Blocks Failing (Index): 0
Total Blocks Empty : 0
Total Blocks Marked Corrupt : 0
Total Blocks Influx : 0
Message 531 not found; product=RDBMS; facility=BBED
七、数据库打开
ww.htz.pw > select open_mode from v$database;
OPEN_MODE
--------------------
MOUNTED
www.htz.pw > recover database using backup controlfile until cancel;
ORA-00279: change 2223521 generated at 08/28/2014 12:30:54 needed for thread 1
ORA-00289: suggestion :
/oracle/app/oracle/fast_recovery_area/COS11G/archivelog/2014_08_28/o1_mf_1_1_%u_
.arc
ORA-00280: change 2223521 for thread 1 is in sequence #1
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1:
'/oracle/app/oracle/oradata/database/cos11g/system01.dbf'
ORA-01112: media recovery not started
www.htz.pw > alter database open resetlogs;
Database altered.
这里看到数据库已经打开了,下面我们需要增加TEMP文件,观察ALERT中是否有报错,如果没有报错,取消参数,以正常的方式打开数据库。如果alert中没有任何报错,一般情况下,取消参数是可以正常打开数据库的,当然因为数据库采用特殊方式打开,所以建议将数据库重建。
八、后续分享
本次我们分享的是bbed提交内容,下一次我们再分享通过修改oracle二进制文件的方式来修改此故障。
------------------作者介绍-----------------------
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等