Arreglando fallos en Oracle 11g con DRA y RMAN

El Data Recovery Advisor fue introducido en Oracle 11g, una característica que ofrece recomendaciones respecto a fallas de bases de datos y también las repara si es posible. El DRA depende del Health Monitor para diagnósticos y puede ser usado por medio de RMAN o Enterprise Manager.

A continuacion vamos a ver como recuperar con DRA y RMAN una base de datos en la que hemos borrado un datafile y no levanta la instancia:

oracle@test:~$ sqlplus ‘/ as sysdba’

SQL*Plus: Release 11.2.0.4.0 Production on Wed Mar 27 13:35:56 2013

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup

ORACLE instance started.

Total System Global Area 263639040 bytes

Fixed Size 1335892 bytes

Variable Size 213913004 bytes

Database Buffers 41943040 bytes

Redo Buffers 6447104 bytes

Database mounted.

ORA-01157: cannot identify/lock data file 5 – see DBWR trace file

ORA-01110: data file 5: ‘/opt/oracle/oradata/test/example01.dbf’

La base de datos no se abrió como era de esperarse, por lo que el siguiente paso es ejecutar RMAN para usar el DRA. Como quizás sepas, es necesario tener al menos montada la base de datos para poder usar RMAN:

oracle@test:~$ rman target /

Recovery Manager: Release 11.2.0.4.0 – Production on Wed Mar 27 13:36:56 2015

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

connected to target database: TEST (DBID=821368574, not open)

El siguiente paso es listar las fallas actuales conocidas:

RMAN> list failure;

using target database control file instead of recovery catalog

List of Database Failures

=========================

Failure ID Priority Status Time Detected Summary

———- ——– ——— ————- ——-

42 HIGH OPEN 27-MAR-15 One or more non-system datafiles are missing

Si quieres saber más detalles acerca de cierta falla también puedes hacerlo:

RMAN> list failure 42 detail;

List of Database Failures

=========================

Failure ID Priority Status Time Detected Summary

———- ——– ——— ————- ——-

42 HIGH OPEN 27-MAR-15 One or more non-system datafiles are missing

Impact: See impact for individual child failures

List of child failures for parent failure ID 42

Failure ID Priority Status Time Detected Summary

———- ——– ——— ————- ——-

145 HIGH OPEN 27-MAR-15 Datafile 5: ‘/opt/oracle/oradata/test/example01.dbf’ is missing

Impact: Some objects in tablespace EXAMPLE might be unavailable

El Health Monitor corre diagnósticos automáticamente cuando una falla elevada o crítica aparece, pero si por alguna razón no hay primero un diagnóstico hecho entonces no puedes obtener consejo respecto a esa falla. El siguiente paso es obtener consejo acerca de las fallas abiertas:

RMAN> advise failure;

List of Database Failures

=========================

Failure ID Priority Status Time Detected Summary

———- ——– ——— ————- ——-

42 HIGH OPEN 27-MAR-15 One or more non-system datafiles are missing

Impact: See impact for individual child failures

List of child failures for parent failure ID 42

Failure ID Priority Status Time Detected Summary

———- ——– ——— ————- ——-

145 HIGH OPEN 27-MAR-15 Datafile 5: ‘/opt/oracle/oradata/test/example01.dbf’ is missing

Impact: Some objects in tablespace EXAMPLE might be unavailable

analyzing automatic repair options; this may take some time

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=133 device type=DISK

analyzing automatic repair options complete

Mandatory Manual Actions

========================

no manual actions available

Optional Manual Actions

=======================

1. If file /opt/oracle/oradata/test/example01.dbf was unintentionally renamed or moved, restore it

Automated Repair Options

========================

Option Repair Description

—— ——————

1 NOARCHIVELOG mode restore datafile 5

Strategy: The repair includes complete media recovery with no data loss

Repair script: /opt/oracle/diag/rdbms/test/test/hm/reco_1400180561.hm

Como podrás imaginar, el DRA primero verifica prerequisitos relevantes e indispensables antes de dar cualquier opción de reparación automática, como respaldos de bases de datos. Las acciones manuales opcionales son recomendaciones sobre cómo resolver las fallas a mano, en lugar de dejar que el ADR las arregle automáticamente. Agunas veces tienes que llevar a cabo acciones manuales obligatorias antes de poder hacer cualquier reparación manual o automática, y en este caso no hay acciones manuales obligatorias a realizar.

Además, hay dos tipos de opciones de reparación: sin pérdida de datos y con pérdida de datos, asegúrate de revisar la estrategia para saber si la opción de reparación seleccionada no implica pérdida de datos, o por lo menos entender qué vas a perder si seleccionas esa opción en caso de que no haya mejor opción.

Adicionalmente, si quieres puedes revisar y modificar el script de reparación listado antes de hacer cualquier reparación, o puedes probar el procedimiento de reparación sin llevar a cabo ninguna reparación de esta forma:

RMAN> repair failure preview;

Strategy: The repair includes complete media recovery with no data loss

Repair script: /opt/oracle/diag/rdbms/orcl11g/orcl11g/hm/reco_1400180561.hm

contents of repair script:

# NOARCHIVELOG mode restore datafile

restore datafile 5;

recover datafile 5;

Si te convencen las opciones de reparación automáticas entonces puedes reparar las fallas abiertas de la base de datos de esta manera:

RMAN> repair failure;

Strategy: The repair includes complete media recovery with no data loss

Repair script: /opt/oracle/diag/rdbms/test/test/hm/reco_1400180561.hm

contents of repair script:

# NOARCHIVELOG mode restore datafile

restore datafile 5;

recover datafile 5;

Do you really want to execute the above repair (enter YES or NO)? YES

executing repair script

Starting restore at 27-MAR-15

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_DISK_1: restoring datafile 00005 to /opt/oracle/oradata/test/example01.dbf

channel ORA_DISK_1: reading from backup piece /opt/oracle/flash_recovery_area/TEST/backupset/2015_03_26/o1_mf_nnndf_TAG20130305T165413_8mdxwq5t_.bkp

channel ORA_DISK_1: piece handle=/opt/oracle/flash_recovery_area/TEST/backupset/2015_03_26/o1_mf_nnndf_TAG20130305T165413_8mdxwq5t_.bkp tag=TAG20130305T165413

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:06

Finished restore at 27-MAR-15

Starting recover at 27-MAR-15

using channel ORA_DISK_1

starting media recovery

media recovery complete, elapsed time: 00:00:01

Finished recover at 27-MAR-15

repair failure complete

Do you want to open the database (enter YES or NO)? YES

database opened

RMAN> exit

Recovery Manager complete.

Tienes que confirmar que realmente quieres ejecutar las reparaciones, y como paso final podrías querer abrir la base de datos antes de salir de RMAN. Y eso es todo! En este caso todo salió bien y la base de datos fue reparada sin pérdida de datos:

oracle@test:~$ sqlplus ‘/ as sysdba’

SQL*Plus: Release 11.2.0.4.0 Production on Wed Mar 27 13:43:10 2015

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> column INSTANCE_NAME format a20

SQL> column STATUS format a20

SQL> column DATABASE_STATUS format a20

SQL> select INSTANCE_NAME, STATUS, DATABASE_STATUS from v$instance;

INSTANCE_NAME STATUS DATABASE_STATUS

——————– ——————– ——————–

TEST OPEN ACTIVE

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.