标签云
asm恢复 bbed bootstrap$ dul kcbzib_kcrsds_1 kccpb_sanity_check_2 kcratr_nab_less_than_odr MySQL恢复 obet ORA-00312 ORA-00704 ORA-00742 ORA-01110 ORA-01200 ORA-01555 ORA-01578 ORA-01595 ORA-600 2662 ORA-600 2663 ORA-600 3020 ORA-600 4000 ORA-600 4137 ORA-600 4193 ORA-600 4194 ORA-600 16703 ORA-600 kcbzib_kcrsds_1 ORA-600 KCLCHKBLK_4 ORA-600 kcratr_nab_less_than_odr ORA-15042 ORA-15196 ORACLE 12C oracle dul ORACLE PATCH Oracle Recovery Tools oracle加密恢复 oracle勒索 oracle勒索恢复 oracle异常恢复 ORACLE恢复 Oracle 恢复 ORACLE数据库恢复 oracle碎片 OSD-04016 YOUR FILES ARE ENCRYPTED 比特币加密文章分类
- MongoDB (1)
- MongoDB恢复 (1)
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (112)
- 数据库 (1,881)
- DB2 (22)
- MySQL (82)
- Oracle (1,706)
- Data Guard (53)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (168)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (72)
- Oracle Bug (8)
- Oracle RAC (56)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (29)
- Oracle备份恢复 (660)
- Oracle安装升级 (108)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (91)
- PostgreSQL (37)
- pdu工具 (7)
- PostgreSQL恢复 (13)
- SQL Server (34)
- SQL Server恢复 (14)
- TimesTen (7)
- 达梦数据库 (5)
- 达梦恢复 (3)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (51)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (34)
- MongoDB (1)
-
最近发表
- 记录一次云存储资源到期之后引起的数据库恢复
- Firebird 损坏数据库数据抢救工具—firebirdext
- Oracle 19c 202610补丁(RUs+OJVM)-19.33
- 由于con$.con#值达到极限,触发数据库增加约束报ORA-600 12807错误
- MongoDB 离线提取工具—mongoext
- .bres勒索病毒加密数据库dmp文件可恢复
- ORA-600 krsm_mrp_rebuild_lf_list.lno_mismatch
- 记录一次0丢失的ORA-00354: 损坏重做日志块标头故障恢复
- 不当数据库恢复操作导致一个月数据丢失
- obet快速修复oracle 位图损坏块
- 不太常见的10.2.0.1的oracle redo损坏恢复
- obet forcecopy功能抢救硬件故障中的数据文件
- kcratr_nab_less_than_odr和system坏块故障处理
- 通过obet 恢复system坏块,打开数据库
- obet dbv功能完整说明
- 分享一例运行在aix上的sap系统数据库恢复过程
- OBET-Oracle Block Editor Tool使用说明
- 几乎动用了所有手段的Oracle故障恢复
- Oracle Block Edit Tool (obet) 功能增强–2026.07
- Oracle 19c 202607补丁(RUs+OJVM)-19.32
标签归档:bbed
在win 64位平台上运行bbed(支持ORACLE 10g 11g 12c)
很多朋友反馈在win 64位操作系统之上无法使用bbed(包括9i,10g,11g,12c数据库版本),以前写过一篇文章,完美实现了在win平台的各个版本的数据库版本之上实现使用bbed(在win中运行bbed程序),可惜很遗憾没有注明平台信息,留下了不少疑问,今天在自己的电脑上再次实现此功能,用来证明win 64位的平台之上也可以运行bbed程序(数据库版本包括10g,11g,12c,在10g之前x86架构中无win 64位版本数据库,因此我也无能为力).
****最近研发的Oracle数据块编辑工具( Oracle Block Editor Tool)-obet可以完美代替bbed****
操作系统版本64位
本机测试为win 7 64位操作系统

数据库版本64位
本机测试数据库版本为12.1.0.2 64位版本(因为12c都支持,那对于10g/11g更是不在话下)
bbed运行情况
这里的bbed只是运行起来,并未加载数据文件,因此这里看到的FILENAME为空,但是不妨碍证明bbed可以在win平台,64位的数据库中运行
整体证明win 64位平台,64位数据库运行bbed
一图抵上千言万语,让我们使用一幅完整截图来说明,bbed是可以运行在win 64位平台的64位版本的数据库之上(而且这里使用了目前最新的12.1.0.2版本)
dbms_diskgroup拷贝block/datafile
对于asm而言,如果我们要操作里面的数据文件,虽然从11.2开始有asmcmd的cp可能进行拷贝,但是如果想对数据文件中的某个block进行拷贝出来asm到文件系统(或者拷贝某个文件系统的block到asm中),还是比较麻烦的事情(请见:bbed修改ASM中数据)。其实oracle官方提供了dbms_diskgroup这个包,可以通过sqlplus直接操作asm里面的block/datafile,非常方便,这里简单列举几个例子:
dbms_diskgroup获取asm中文件属性
SQL> declare
2 v_filename varchar2(4000);
3 v_filetype number;
4 v_filesize number;
5 v_lbks number;
6 v_typename varchar2(4000);
7 begin
8 dbms_output.enable(5000);
9 v_filename := '&file_name';
10 dbms_diskgroup.getfileattr(v_filename,v_filetype,v_filesize,v_lbks);
11 select decode(v_filetype,1,'Control File',2,'Data File',3,'Online Log File',4,'Archive Log',5,'Trace File',6,'Temporary File',
12 7,'Not Used',8,'Not Used',9,'Backup Piece',10,'Incremental Backup Piece',11,'Archive Backup Piece',12,'Data File Copy',
13 13,'Spfile',14,'Disaster Recovery Configuration',15,'Storage Manager Disk',16,'Change Tracking File',17,'Flashback Log File',
14 18,'DataPump Dump File',19,'Cross Platform Converted File',20,'Autobackup',21,'Any OS file',22,'Block Dump File',
15 23,'CSS Voting File',24,'CRS') into v_typename from dual;
16 dbms_output.put_line('File: '||v_filename); dbms_output.new_line;
17 dbms_output.put_line('Type: '||v_filetype||' '||v_typename); dbms_output.new_line;
18 dbms_output.put_line('Size (Logical Block Size): '||v_filesize); dbms_output.new_line;
19 dbms_output.put_line('Logical Block Size: '||v_lbks); dbms_output.new_line;
20 end;
21 /
Enter value for file_name: +DATA/xifenfei/datafile/system.256.878224279
old 9: v_filename := '&file_name';
new 9: v_filename := '+DATA/xifenfei/datafile/system.256.878224279';
File: +DATA/xifenfei/datafile/system.256.878224279
Type: 12 Data File Copy
Size (Logical Block Size): 94720
Logical Block Size: 8192
PL/SQL procedure successfully completed.
创建测试表t_xifenfei
SQL> create table t_xifenfei tablespace users
2 as select 'www.xifenfei.com' xifenfei from dual;
Table created.
SQL> select rowid,xifenfei from t_xifenfei;
ROWID XIFENFEI
------------------ ----------------
AAAVU3AAEAAAACrAAA www.xifenfei.com
SQL> select
2 dbms_rowid.rowid_relative_fno(rowid) rel_fno,
3 dbms_rowid.rowid_block_number(rowid )block_no
4 from t_xifenfei;
REL_FNO BLOCK_NO
---------- ----------
4 171
SQL> alter system checkpoint;
System altered.
SQL> /
System altered.
SQL> alter system switch logfile;
System altered.
SQL> select name from v$datafile where file#=4;
NAME
--------------------------------------------------------------------------------
+DATA/xifenfei/datafile/users.259.878224279
dbms_diskgroup拷贝asm datafile 4 block 171
SQL> declare
2 v_AsmFilename varchar2(4000);
3 v_FsFilename varchar2(4000);
4 v_offstart number;
5 v_numblks number;
6 v_filetype number;
7 v_filesize number;
8 v_lbks number;
9 v_typename varchar2(4000);
10 v_pblksize number;
11 v_handle number;
12 begin
13 dbms_output.enable(500000);
14 v_AsmFilename := '&ASM_File_Name';
15 v_offstart := '&block_to_extract';
16 v_numblks := '&number_of_blocks_to_extract';
17 v_FsFilename := '&FileSystem_File_Name';
18 dbms_diskgroup.getfileattr(v_AsmFilename,v_filetype,v_filesize,v_lbks);
19 dbms_diskgroup.open(v_AsmFilename,'r',v_filetype,v_lbks,v_handle,v_pblksize,v_filesize);
20 dbms_diskgroup.close(v_handle);
21 select decode(v_filetype,1,'Control File',2,'Data File',3,'Online Log File',4,'Archive Log',5,'Trace File',6,'Temporary File',
22 7,'Not Used',8,'Not Used',9,'Backup Piece',10,'Incremental Backup Piece',11,'Archive Backup Piece',12,'Data File Copy',
23 13,'Spfile',14,'Disaster Recovery Configuration',15,'Storage Manager Disk',16,'Change Tracking File',17,'Flashback Log File',
24 18,'DataPump Dump File',19,'Cross Platform Converted File',20,'Autobackup',21,'Any OS file',22,'Block Dump File',
25 23,'CSS Voting File',24,'CRS') into v_typename from dual;
26 dbms_output.put_line('File: '||v_AsmFilename); dbms_output.new_line;
27 dbms_output.put_line('Type: '||v_filetype||' '||v_typename); dbms_output.new_line;
28 dbms_output.put_line('Size (in logical blocks): '||v_filesize); dbms_output.new_line;
29 dbms_output.put_line('Logical Block Size: '||v_lbks); dbms_output.new_line;
30 dbms_output.put_line('Physical Block Size: '||v_pblksize); dbms_output.new_line;
31 dbms_diskgroup.patchfile(v_AsmFilename,v_filetype,v_lbks,v_offstart,0,v_numblks,v_FsFilename,v_filetype,1,1);
32 end;
33 /
Enter value for asm_file_name: +DATA/xifenfei/datafile/users.259.878224279
old 14: v_AsmFilename := '&ASM_File_Name';
new 14: v_AsmFilename := '+DATA/xifenfei/datafile/users.259.878224279';
Enter value for block_to_extract: 171
old 15: v_offstart := '&block_to_extract';
new 15: v_offstart := '171';
Enter value for number_of_blocks_to_extract: 1
old 16: v_numblks := '&number_of_blocks_to_extract';
new 16: v_numblks := '1';
Enter value for filesystem_file_name: /tmp/xifenfei.dbf
old 17: v_FsFilename := '&FileSystem_File_Name';
new 17: v_FsFilename := '/tmp/xifenfei.dbf';
File: +DATA/xifenfei/datafile/users.259.878224279
Type: 12 Data File Copy
Size (in logical blocks): 640
Logical Block Size: 8192
Physical Block Size: 512
PL/SQL procedure successfully completed.
[grid@xifenfei ~]$ ls -l /tmp/xifenfei.dbf
-rw-r----- 1 grid oinstall 16384 Apr 28 15:55 /tmp/xifenfei.dbf
这里注意拷贝出来的block size 为8192,由于默认写了block 0信息,因此这里显示大小为2*block size=16384
bbed修改拷贝出来block内容
SQL> select dump('xifenfei',16) from dual;
DUMP('XIFENFEI',16)
-------------------------------------
Typ=96 Len=8: 78,69,66,65,6e,66,65,69
SQL> select dump('XIFENFEI',16) from dual;
DUMP('XIFENFEI',16)
-------------------------------------
Typ=96 Len=8: 58,49,46,45,4e,46,45,49
[oracle@xifenfei tmp]$ bbed filename='/tmp/xifenfei.dbf' blocksize=8192
Password:
BBED: Release 2.0.0.0.0 - Limited Production on Tue Apr 28 16:24:35 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED> show
FILE# 0
BLOCK# 1
OFFSET 0
DBA 0x00000000 (0 0,1)
FILENAME /tmp/xifenfei.dbf
BIFILE bifile.bbd
LISTFILE
BLOCKSIZE 8192
MODE Browse
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH 80
COUNT 512
LOGFILE log.bbd
SPOOL No
BBED> map
File: /tmp/xifenfei.dbf (0)
Block: 1 Dba:0x00000000
------------------------------------------------------------
KTB Data Block (Table/Cluster)
struct kcbh, 20 bytes @0
struct ktbbh, 96 bytes @20
struct kdbh, 14 bytes @124
struct kdbt[1], 4 bytes @138
sb2 kdbr[1] @142
ub1 freespace[8024] @144
ub1 rowdata[20] @8168
ub4 tailchk @8188
BBED> p *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0] @8168 0x2c
BBED> d /v offset 8168
File: /tmp/xifenfei.dbf (0)
Block: 1 Offsets: 8168 to 8191 Dba:0x00000000
-------------------------------------------------------
2c000110 7777772e 78696665 6e666569 l ,...www.xifenfei
2e636f6d 020624bc l .com..$.
<16 bytes per line>
BBED> r /x c
BBED-00200: invalid keyword (r)
BBED> x /rc
rowdata[0] @8168
----------
flag@8168: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8169: 0x00
cols@8170: 1
col 0[16] @8171: www.xifenfei.com
BBED> set mode edit
MODE Edit
BBED> set offset 8171
OFFSET 8171
BBED> set count 32
COUNT 32
BBED> d
File: /tmp/xifenfei.dbf (0)
Block: 1 Offsets: 8171 to 8191 Dba:0x00000000
------------------------------------------------------------------------
10777777 2e786966 656e6665 692e636f 6d020624 bc
<32 bytes per line>
BBED>
BBED> set offset +5
OFFSET 8176
BBED> d
File: /tmp/xifenfei.dbf (0)
Block: 1 Offsets: 8176 to 8191 Dba:0x00000000
------------------------------------------------------------------------
78696665 6e666569 2e636f6d 020624bc
<32 bytes per line>
BBED> m /x 58494645
File: /tmp/xifenfei.dbf (0)
Block: 1 Offsets: 8176 to 8191 Dba:0x00000000
------------------------------------------------------------------------
58494645 6e666569 2e636f6d 020624bc
<32 bytes per line>
BBED> set offset +4
OFFSET 8180
BBED> d
File: /tmp/xifenfei.dbf (0)
Block: 1 Offsets: 8180 to 8191 Dba:0x00000000
------------------------------------------------------------------------
6e666569 2e636f6d 020624bc
<32 bytes per line>
BBED> m /x 4e464549
File: /tmp/xifenfei.dbf (0)
Block: 1 Offsets: 8180 to 8191 Dba:0x00000000
------------------------------------------------------------------------
4e464549 2e636f6d 020624bc
<32 bytes per line>
BBED> d /v offset 8168
File: /tmp/xifenfei.dbf (0)
Block: 1 Offsets: 8168 to 8191 Dba:0x00000000
-------------------------------------------------------
2c000110 7777772e 58494645 4e464549 l ,...www.XIFENFEI
2e636f6d 020624bc l .com..$.
<16 bytes per line>
BBED> x /rc
rowdata[0] @8168
----------
flag@8168: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8169: 0x00
cols@8170: 1
col 0[16] @8171: www.XIFENFEI.com
BBED> sum apply
Check value for File 0, Block 1:
current = 0x3060, required = 0x3060
这里通过bbed把拷贝出来的datafile 4 block 171中的www.xifenfei.com修改为www.XIFENFEI.com
dbms_diskgroup拷贝os block to asm datafile 4 block 171
SQL> declare
2 v_FsFileName varchar2(4000);
3 v_AsmFileName varchar2(4000);
4 v_FsFileType number;
5 v_AsmFileType number;
6 v_offstart number;
7 v_filesize number;
8 v_lbks number;
9 v_typename varchar2(4000);
10 v_handle number;
11 error number;
12 txt varchar2(4000);
13 begin
14 dbms_output.enable(500000);
15 v_FsFileName := '&file_with_patched_block';
16 v_AsmFileName := '&file_to_patch_in_ASM';
17 v_offstart := '&block_to_patch';
18 dbms_diskgroup.getfileattr(v_AsmFileName,v_AsmFileType,v_filesize,v_lbks);
19 select decode(v_AsmFileType,1,'Control File',2,'Data File',3,'Online Log File',4,'Archive Log',5,'Trace File',6,'Temporary File',
20 7,'Not Used',8,'Not Used',9,'Backup Piece',10,'Incremental Backup Piece',11,'Archive Backup Piece',12,'Data File Copy',
21 13,'Spfile',14,'Disaster Recovery Configuration',15,'Storage Manager Disk',16,'Change Tracking File',
22 17,'Flashback Log File',
23 18,'DataPump Dump File',19,'Cross Platform Converted File',20,'Autobackup',21,'Any OS file',22,'Block Dump File',
24 23,'CSS Voting File',24,'CRS') into v_typename from dual;
25 dbms_output.put_line('File: '||v_AsmFileName); dbms_output.new_line;
26 dbms_output.put_line('Type: '||v_AsmFileType||' '||v_typename); dbms_output.new_line;
27 dbms_output.put_line('Size: '||v_filesize); dbms_output.new_line;
28 dbms_output.put_line('Logical Block Size: '||v_lbks); dbms_output.new_line;
29 dbms_diskgroup.patchfile(v_FsFileName,12,v_lbks,1,0,1,v_AsmFileName,v_AsmFileType,v_offstart,0);
30 end;
31 /
Enter value for file_with_patched_block: /tmp/xifenfei.dbf
old 15: v_FsFileName := '&file_with_patched_block';
new 15: v_FsFileName := '/tmp/xifenfei.dbf';
Enter value for file_to_patch_in_asm: +DATA/xifenfei/datafile/users.259.878224279
old 16: v_AsmFileName := '&file_to_patch_in_ASM';
new 16: v_AsmFileName := '+DATA/xifenfei/datafile/users.259.878224279';
Enter value for block_to_patch: 171
old 17: v_offstart := '&block_to_patch';
new 17: v_offstart := '171';
File: +DATA/xifenfei/datafile/users.259.878224279
Type: 12 Data File Copy
Size: 640
Logical Block Size: 8192
PL/SQL procedure successfully completed.
验证修改block是否正确
SQL> shutdown abort ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 952020992 bytes Fixed Size 2258960 bytes Variable Size 306186224 bytes Database Buffers 637534208 bytes Redo Buffers 6041600 bytes Database mounted. Database opened. SQL> select rowid,xifenfei from t_xifenfei; ROWID XIFENFEI ------------------ ---------------- AAAVU3AAEAAAACrAAA www.XIFENFEI.com
dbms_diskgroup拷贝asm datafile to os
SQL> declare
2 v_AsmFileName varchar2(4000);
3 v_FsFileName varchar2(4000);
4 v_filetype number;
5 v_filesize number;
6 v_lbks number;
7 v_typename varchar2(4000);
8 v_pblksize number;
9 v_handle number;
10 begin
11 dbms_output.enable(500000);
12 v_AsmFileName := '&ASM_file_name';
13 v_FsFileName := '&FileSystem_file_name';
14 dbms_diskgroup.getfileattr(v_AsmFileName,v_filetype,v_filesize,v_lbks);
15 dbms_diskgroup.open(v_AsmFileName,'r',v_filetype,v_lbks,v_handle,v_pblksize,v_filesize);
16 dbms_diskgroup.close(v_handle);
17 select decode(v_filetype,1,'Control File',2,'Data File',3,'Online Log File',4,'Archive Log',5,'Trace File',6,'Temporary File',
18 7,'Not Used',8,'Not Used',9,'Backup Piece',10,'Incremental Backup Piece',11,'Archive Backup Piece',12,'Data File Copy',
19 13,'Spfile',14,'Disaster Recovery Configuration',15,'Storage Manager Disk',16,'Change Tracking File',17,'Flashback Log File',
20 18,'DataPump Dump File',19,'Cross Platform Converted File',20,'Autobackup',21,'Any OS file',22,'Block Dump File',
21 23,'CSS Voting File',24,'CRS') into v_typename from dual;
22 dbms_output.put_line('File: '||v_AsmFileName); dbms_output.new_line;
23 dbms_output.put_line('Type: '||v_filetype||' '||v_typename); dbms_output.new_line;
24 dbms_output.put_line('Size (in logical blocks): '||v_filesize); dbms_output.new_line;
25 dbms_output.put_line('Logical Block Size: '||v_lbks); dbms_output.new_line;
26 dbms_output.put_line('Physical Block Size: '||v_pblksize); dbms_output.new_line;
27 dbms_diskgroup.patchfile(v_AsmFileName,v_filetype,v_lbks,1,0,v_filesize,v_FsFileName,2,1,1);
28 end;
29 /
Enter value for asm_file_name: +DATA/xifenfei/datafile/users.259.878224279
old 12: v_AsmFileName := '&ASM_file_name';
new 12: v_AsmFileName := '+DATA/xifenfei/datafile/users.259.878224279';
Enter value for filesystem_file_name: /tmp/users01.dbf
old 13: v_FsFileName := '&FileSystem_file_name';
new 13: v_FsFileName := '/tmp/users01.dbf';
File: +DATA/xifenfei/datafile/users.259.878224279
Type: 12 Data File Copy
Size (in logical blocks): 640
Logical Block Size: 8192
Physical Block Size: 512
PL/SQL procedure successfully completed.
[grid@xifenfei ~]$ ls -l /tmp/users01.dbf
-rw-r----- 1 grid oinstall 5251072 Apr 28 16:39 /tmp/users01.dbf
通过上述几个简单例子说明:dbms_diskgroup可以看asm file的属性,可以拷贝asm中的datafile中的某个block到os,也可以从os拷贝到asm,可以从asm中直接拷贝文件文件到os等功能
使用bbed 修复I_OBJ4 index 报ORA-8102错误
数据库执行创建表操作报ORA-8102错误
SQL> startup
ORACLE instance started.
Total System Global Area 1570009088 bytes
Fixed Size 2253584 bytes
Variable Size 469765360 bytes
Database Buffers 1090519040 bytes
Redo Buffers 7471104 bytes
Database mounted.
Database opened.
SQL> create table t1 as select * from dba_users;
create table t1 as select * from dba_users
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-08102: index key not found, obj# 87404, file 1, block 97266 (2)
分析ORA-8102错误
SQL> col OBJECT_NAME for a30
SQL> select object_name,object_type from dba_objects where object_id=87404;
OBJECT_NAME OBJECT_TYPE
------------------------------ -------------------
I_OBJ4 INDEX
SQL> select /*+ index(t i_obj4) */ DATAOBJ#,type#,owner# from obj$ t
minus
2 3 select /*+ full(t1) */ DATAOBJ#,type#,owner# from obj$ t1;
DATAOBJ# TYPE# OWNER#
---------- ---------- ----------
87420 0 0
SQL> select /*+ full(t1) */ DATAOBJ#,type#,owner# from obj$ t1
2 minus
3 select /*+ index(t i_obj4) */ DATAOBJ#,type#,owner# from obj$ t
4 ;
DATAOBJ# TYPE# OWNER#
---------- ---------- ----------
87422 0 0
SQL> alter system dump datafile 1 block 97266;
System altered.
SQL> select value from v$diag_info where name='Default Trace File';
VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/xifenfei/xifenfei/trace/xifenfei_ora_27037.trc
SQL> ALTER SESSION SET EVENTS '802 trace name errorstack level 3';
Session altered.
SQL> create table t1 as select * from dual;
create table t1 as select * from dual
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-08102: index key not found, obj# 87404, file 1, block 97266 (2)
SQL> select value from v$diag_info where name='Default Trace File';
VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/xifenfei/xifenfei/trace/xifenfei_ora_27037.trc
*** 2015-03-14 14:46:33.640
kdk key 8102.2:
ncol: 4, len: 16
key: (16): 04 c3 09 4b 17 01 80 01 80 06 00 41 7f 25 00 28
mask: (4096):
*** 2015-03-14 14:46:33.644
dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x0, level=3, mask=0x0)
----- Error Stack Dump -----
----- Current SQL Statement for this session (sql_id=4yyb4104skrwj) -----
update obj$ set obj#=:4, type#=:5,ctime=:6,mtime=:7,stime=:8,status=:9,dataobj#=:10,flags=:11,
oid$=:12,spare1=:13, spare2=:14 where owner#=:1 and name=:2 and namespace=:3 and
remoteowner is null and linkname is null and subname is null
这里可以的出来由于obj$中的dataobj#为87422,而i_obj4中的dataobj#为87420,因此两者不一致。
另外通过相关trace发现,在创建表操作中会调用update obj$的一个递归操作,而该操作会更新dataobj#,但是由于该值在表和index中不匹配,因此出现ORA-08102导致创建表不成功
使用bbed 修复ORA-8102
[oracle@localhost ~]$ bbed blocksize=8192 mode=edit filename='/u01/app/oracle/oradata/xifenfei/system01.dbf'
Password:
BBED: Release 2.0.0.0.0 - Limited Production on Sat Mar 14 14:55:22 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED> set block 97266
BLOCK# 97266
BBED> f /x 04c3
File: /u01/app/oracle/oradata/xifenfei/system01.dbf (0)
Block: 97266 Offsets: 2714 to 3225 Dba:0x00000000
------------------------------------------------------------------------
04c3094a 5f02c115 01800600 417f2500 0f000204 c3094b14 02c11501 80060041
7f25000e 000204c3 094b1202 c1140180 0600417f 25000d00 0004c309 4b150180
<32 bytes per line>
BBED> f
File: /u01/app/oracle/oradata/xifenfei/system01.dbf (0)
Block: 97266 Offsets: 2733 to 3244 Dba:0x00000000
------------------------------------------------------------------------
04c3094b 1402c115 01800600 417f2500 0e000204 c3094b12 02c11401 80060041
7f25000d 000004c3 094b1501 80018006 00417f25 00280100 04c3094b 10018001
<32 bytes per line>
BBED> f
File: /u01/app/oracle/oradata/xifenfei/system01.dbf (0)
Block: 97266 Offsets: 2752 to 3263 Dba:0x00000000
------------------------------------------------------------------------
04c3094b 1202c114 01800600 417f2500 0d000004 c3094b15 01800180 0600417f
25002801 0004c309 4b100180 01800600 417f2500 28000004 c3094b08 02c10201
<32 bytes per line>
BBED> f
File: /u01/app/oracle/oradata/xifenfei/system01.dbf (0)
Block: 97266 Offsets: 2771 to 3282 Dba:0x00000000
------------------------------------------------------------------------
04c3094b 15018001 80060041 7f250028 010004c3 094b1001 80018006 00417f25
00280000 04c3094b 0802c102 01800600 417f2500 24000004 c3094b09 02c10201
<32 bytes per line>
BBED> f
File: /u01/app/oracle/oradata/xifenfei/system01.dbf (0)
Block: 97266 Offsets: 2789 to 3300 Dba:0x00000000
------------------------------------------------------------------------
04c3094b 10018001 80060041 7f250028 000004c3 094b0802 c1020180 0600417f
25002400 0004c309 4b0902c1 02018006 00417f25 00250000 04c3094b 0a02c103
<32 bytes per line>
BBED> set count 32
COUNT 32
BBED> set offset 2771
OFFSET 2771
BBED> d
File: /u01/app/oracle/oradata/xifenfei/system01.dbf (0)
Block: 97266 Offsets: 2771 to 2802 Dba:0x00000000
------------------------------------------------------------------------
04c3094b 15018001 80060041 7f250028 010004c3 094b1001 80018006 00417f25
<32 bytes per line>
BBED> set offset +4
OFFSET 2775
BBED> d
File: /u01/app/oracle/oradata/xifenfei/system01.dbf (0)
Block: 97266 Offsets: 2775 to 2806 Dba:0x00000000
------------------------------------------------------------------------
15018001 80060041 7f250028 010004c3 094b1001 80018006 00417f25 00280000
<32 bytes per line>
BBED> m /x 17
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /u01/app/oracle/oradata/xifenfei/system01.dbf (0)
Block: 97266 Offsets: 2775 to 2806 Dba:0x00000000
------------------------------------------------------------------------
17018001 80060041 7f250028 010004c3 094b1001 80018006 00417f25 00280000
<32 bytes per line>
BBED> sum apply
Check value for File 0, Block 97266:
current = 0x7955, required = 0x7955
BBED> verify
DBVERIFY - Verification starting
FILE = /u01/app/oracle/oradata/xifenfei/system01.dbf
BLOCK = 97266
Block 97266 is corrupt
Corrupt block relative dba: 0x00417bf2 (file 0, block 97266)
Fractured block found during verification
Data in bad block:
type: 6 format: 2 rdba: 0x00417bf2
last change scn: 0x0000.00102ed8 seq: 0x1 flg: 0x06
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x2ed80602
check value in block header: 0x7955
computed block checksum: 0x0
DBVERIFY - Verification complete
Total Blocks Examined : 1
Total Blocks Processed (Data) : 0
Total Blocks Failing (Data) : 0
Total Blocks Processed (Index): 0
Total Blocks Failing (Index): 0
Total Blocks Empty : 0
Total Blocks Marked Corrupt : 1
Total Blocks Influx : 2
Message 531 not found; product=RDBMS; facility=BBED
BBED> set offset 8188
OFFSET 8188
BBED> d
File: /u01/app/oracle/oradata/xifenfei/system01.dbf (0)
Block: 97266 Offsets: 8188 to 8191 Dba:0x00000000
------------------------------------------------------------------------
0206d82e
<32 bytes per line>
BBED> m /x 01
File: /u01/app/oracle/oradata/xifenfei/system01.dbf (0)
Block: 97266 Offsets: 8188 to 8191 Dba:0x00000000
------------------------------------------------------------------------
0106d82e
<32 bytes per line>
BBED> sum
Check value for File 0, Block 97266:
current = 0x7955, required = 0x7956
BBED> sum apply
Check value for File 0, Block 97266:
current = 0x7956, required = 0x7956
BBED> verify
DBVERIFY - Verification starting
FILE = /u01/app/oracle/oradata/xifenfei/system01.dbf
BLOCK = 97266
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
通过bbed修改i_obj4中的dataobj#值使之和obj$中对应值一致
验证确认ORA-8102被修复
SQL> shutdown abort ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 1570009088 bytes Fixed Size 2253584 bytes Variable Size 469765360 bytes Database Buffers 1090519040 bytes Redo Buffers 7471104 bytes Database mounted. Database opened. SQL> create table t1 as select * from dual; Table created.
通过使用bbed修改index值后,ORA-8102问题解决,可以执行创建表操作
姊妹篇见:通过bbed修改obj$中dataobj$重现I_OBJ4索引报ORA-08102错误

加我微信(17813235971)
加我QQ(107644445)

