咨询微信: dbservice1234 7 x 24 在线支持!

Oracle ORA-600[4147]

Oracle ORA-600[4147]

If you cannot recover the data by yourself, ask Parnassusdata, the professional ORACLE database recovery team for help.

Parnassusdata Software Database Recovery Team

Service Hotline:  +86 13764045638 E-mail: service@parnassusdata.com

 

ORA-600[4147][a][b] it’s a corruption in the undo segment.

Block not new enough (Undo) Sequences match but count wrong.

 

[a] Record number from the UBA we want to look at. [b] Count on the Undo block header.

 

This error is raised when we are looking at a data block, and need to read the undo pointed at by the UBA(eg. for CR) but the record number from the UBA we want to look at doesn’t exist in the undo block header.

 

The UNDO block we are looking at is dumped to the trace file before the ORA-600[4147] and call stack.

 

E.g. in 10.1.0.5

 

The undo record shows:

 

The problem undo segment is usn#=13(d in hex)

--> cnt: 0xa     = 10 means this TX has only 10 chained records

 

 

 

 

We need to update a record that is part of an uncommitted TX and the changes are in Uba: 0x00802fdc.13ae.0c.

 

Uba is the UndoBlockAddress =      dba.seq#.rec#

The Uba shows rec#= 0c -> the change is in  rec chain  12,

however the undo header shows this TX has only 10 chain records. Because of this mismatch we raise the  ora-600[4147[12][10]

LAST REVIEW DATE

 

July 30, 2007

 

INSTRUCTIONS FOR THE READER

 

A Troubleshooting Guide is provided to assist in debugging a specific issue. When possible, diagnostic tools are included in the document to assist in troubleshooting.

 

TROUBLESHOOTING DETAILS

 

Check the statement being run, as this undo block may only have been needed for consistent read and may no longer be needed. Also this error could appear if using IMU, see Bug 5381601/Bug 3383830.

If after bouncing database the error disappear means the cause was IMU, and customer should disable IMU.( alter system "_in_memory_undo" = false) If it’s indeed an undo segment corruption the solutions are:

1) drop and recreate the object that hits the error, if it’s possible or

2) restore the datafile that contains the bad undo segment from last good backup and recover or

3) If none of the above is possible you will have to handle the issue as a corrupted rollback segment using _offline_rollback_segments or _corrupted_rollback_segments, see Note 292891.1.