mapletree

an Oracle player in Ottawa
正文

ORA-00607: Internal error occurred while making a change to a da

(2007-08-11 19:22:01) 下一个

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.

[ 打印 ]
阅读 ()评论 (0)
评论
目前还没有任何评论
登录后才可评论.