Home » RDBMS Server » Server Administration » ORA-00600 kcoapl_blkchk [3], [57936] [6103] and solution
ORA-00600 kcoapl_blkchk [3], [57936] [6103] and solution [message #172413] Tue, 16 May 2006 07:28 Go to next message
novastar9
Messages: 4
Registered: March 2006
Location: Belgium
Junior Member
Hi,

we are running Oracle 9.2.0.5
I had ORA-00600 errors while running a vb6 program; this is how i dealt with it. could you give some advice if it's ok?

this is the part in the alert log
Tue May 16 12:08:23 2006
Errors in file g:\oracle\admin\emprod\udump\emprod_s000_2540.trc:
ORA-00600: internal error code, arguments: [kcoapl_blkchk], [3], [57936], [6103], [], [], [], []

this is part of the trc :
(...)
Cursor 1 (39afb07c): CURBOUND curiob: 39ff52ac
curflg: 4e curpar: 0 curusr: 0 curses 449d8ca4
cursor name: SELECT excagrp.*, excagrp."ROWID" FROM excagrp WHERE csocea = ' EL' AND nagnea = 6305
child pin: 0, child lock: 5212a778, parent lock: 4674a350
xscflg: 100024, parent handle: 53404a60, xscfl2: 4240409
bhp size: 80/560
----------------------------------------
Cursor 2 (39afb0ac): CURBOUND curiob: 39ff6d5c
curflg: 44 curpar: 0 curusr: 0 curses 449d8ca4
cursor name: UPDATE EXCAGRP SET "DUPDEA" = :1 WHERE "CSOCEA" = :2 AND "NAGNEA" = :3 AND "DCRTEA" = :4 AND "DUPDEA" = :5 AND "NACSEA" IS NULL AND "NAGREA" IS NULL AND "CCAREA" IS NULL AND "ROWID" = :6
child pin: 5105e448, child lock: 5105d3f8, parent lock: 46751898
xscflg: 110664, parent handle: 4a4cd298, xscfl2: d500008
nxt: 3.0x00000520 nxt: 2.0x0000050c nxt: 1.0x00000224
Cursor frame allocation dump:
frm: -------- Comment -------- Size Seg Off
bind 0: dty=1 mxl=32(19) mal=00 scl=00 pre=00 oacflg=01 oacfl2=10 size=192 offset=0
bfp=062eff40 bln=32 avl=19 flg=05
value="2006-05-16 00:00:00"
(...)

I started using dbms.repair to check out block corruption in
the excagrp table

using the SYS account :

declare corr_count binary_integer;
begin
corr_count := 0;
dbms_repair.CHECK_OBJECT (
schema_name => 'ORACLE',
object_name => 'EXCAGRP',
partition_name => null,
object_type => dbms_repair.table_object,
repair_table_name => 'REPAIR_TEST',
flags => null,
relative_fno => null,
block_start => null,
block_end => null,
corrupt_count => corr_count
);
dbms_output.put_line(to_char(corr_count));
end;


SELECT * FROM REPAIR_Test;
i got one row so this means there is block corruption.

OBJECT_ID|TABLESPACE_ID|RELATIVE_FILE_ID|BLOCK_ID|CORRUPT_TYPE|SCHEMA_NAME|OBJECT_NAME|BASEOBJECT_NAME|PARTITION_NAME|CORRUPT_DESCRIP TION|REPAIR_DESCRIPTION|MARKED_CORRUPT|CHECK_TIMESTAMP|FIX_TIMESTAMP|REFORMAT_TIMESTAMP
28789|3|3|57936|6148|ORACLE|EXCAGRP||||mark block software corrupt|TRUE|16/05/2006 12:27:32||

then i checked the orphan indexes

DECLARE BROKEN_KEY binary_integer;
BEGIN
BROKEN_KEY := 0;
DBMS_REPAIR.DUMP_ORPHAN_KEYS(
SCHEMA_NAME => 'ORACLE' ,
OBJECT_NAME => 'EXCAGRL1',
OBJECT_TYPE => DBMS_REPAIR.INDEX_OBJECT,
REPAIR_TABLE_NAME => 'REPAIR_TEST',
ORPHAN_TABLE_NAME => 'ORPHAN_TEST',
KEY_COUNT => BROKEN_KEY);
END;
/

DECLARE BROKEN_KEY binary_integer;
BEGIN
BROKEN_KEY := 0;
DBMS_REPAIR.DUMP_ORPHAN_KEYS(
SCHEMA_NAME => 'ORACLE' ,
OBJECT_NAME => 'EXCAGRL2',
OBJECT_TYPE => DBMS_REPAIR.INDEX_OBJECT,
REPAIR_TABLE_NAME => 'REPAIR_TEST',
ORPHAN_TABLE_NAME => 'ORPHAN_TEST',
KEY_COUNT => BROKEN_KEY);
END;
/

Fixing corrupt block using the DBMS_REPAIR.FIX_CORRUPT_BLOCK procedure

DECLARE FIXED_BLOCKS INT;
BEGIN
FIXED_BLOCKS := 0;
DBMS_REPAIR.FIX_CORRUPT_BLOCKS(
SCHEMA_NAME => 'ORACLE',
OBJECT_NAME => 'EXCAGRP',
OBJECT_TYPE => DBMS_REPAIR.TABLE_OBJECT,
REPAIR_TABLE_NAME => 'REPAIR_TEST',
FIX_COUNT => FIXED_BLOCKS );
END;
/


select * from oracle.excagrp where nagnea = 6305

this gives ORA-01578 and ORA-01110 errors because the broken blocks are still seen by Oracle

Then i did the skipping corrupt blocks using the DBMS_REPAIR. SKIP_CORRUPT_BLOCK procedure

BEGIN
DBMS_REPAIR.skip_corrupt_blocks(
schema_name => 'ORACLE',
OBJECT_NAME => 'EXCAGRP',
OBJECT_TYPE => DBMS_REPAIR.TABLE_OBJECT,
FLAGS => DBMS_REPAIR.SKIP_FLAG);
END;
/

select * from oracle.excagrp where nagnea = 6305
NO ROWS RETURNED

So now the error seems corrected; I still have to pull out a backup though.

What do you advice now (besides logging a Tar) ?

It is bugging me enormously that we get this perhaps twice a month; we've already replaced disks last month. we use DELL servers and the Openmanage tool says there's no problem


thanks,
Andreas
Re: ORA-00600 kcoapl_blkchk [3], [57936] [6103] and solution [message #172473 is a reply to message #172413] Tue, 16 May 2006 13:16 Go to previous message
Mahesh Rajendran
Messages: 10707
Registered: March 2002
Location: oracleDocoVille
Senior Member
Account Moderator
>> Fixing corrupt block using the DBMS_REPAIR.FIX_CORRUPT_BLOCK procedure

DBMS_REPAIR will not actually repair the block. It will just mark the block.
And you are using a ROWID (a physical address) to fetch the data.
What kind of table is this? An IOT?
Previous Topic: rollback segment
Next Topic: SH schema in Oracle 10g
Goto Forum:
  


Current Time: Fri Sep 20 10:39:08 CDT 2024