设为首页 加入收藏

TOP

ORA-8102问题模拟及处理(三)
2015-07-24 12:02:10 来源: 作者: 【 】 浏览:18
Tags:ORA-8102 问题 模拟 处理
: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

再次查询验证数据字典,已经是一致的了。
首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle修改监听端口号1521 下一篇OracleRAC转换为单实例

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Sphinx : 高性能SQL (2025-12-24 10:18:11)
·Pandas 性能优化 - (2025-12-24 10:18:08)
·MySQL 索引 - 菜鸟教 (2025-12-24 10:18:06)
·Shell 基本运算符 - (2025-12-24 09:52:56)
·Shell 函数 | 菜鸟教 (2025-12-24 09:52:54)