ORA-00607: Internal error occurred while making a change to a data block ORA-00600: internal error code, arguments: [4193], [674], [558], [], [], [], [], [] Sat Aug 4 17:35:32 2007 Errors in file /opt/ora9/admin/ora9i/udump/ora9i_ora_4433.trc: ORA-00607: Internal error occurred while making a change to a data block ORA-00600: internal error code, arguments: [4193], [544], [542], [], [], [], [], [] Error 607 happened during db open, shutting down database USER: terminating instance due to error 607 Instance terminated by USER, pid = 4433 ORA-1092 signalled during: ALTER DATABASE OPEN... --explanation if instance crash, or shutdown abort, next time when restaring the DB, oracle try to apply redo to an undo block, it will check whether the seq# in the undo record matches the seq# in the redo record. oracle can only apply a redo record to a block the contains the same seq# as in the redo record. if the seq# does not match, ORA-600[4193][a][b] is raised [a]= undo record seq number [b]= redo record seq number this implies some kind of block corruption in either the redo or the undo block. --solution 1> drop the affected rollback segment --find out the affected rollback segment, based on the first part of xid (try to find xid in ora9i_ora_4433.trc ) select segment_name, status from dba_rollback_segs where segment_id = &segmnet_id; --dump the transaction table of the rollback segment to see if all TX are committed: alter system dump undo header &rollback_segment; --check the trace file created under user_dump_dest, search for "TRN TBL", is state=9, means the transaction is submitted --you can drop this segment without any loss sqlplus "/as sysdba" startup nomunt; alter database mount; alter rollback segment &rollback_segment offline; drop rollback segmetn &rollback_segment; alter database open; 2> if it is hard to locate the affected rollback segment, and you don't mind some data loss, you can just try to drop rollback segments one by one, until the DB is opened successfully. then create new rollback segments. |