3 Replies Latest reply: Aug 23, 2011 11:53 PM by Jcgo-Oracle RSS

    ORA-01578: ORACLE data block corrupted (file # ORA-01578:

    Jcgo-Oracle
      Getting the above error; so I run:


      RMAN> Backup validate database;

      then i run:


      SQL> select * from V$DATABASE_BLOCK_CORRUPTION;

      no rows selected


      This is very strange!!

      any ideas?
      DB version is 10.2.0.5 and I wanted to run BLOCKRECOVER command.
        • 1. Re: ORA-01578: ORACLE data block corrupted (file # ORA-01578:
          Jcgo-Oracle
          I also ran DBVERIFY:



          DBVERIFY - Verification complete

          Total Pages Examined : 128000
          Total Pages Processed (Data) : 6460
          Total Pages Failing (Data) : 0
          Total Pages Processed (Index): 4185
          Total Pages Failing (Index): 0
          Total Pages Processed (Other): 7034
          Total Pages Processed (Seg) : 0
          Total Pages Failing (Seg) : 0
          Total Pages Empty : 110321
          Total Pages Marked Corrupt : 0
          Total Pages Influx : 0
          Highest block SCN : 3780615892 (2863.3780615892)
          [oracle@ausre002 product]$
          • 2. Re: ORA-01578: ORACLE data block corrupted (file # ORA-01578:
            AronTunzi
            Try first to identify which segment is involved in the block corruption:


            ORA-01578: ORACLE data block corrupted (file # *<FILE_ID>*, block #*<BLOCK_NR>*)

            Are you sure what segment was affected by corrupted block ?
            Execute this SQL below and see what segment was affected. I the segment is the index, for example then you just need drop it and re-create it again.

            SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME
            FROM DBA_EXTENTS
            WHERE FILE_ID = *<FILE_ID>* AND *<BLOCK_NR*> BETWEEN BLOCK_ID
            AND BLOCK_ID+BLOCKS -1;



            Identification of Corrupt Blocks+

            The V$DATABASE_BLOCK_CORRUPTION view displays blocks marked corrupt by database components such as RMAN, ANALYZE, dbv, and SQL queries. The following types of corruption result in rows added to this view:

            +1)Physical corruption (sometimes called media corruption)+

            - The database does not recognize the block: the checksum is invalid, the block contains all zeros, or the block header is fractured.

            - Physical corruption checking is enabled by default. You can turn off checksum checking by specifying the NOCHECKSUM option of the BACKUP command, but other physical consistency checks, such as checks of the block headers and footers, cannot be disabled.

            +2) Logical corruption+

            - The block has a valid checksum, the header and footer match, and so on, but the contents are logically inconsistent. Block media recovery cannot repair logical block corruption.

            - Logical corruption checking is disabled by default. You can turn it on by specifying the CHECK LOGICAL option of the BACKUP, RESTORE, RECOVER, and VALIDATE commands.

            The database can detect some corruptions by validating relationships between blocks and segments, but cannot detect them by a check of an individual block. The V$DATABASE_BLOCK_CORRUPTION view does not record this type of corruption.+
            • 3. Re: ORA-01578: ORACLE data block corrupted (file # ORA-01578:
              Jcgo-Oracle
              Thanks Aron:



              SEGMENT_TYPE
              ------------------
              OWNER||'.'||SEGMENT_NAME
              --------------------------------------------------------------------------------
              TABLE
              APEX_040000.WWV_FLOW_ACTIVITY_LOG1$


              So I am trying to restore datafile now.
              I also did DBV and nothing interesting came out of it. No blocks were marked corrupt.

              Analyze table showed:

              SQL> analyze table APEX_040000.WWV_FLOW_ACTIVITY_LOG1$ validate structure;
              analyze table APEX_040000.WWV_FLOW_ACTIVITY_LOG1$ validate structure
              *
              ERROR at line 1:
              ORA-01578: ORACLE data block corrupted (file # 7, block # 2595)
              ORA-01110: data file 7: '/u01/app/oracle/admin/refat/db/apex_tbs_01.dbf'


              I found a DBMS Repair script in ML so I may use that.
              I will keep you posted