bbed 模拟提交事物
2015/08/31
desert_xu
今天做了几个实验,用bbed 模拟提交 oracle 事物,虽然提交成功了,而且也能查到数据,打开过程中遇到了 ORA-00600: 内部错误代码, 参数: [kddummy_blkchk], [2], [41], [38504], [], [], [], [],不知道是不是与 shutdown abort 有关系呢? 操作系统 solaris10 x86_32 oracle 10.2.0.2
下面是关于bbed 模拟提交的思路,先insert 一个事物
scott@ORA10G@147> insert into t1 values (3,'CCCCC'); 不提交。
查询一下 文件号块号
scott@ORA10G@147> select dbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_block_number(rowid) block#,dbms_rowid.rowid_row_number(rowid) row#,id,name from t1;
FILE# BLOCK# ROW# ID NAME
---------- ---------- ---------- ---------- --------------------
4 22916 0 1 AAAAA
4 22916 1 2 BBBBB
4 22916 2 3 CCCCC
查看事物状态
sys@ORA10G@144> SELECT xidusn,xidslot,xidsqn,ubablk,ubafil,ubasqn,ubarec FROM v$transaction;
XIDUSN XIDSLOT XIDSQN UBABLK UBAFIL UBASQN UBAREC
------------ --------- --- --------- ---------- ---------- ---------- ----------
3 23 423 45 2 327 17
sys@ORA10G@144> select name from v$rollname where usn=3;
NAME
--------------------------------------------------
_SYSSMU3$
dump 3号回滚头
sys@ORA10G@159> alter system dump undo header '_SYSSMU3$';
系统已更改。
sys@ORA10G@159> select header_block from dba_segments where segment_name='_SYSSMU3$';
HEADER_BLOCK
-------------------------------------
41
sys@ORA10G@159> oradebug setmypid
已处理的语句
sys@ORA10G@159> oradebug tracefile_name
/export/home/oracle/admin/ora10g/udump/ora10g_ora_29340.trc
sys@ORA10G@159> alter system flush buffer_cache; --写入磁盘
trace文件
Undo Segment: _SYSSMU3$ (3)
********************************************************************************
Extent Control Header
-----------------------------------------------------------------
Extent Header:: spare1: 0 spare2: 0 #extents: 2 #blocks: 15
last map 0x00000000 #maps: 0 offset: 4080
Highwater:: 0x0080002d ext#: 0 blk#: 3 ext size: 7
#blocks in seg. hdr's freelists: 0
#blocks below: 0
mapblk 0x00000000 offset: 0
Unlocked
Map Header:: next 0x00000000 #extents: 2 obj#: 0 flag: 0x40000000
Extent Map
-----------------------------------------------------------------
0x0080002a length: 7
0x00800031 length: 8
Retention Table
-----------------------------------------------------------
Extent Number:0 Commit Time: 1440998032
Extent Number:1 Commit Time: 1440998032
TRN CTL:: seq: 0x0147 chd: 0x0020 ctl: 0x001c inc: 0x00000000 nfb: 0x0001
mgc: 0x8201 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe)
uba: 0x0080002d.0147.11 scn: 0x0000.000b86b0
Version: 0x01
FREE BLOCK POOL::
uba: 0x00000000.0147.10 ext: 0x0 spc: 0x1722
uba: 0x0080002a.0147.34 ext: 0x0 spc: 0x4aa
uba: 0x00000000.0145.37 ext: 0x0 spc: 0x330
uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
TRN TBL::
index state cflags wrap# uel scn dba parent-xid
nub stmt_num cmt
--------------------------------------------------------------------------------------
----------
0x00 9 0x00 0x01a7 0x0002 0x0000.000b8911 0x0080002b 0x0000.000.00000000
0x00000001 0x00000000 1440999055
0x01 9 0x00 0x01a7 0x002b 0x0000.000b898b 0x0080002b 0x0000.000.00000000
0x00000001 0x00000000 1440999295
0x02 9 0x00 0x01a7 0x0004 0x0000.000b8953 0x0080002b 0x0000.000.00000000
0x00000001 0x00000000 1440999219
0x03 9 0x00 0x01a7 0x000c 0x0000.000b89f3 0x0080002b 0x0000.000.00000000
0x00000001 0x00000000 1440999530
0x04 9 0x00 0x01a7 0x0001 0x0000.000b8968 0x0080002b 0x0000.000.00000000
0x00000001 0x00000000 1440999235
0x05 9 0x00 0x01a7 0x0025 0x0000.000b8894 0x0080002b 0x0000.000.00000000
0x00000001 0x00000000 1440998775
0x06 9 0x00 0x01a7 0x000d 0x0000.000b8adf 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1440999975
0x07 9 0x00 0x01a7 0x0000 0x0000.000b88d8 0x0080002b 0x0000.000.00000000
0x00000001 0x00000000 1440998918
0x08 9 0x00 0x01a7 0x002c 0x0000.000b8a9e 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1440999896
0x09 9 0x00 0x01a7 0x0028 0x0000.000b8b40 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1441000197
0x0a 9 0x00 0x01a7 0x000f 0x0000.000b8bd4 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1441000498
0x0b 9 0x00 0x01a7 0x0014 0x0000.000b8d8d 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1441000860
0x0c 9 0x00 0x01a7 0x002f 0x0000.000b8a29 0x0080002b 0x0000.000.00000000
0x00000001 0x00000000 1440999655
0x0d 9 0x00 0x01a7 0x0009 0x0000.000b8b07 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1441000068
0x0e 9 0x00 0x01a7 0x002a 0x0000.000b8acd 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1440999975
0x0f 9 0x00 0x01a7 0x0018 0x0000.000b8c03 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1441000598
0x10 9 0x00 0x01a7 0x001a 0x0000.000b8c17 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1441000598
0x11 9 0x00 0x01a7 0x0013 0x0000.000b8ba6 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1441000438
0x12 9 0x00 0x01a7 0x001b 0x0000.000b8de8 0x0080002d 0x0000.000.00000000
0x00000002 0x00000000 1441001039
0x13 9 0x00 0x01a6 0x000a 0x0000.000b8bb6 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1441000438
0x14 9 0x00 0x01a7 0x0012 0x0000.000b8dc4 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1441000977
0x15 9 0x00 0x01a7 0x0016 0x0000.000b8c8b 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1441000678
0x16 9 0x00 0x01a7 0x0019 0x0000.000b8cd1 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1441000850
0x17 10 0x80 0x01a7 0x0000 0x0000.000b8e17 0x0080002d 0x0000.000.00000000
0x00000001 0x00000000 0
0x18 9 0x00 0x01a7 0x0010 0x0000.000b8c0d 0x0080002c 0x0000.000.00000000
0x00000001 0x00000000 1441000598
bbed 修改
bbed> set file 2 block 41
f/x 0a80
找到位置 然后修改
m/x 0900
sum apply
verify
修改 4号文件22916 block块
set file 4 block 22916
p ktbbh
BBED> set file 4 block 22916
FILE# 4
BLOCK# 22916
BBED> p ktbbh
struct ktbbh, 72 bytes @20
ub1 ktbbhtyp @20 0x01 (KDDBTDATA)
union ktbbhsid, 4 bytes @24
ub4 ktbbhsg1 @24 0x0000cdd8
ub4 ktbbhod1 @24 0x0000cdd8
struct ktbbhcsc, 8 bytes @28
ub4 kscnbas @28 0x000b87f6
ub2 kscnwrp @32 0x0000
b2 ktbbhict @36 7938
ub1 ktbbhflg @38 0x32 (NONE)
ub1 ktbbhfsl @39 0x00
ub4 ktbbhfnx @40 0x01005981
struct ktbbhitl[0], 24 bytes @44
struct ktbitxid, 8 bytes @44
ub2 kxidusn @44 0x0003
ub2 kxidslt @46 0x0017
ub4 kxidsqn @48 0x000001a7
struct ktbituba, 8 bytes @52
ub4 kubadba @52 0x0080002d
ub2 kubaseq @56 0x0147
ub1 kubarec @58 0x11
ub2 ktbitflg @60 0x8000 (KTBFCOM) --修改这里,modify /x 0080 offset 60 x86 字节反转
union _ktbitun, 2 bytes @62
b2 _ktbitfsc @62 0
ub2 _ktbitwrp @62 0x0000
ub4 ktbitbas @64 0x00000000
struct ktbbhitl[1], 24 bytes @68
struct ktbitxid, 8 bytes @68
ub2 kxidusn @68 0x0003
ub2 kxidslt @70 0x0021
ub4 kxidsqn @72 0x000001a5
struct ktbituba, 8 bytes @76
ub4 kubadba @76 0x00800036
ub2 kubaseq @80 0x0146
ub1 kubarec @82 0x22
ub2 ktbitflg @84 0xa000 (KTBFUPB, KTBFCOM)
union _ktbitun, 2 bytes @86
b2 _ktbitfsc @86 0
ub2 _ktbitwrp @86 0x0000
ub4 ktbitbas @88 0x000b7fc4
大概是这样的过程,有空在动动实验,看看 在正常的shutdown immediate 下,是否出现 kddummy_blkchk 校验值错误。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21980353/viewspace-1787644/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21980353/viewspace-1787644/