Ora-600 [4193] When Opening Or Shutting Down A Database (文档 ID 452662.1)

Errors in alert.log:

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], [], [], []


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

CHANGES

CAUSE

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].[b] is raised. .

Arg [a] Undo record seq number --> seq: 0xde0 = 3552
Arg [b] Redo record seq number --> seq: 0x0de2   = 3554

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

SOLUTION

A. If Database is opened:

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$_437891266$    ONLINE

2) Dump the transaction table of the rollback segment to see if all TX are commited:

    alter system dump undo header "_SYSSMU8$_437891266$"; 

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$_437891266$" 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;

B. If Database doesn't open:

1.   a) If using rollback segments, remove the rollback_segments line from init.ora, and open database

      b) If using undo segments set undo_management = manual in init.ora/spfile, and try to open database.

2. If database opens means all transactions are committed, and you can drop the rollback segment or the undo tablespace

3. if database doesn't open involve Oracle Support by opening an SR.

猜你喜欢

转载自blog.csdn.net/j_ychen/article/details/92770908