:1 0000 0000 0000 0100取前十位 ->0x0040
块号:170 00aa ->0x00aa
行号:12 000c ->0x000c
rowid = 00 40 00 aa 00 0c
在索引块dump文件中搜索rowid的串,定位到row#239[4724]
也就是把c2 35 0f 修改为c2 35 19就可以与表数据保持一致了。
row#239[4724] flag: ------, lock: 0, len=12, data:(6): 00 40 00 aa 00 0c
col 0; len 3; (3): c2 35 0f
c2350f
根据索引块dump可以找到itl槽的个数
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0009.00d.0000011e 0x0080610f.00b3.01 CB-- 0 scn 0x0000.00089531
0x02 0x0002.021.00000145 0x008002d0.00c7.3c --U- 1 fsc 0x0000.000ac09d
offset = kd_off + 44+8+24*itl_cnt
= 4724 + 44+8+24*2
= 4724 + 52 +48
= 4824
BBED> set dba 1,27255
DBA 0x00406a77 (4221559 1,27255)
BBED> dump offset 4824 count 16
File: /data/orcl/system01.dbf (1)
Block: 27255 Offsets: 4824 to 4839 Dba:0x00406a77
------------------------------------------------------------------------
03c2350f 01000040 e2fb00e3 03c23508
BBED> set offset 4828
OFFSET 4828
BBED> dump
File: /data/orcl/system01.dbf (1)
Block: 27255 Offsets: 4828 to 5339 Dba:0x00406a77
------------------------------------------------------------------------
01000040 e2fb00e3 03c23508 01000040 e2fb00e2 03c23509 01000040 e2fb00e1
03c2350a 01000040 e2fb00e0 03c2350b 01000040 e2fb00df 03c2350c 01000040
<32 bytes per line>
BBED> set offset 4827
OFFSET 4827
BBED> modify /x 19
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) Y
File: /data/orcl/system01.dbf (1)
Block: 27255 Offsets: 4827 to 5338 Dba:0x00406a77
------------------------------------------------------------------------
19010000 40e2fb00 e303c235 08010000 40e2fb00 e203c235 09010000 40e2fb00
e103c235 0a010000 40e2fb00 e003c235 0b010000 40e2fb00 df03c235 0c010000
<32 bytes per line>
BBED> sum apply
Check value for File 1, Block 27255:
current = 0xa48f, required = 0xa48f
SQL> create table T_SUNHAILONG (id int primary key,value varchar2(20)) tablespace USERS;
Table created.
创建带主键的表顺利完成。
SQL> select/*+ FULL(T1) */ OWNER#,NAME,CON# FROM CON$ T1
2 minus
3 select /*+ index(T I_CON2) */ owner#,name,con# from con$ T;
no rows selected
SQL>
SQL> SELECT /*+ index(t I_CON2) */owner#, NAME, con# FROM CON$ t where t.NAME='_NEXT_CONSTRAINT';
OWNER# NAME CON#
---------- ------------------------------ ----------
0 _NEXT_CONSTRAINT 5225
SQL> select/*+ FULL(T1) */ OWNER#,NAME,CON# FROM CON$ T1 where t1.NAME='_NEXT_CONSTRAINT';
OWNER# NAME CON#
---------- ------------------------------ ----------
0 _NEXT_CONSTRAINT 5225
再次查询验证数据字典,已经是一致的了。
|