下面是来至其它实验中的一部分,关于verify验证块中,报错
4,bbed修改块的相关的内容
欢迎大家加入ORACLE超级群:17115662 免费解决各种ORACLE问题,以后BLOG将迁移到http://www.htz.pw
其实bbed只需要改2个地址,一个地方是改itl中的flg,更改为提交,另一个地方是清除行中的itl的值
BBED> p ktbbh struct ktbbh, 96 bytes @20 ub1 ktbbhtyp @20 0x01 (KDDBTDATA) union ktbbhsid, 4 bytes @24 ub4 ktbbhsg1 @24 0x00012906 ub4 ktbbhod1 @24 0x00012906 struct ktbbhcsc, 8 bytes @28 ub4 kscnbas @28 0x0024e77c ub2 kscnwrp @32 0x0000 sb2 ktbbhict @36 3 ub1 ktbbhflg @38 0x32 (NONE) ub1 ktbbhfsl @39 0x00 ub4 ktbbhfnx @40 0x01001930 struct ktbbhitl[0], 24 bytes @44 struct ktbitxid, 8 bytes @44 ub2 kxidusn @44 0xffff ub2 kxidslt @46 0x0000 ub4 kxidsqn @48 0x00000000 struct ktbituba, 8 bytes @52 ub4 kubadba @52 0x00000000 ub2 kubaseq @56 0x0000 ub1 kubarec @58 0x00 ub2 ktbitflg @60 0x8000 (KTBFCOM) union _ktbitun, 2 bytes @62 sb2 _ktbitfsc @62 0 ub2 _ktbitwrp @62 0x0000 ub4 ktbitbas @64 0x0024e747 struct ktbbhitl[1], 24 bytes @68 struct ktbitxid, 8 bytes @68 ub2 kxidusn @68 0x000d ub2 kxidslt @70 0x0003 ub4 kxidsqn @72 0x000000d7 struct ktbituba, 8 bytes @76 ub4 kubadba @76 0x0140026c ub2 kubaseq @80 0x0202 ub1 kubarec @82 0x04 ub2 ktbitflg @84 0x0001 (NONE) union _ktbitun, 2 bytes @86 sb2 _ktbitfsc @86 0 ub2 _ktbitwrp @86 0x0000 ub4 ktbitbas @88 0x00000000
BBED> set mode edit MODE Edit
BBED> set count 16 COUNT 16 这里有一点需要注意的是,测试平台是X86的,如果是小机需要注意了,有一点不一样的地方,不需要高低位转换 BBED> modify /x 0080 offset 84 Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y File: /oracle/app/oracle/oradata/orcl1123/users01.dbf (0) Block: 6451 Offsets: 84 to 99 Dba:0x00000000 ———————————————————————— 00800000 00000000 00000000 00000000
<32 bytes per line>
BBED> p ktbbh.ktbbhitl[1] struct ktbbhitl[1], 24 bytes @68 struct ktbitxid, 8 bytes @68 ub2 kxidusn @68 0x000d ub2 kxidslt @70 0x0003 ub4 kxidsqn @72 0x000000d7 struct ktbituba, 8 bytes @76 ub4 kubadba @76 0x0140026c ub2 kubaseq @80 0x0202 ub1 kubarec @82 0x04 ub2 ktbitflg @84 0x8000 (KTBFCOM) union _ktbitun, 2 bytes @86 sb2 _ktbitfsc @86 0 ub2 _ktbitwrp @86 0x0000 ub4 ktbitbas @88 0x00000000
这里可以看到,下面报了行为的itl值有问题
BBED> verify DBVERIFY – Verification starting FILE = /oracle/app/oracle/oradata/orcl1123/users01.dbf BLOCK = 6451
Block Checking: DBA = 16783667, Block Type = KTB-managed data block data header at 0x2a98b8727c kdbchk: row locked by non-existent transaction table=0 slot=0 lockid=2 ktbbhitc=3 Block 6451 failed with check code 6101 这里报错的原因很简单,就是因为行上面有一个锁,但是在ITL中没有找到相应的记录,一般会出现,手动提交事务的时候,table=0代表块中第1个表,slot=0代表表中第一行的记录,lockid=2代表ITL中第2条记录,这里我们只需要将行的lck清空就可以了。
DBVERIFY – Verification complete
Total Blocks Examined : 1 Total Blocks Processed (Data) : 1 Total Blocks Failing (Data) : 1 Total Blocks Processed (Index): 0 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
BBED> p *kdbr[0] rowdata[0] ———- ub1 rowdata[0] @8023 0x2c
BBED> set offset 8023 OFFSET 8023
BBED> dump File: /oracle/app/oracle/oradata/orcl1123/users01.dbf (0) Block: 6451 Offsets: 8023 to 8038 Dba:0x00000000 ———————————————————————— 2c020e0e 4855414e 4754494e 475a484f
<32 bytes per line>
BBED> modify /x 2c00 File: /oracle/app/oracle/oradata/orcl1123/users01.dbf (0) Block: 6451 Offsets: 8023 to 8038 Dba:0x00000000 ———————————————————————— 2c000e0e 4855414e 4754494e 475a484f
<32 bytes per line>
BBED> sum apply Check value for File 0, Block 6451: current = 0xbebc, required = 0xbebc 下面再也没有报错了 BBED> verify DBVERIFY – Verification starting FILE = /oracle/app/oracle/oradata/orcl1123/users01.dbf BLOCK = 6451
DBVERIFY – Verification complete
Total Blocks Examined : 1 Total Blocks Processed (Data) : 1 Total Blocks Failing (Data) : 0 Total Blocks Processed (Index): 0 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 |
常见坏块分类,dbv报错代码:6101:等您坐沙发呢!