Oracle数据库报错Ora-00600 [4193] When Opening Or Shutting Down A Database

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:659

Oracle数据库报错Ora-00600 [4193] When Opening Or Shutting Down A Database

[size=15.5pt]1、ORA-00600 4193故障现象介绍
[size=12.5pt]一套数据库出现Ora-600 [4193] 报错,查看alert.log日志,发现以下报错,以下来自oracle metalink Doc :
Tue Jul 17 13:38:13 2007
Errors in file /home/oracle/oracle/product/10.2.0/yms/rdbms/log/yms_smon_8337.trc:
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [4193], [3552], [3554], [], [], []
根据alert查看yms_smon_8337.trc:
SO: 0xdfaec728, type: 24, owner: 0xdf266580, flag: INIT/-/-/0x00
(buffer) PR: 0xdf1f1338 FLG: 0x1000
class bit: 0x80000
kcbbfbp: [BH: 0xded4bf40, LINK: 0xdfaec768]
kcbbfbx[0]: [BH: 0xdece41d8, LINK: 0xdfaec788]
where: ktuwh01: ktugus, why: 0
buffer tsn: 2 rdba: 0x00c00002 (3/2)
scn: 0x0000.03c95628 seq: 0x01 flg: 0x00 tail: 0x56280e01
frmt: 0x02 chkval: 0x0000 type: 0x0e=KTU UNDO HEADER W/UNLIMITED EXTENTS
BH (0xdece41d8) file#: 3 rdba: 0x00c003b6 (3/950) class: 20 ba: 0x11d6ba000
set: 6 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0
dbwrid: 0 obj: -1 objn: 0 tsn: 2 afn: 3
hash: [df870f70,df870f70] lru: [dece4488,dece4028]
obj-flags: object_ckpt_list
ckptq: [dedac4a0,ded47cb8] fileq: [dedac500,ded47cc8] objq: [ded47d78,db7bfd78]
use: [dfaec788,dfaec788] wait: [NULL]
st: XCURRENT md: EXCL tch: 0
flags: mod_started gotten_in_current_mode block_written_once
change state: ACTIVE
change count: 1
LRBA: [0xac3.4de07.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
Using State Objects
----------------------------------------
SO: 0xdfaec728, type: 24, owner: 0xdf266580, flag: INIT/-/-/0x00
(buffer) PR: 0xdf1f1338 FLG: 0x1000
class bit: 0x80000
kcbbfbp: [BH: 0xded4bf40, LINK: 0xdfaec768]
kcbbfbx[0]: [BH: 0xdece41d8, LINK: 0xdfaec788]
where: ktuwh01: ktugus, why: 0
buffer tsn: 2 rdba: 0x00c003b6 (3/950)
scn: 0x0000.03be3c7d seq: 0x5a flg: 0x04 tail: 0x3c7d025a
frmt: 0x02 chkval: 0x0868 type: 0x02=KTU UNDO BLOCK
----------------------------------------
Error 607 in redo application callback
TYP:0 CLS:20 AFN:3 DBA:0x00c003b6 OBJ:4294967295 SCN:0x0000.03be3c7d SEQ: 90 OP:5.1
ktudb redo: siz: 132 spc: 4462 flg: 0x0012 seq: 0x0de2 rec: 0x09
UNDO BLK:
xid: 0x0008.045.00006c61 seq: 0xde0 cnt: 0x60 irb: 0x60 icl: 0x0 flg: 0x0000

[size=15.5pt]2、ORA-00600 4193报错原因分析
When we try to apply redo to an undo block (forward changes are made by the application of redo to a block) we check that the seq# in the undo record matches the seq# in the redo record.
These seq# should be the same because when we apply a redo record we must apply it to the
correct version of the block.
We can only apply a redo record to a block that contains the same seq# as in the redo record.
If the seq# do not match then ORA-600[4193] [a]. is raised. .
Arg [a] Undo record seq number --> seq: 0xde0 = 3552
Arg Redo record seq number --> seq: 0x0de2 = 3554

This implies some kind of block corruption in either the redo or the undo block.

[size=15.5pt]3、ORA-00600 4193故障解决方法

第一种情况:数据库目前是OPEN的
1) Find out the rollback segment, based on the first part of the xid: 0x0008.045.00006c61
usn=8 is the segment_id
select segment_name,status from dba_rollback_segs where segment_id=8;
_SYSSMU8$ ONLINE

2) Dump the transaction table of the rollback segment to see if all TX are commited:
alter system dump undo header "_SYSSMU8$";

3) check the trace file created under user_dump_dest
In the trace file search for the Keyword "TRN TBL"

TRN TBL::

index state cflags wrap# uel scn dba
-----------------------------------------------------------------------------
0x00 9 0x00 0x21eb1 0x0023 0x0000.d28c43e9 0x00000000 ......
state=9 means transaction is committed

4) offline the rollback segment:
alter system set "_smu_debug_mode"=4;
alter rollback segment "_SYSSMU8$" offline;

select status from dba_rollback_segs where segment_id=8;

5) if STATUS=OFFLINE
drop rollback segment "_SYSSMU8$";
alter system set "_smu_debug_mode"=0;

第二种情况:如果数据库未打开
[color=#80080]1. [color=#80080]
[color=#80080]a) If using rollback segments, remove the rollback_segments line from init.ora, and open database
[color=#80080]
[color=#80080] b) If using undo segments set undo_management = manual in init.ora/spfile, and try to open database.
[color=#80080]
[color=#80080]2.
[color=#80080]If database opens means all transactions are committed, and you can drop the rollback segment or the undo tablespace

本文标签:
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】