ORA-01578 ORACLE data block corrupted (file # string, block # string) Cause: The data block indicated was corrupted, probably due to program errors.Action: Determine which object was corrupted using a command like the following: SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME FROM DBA_EXTENTSWHERE file = FILE_ID AND block BETWEEN BLOCK_ID AND BLOCK_ID+BLOCKS -1;where values for file and block are from the message. Try to restore the segment containing the block indicated. This may involve dropping the segment and re-creating it. If there is a trace file, report the errors in it to Oracle Customer Support. 

解决方案 »

  1.   

    Metaline solution:
    Doc ID:  Note:18976.1 
    Subject:  OERR: ORA-1578 "ORACLE data block corrupted (file # %s, block # %s)" 
    Type:  REFERENCE 
    Status:  PUBLISHED 
     Content Type:  TEXT/PLAIN 
    Creation Date:  02-MAR-1995 
    Last Revision Date:  03-JAN-2001 
     Error:  ORA-1578
    Text:   ORACLE data block corrupted (file # %s, block # %s)
    -------------------------------------------------------------------------------
    Cause:  The data block indicated was corrupted, mostly due to software
            errors.
    Action: Try to restore the segment containing the block indicated. This
            may involve dropping the segment and recreating it. If there
            is a trace file, report the errors in it to your ORACLE
            representative.
     
    *** Important: The notes below are for experienced users - See [NOTE:22080.1]Explanation:
            ORA-1578 is reported when a block is thought to be corrupt on read.
            Note that in Oracle8i the ORA-1578 reports the RELATIVE FILE NUMBER
            and not the ABSOLUTE FILE NUMBER. The error should be accompanied
            by an ORA-1110 error indicating the absolute file number and name.Diagnosis:
            a) Check for any ORA-600 errors in the ALERT and TRACE files.
            
            b) If the DB is open try to identify the corrupt object thus:             SELECT  segment_name ,  segment_type ,  owner , tablespace_name
                   FROM  sys.dba_extents
                  WHERE  file_id = &bad_file_id
                    AND  &bad_block_id BETWEEN block_id and block_id + blocks -1           (&bad_file_id is the ABSOLUTE file number in Oracle8)        c) This error is normal if accessing a block which has had
               a NOLOGGING (or UNRECOVERABLE) operation performed against
               it and has since been recovered. In Oracle8i this case also
               reports:
                "ORA-26040: Data block was loaded using the NOLOGGING option"       Actions:
            If the ORA-1578 is preventing database STARTUP see the
            "ORA-1578 on Startup" section of [NOTE:106638.1]        If the ORA-1578 is on a Rollback segment see [NOTE:106638.1]        For any other ORA-1578 situation see [NOTE:28814.1]
    Articles:
    Handling Block Corruptions in Oracle7/8/8i
      

  2.   

    重新创建该段(表)我没有意见,但怎么把我以前的数据转过来。
    另外,805上怎么没有dbms_repire包???
      

  3.   

    好象没有什么办法,如果你没有备份就参了.建议以后启动Oracle的日志自动转储.
      

  4.   

    不好意思,是dbms_repair包,8i才有???
    那我怎么恢复数据,唉,oracle真麻烦