Block media recovery with standard edition

  • From: Mladen Gogala <gogala.mladen@xxxxxxxxx>
  • To: oracle-l-freelists <oracle-l@xxxxxxxxxxxxx>
  • Date: Tue, 8 Dec 2015 18:45:19 -0500

I ran into a corrupt block which makes rman backup fail:

released channel: backup_ch1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup plus archivelog command at 12/08/2015 01:58:24

RMAN-03009: failure of backup command on backup_ch1 channel at 12/08/2015 01:58:01
ORA-19566: exceeded limit of 0 corrupt blocks for file +DATA/prod/datafile/indexes.1030.873578613

OK, let's see what is it:

SQL> select file#,block# from v$database_block_corruption;

FILE# BLOCK#
---------- ----------
36 3650527

SQL> select owner,segment_name,segment_type
2 from dba_extents
3 where file_id=36 and
4 block_id<=3650527 and
5 block_id+blocks>=3650527;

no rows selected

Great! No segments are affected! Let's fix it:

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

connected to target database: PROD (DBID=204240718)

RMAN> recover corruption list;

Starting recover at 08-DEC-15
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 12/08/2015 15:23:40
RMAN-05009: Block Media Recovery requires Enterprise Edition

RMAN>

@#$%! and standard edition! Does anyone have an idea how to fix it, short of taking the entire tablespace offline and recovering it? The tablespace contains indexes for the central application schema and such a procedure would amount to downtime, which would sit well with the customer. I cannot use DBMS_REPAIR because this repairs objects and the corrupt block is not in any segment. Backup validate datafile 36 still finds corrupt blocks, which means that the subsequent backup will fail.

--
Mladen Gogala
Oracle DBA
http://mgogala.freehostia.com

Other related posts: