Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:oracle_rman_recovery_advisor

Oracle 11g RMAN - Data Recovery Advisor

Mit dem Data Recovery Advisor kann ab der Version 11g R1 automatisch ein Fehler in der Datenbank erkannt werden, allerdings nicht in einer aktiven RAC Umgebung.

Als Workaround kann aber die Datenbank von einer Instance mit „cluster_database=false“ gestartet werden, dann kann der Data Recovery Advisor auch in einer RAC Umgebung verwendet werden.

Fehler anzeigen lassen mit "LIST FAILURE"

Datenbank zerstören

Im ersten Schritt zerstören wir nun eine Datendatei der Datenbank, unter MS Windows mit dem Oracle Kommando „ocopy“ (damit kann eine offene Datei überschrieben werden .-)„.

Setzen wir dann einen Checkpoint ab, kann die ganze Instance herunterfallen.

Besser eine Tabelle aus dem „zerstörten“ Tablespace abfragen, dann bleibt bei non-system Tablespaces die Datenbank meist oben.

# wo liegt die Daten und prüfen ob wir in Backup überhaupt dafür haben:
rman
rman>connect target
rman> report schema;
List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
..
4    2250     USERS                ***     D:\ORACLE\ORADATA01\GPI\USERS01.DBF
..
 
rman>list backup of database;
 
...
 
rman>restore validate database
...
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: validation complete, elapsed time: 00:04:05
Finished restore at 23-NOV-14
 
 
rman>exit;
 
 
#Datendatei mit einer andern Datei überschreiben überschreiben:
 
ocopy README.txt D:\ORACLE\ORADATA01\GPI\USERS01.DBF
 
ls D:\ORACLE\ORADATA01\GPI\USERS01.DBF
 
# .-) Nur noch 4k gross...
 
 
#Fehler von der DB erkennen lassen
 
sqlplus / as sysdba
 
# Schreibe in alle Datendatein
sql>alter system checkpoint;
 
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 5288
Session ID: 32 Serial number: 743
 
 
sql>exit
 
# Datenbank wieder im Mount modus starten
sqlplus / as sysdba
 
sql>startup mount
sql>exit

List Failure abfragen

rman
rman>CONNECT target
 
rman>list failure;
no failures found that MATCH specification
 
rman>ALTER DATABASE OPEN;
ORA-01157: cannot identify/LOCK DATA file 4 - see DBWR trace file
ORA-01110: DATA file 4: 'D:\ORACLE\ORADATA01\GPI\USERS01.DBF'
 
 
rman>list failure;
List OF DATABASE Failures
=========================
 
Failure ID Priority STATUS    TIME Detected Summary
---------- -------- --------- ------------- -------
782        HIGH     OPEN      23-NOV-14     One OR more non-system datafiles are corrupt

Details über das Kommando in der 11g R2 Dokumentation ⇒ LIST FAILURE

Datenbank Integrität mit dem DBMS_HM Package überprüfen

Falls die DB den Verlust der Datendatei überlebt hat, kann auch in SQL*Plus die Integrität einer Datenbank 11g mit dem Package DBMS_HM geprüft werden:

#Lasse die Integrität der Datenbank prüfen:
 
sql>BEGIN
  DBMS_HM.run_check (
    check_name   => 'DB Structure Integrity Check',
    run_name     => 'GPI_RUN_23_21_2014_v3');
END;
/
 
sql>SET long 62000
 
SELECT DBMS_HM.get_run_report('GPI_RUN_23_21_2014_v3')  AS report
  FROM dual
/  
 
REPORT
--------------------------------------------------------------------------------
Basic Run Information
 Run Name                     : GPI_RUN_23_21_2014_v3
 
 Run Id                       : 964
 CHECK Name                   : DB STRUCTURE Integri
ty CHECK
 Mode                         : MANUAL
 
 STATUS                       : COMPLETED
 START TIME                   : 2014-11-23 19:34:07.558000
+01:00
 END TIME                     : 2014-11-23 19:34:07.804000 +01:00
 Error Encountered            : 0
 
 SOURCE Incident Id           : 0
 
 NUMBER OF Incidents Created  : 0
 
INPUT Paramters FOR the Run
Run Findings AND Recommendations
 Finding
 
 Finding Name  : Corrupt Datafile
 
 Finding ID    : 968
 
 TYPE          : FAILURE
 
 STATUS        : OPEN
 
 Priority      : HIGH
 
 Message       : Datafile 4: 'D:\ORACLE\ORADATA01\GPI\USERS01.DBF' IS corrupt
 Message       : SOME objects IN tablespace USERS might be unavailable

see:

Vorschlag für die Reparatur anzeigen lassen mit "ADVISE FAILURE"

Nach dem der Fehler erkannt wurde mit advice failure eine Lösung anzeigen lassen:

 
RMAN> advise failure;
 
List OF DATABASE Failures
=========================
 
Failure ID Priority STATUS    TIME Detected Summary
---------- -------- --------- ------------- -------
782        HIGH     OPEN      23-NOV-14     One OR more non-system datafiles are corrupt
 
analyzing automatic repair options; this may take SOME TIME
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=397 device TYPE=DISK
analyzing automatic repair options complete
 
Mandatory Manual Actions
========================
no manual actions available
 
Optional Manual Actions
=======================
no manual actions available
 
Automated Repair Options
========================
OPTION Repair Description
------ ------------------
1      Restore AND recover datafile 4
  Strategy: The repair includes complete media recovery WITH no DATA loss
  Repair script: D:\ORACLE\diag\rdbms\gpi\gpi\hm\reco_2742225016.hm

Inhalt vom erzeugten Script:

   # restore AND recover datafile
   restore datafile 4;
   recover datafile 4;
   SQL 'alter database datafile 4 online';

Details über das Kommando in der 11g R2 Dokumentation ⇒ ADVISE FAILURE

Problem mit "REPAIR FAILURE" reparieren

Erzeugtes Script über REPAIR FAILURE PREVIEW anzeigen lassen

RMAN> repair failure preview;
 
Strategy: The repair includes complete media recovery WITH no DATA loss
Repair script: D:\ORACLE\diag\rdbms\gpi\gpi\hm\reco_2742225016.hm
 
contents OF repair script:
   # restore AND recover datafile
   restore datafile 4;
   recover datafile 4;
   SQL 'alter database datafile 4 online';

Automatisch reparieren lassen

RMAN> repair failure;
 
Strategy: The repair includes complete media recovery WITH no DATA loss
Repair script: D:\ORACLE\diag\rdbms\gpi\gpi\hm\reco_2742225016.hm
 
contents OF repair script:
   # restore AND recover datafile
   restore datafile 4;
   recover datafile 4;
   SQL 'alter database datafile 4 online';
 
Do you really want TO EXECUTE the above repair (enter YES OR NO)? YES
executing repair script
 
Starting restore at 23-NOV-14
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 00004 TO D:\ORACLE\ORADATA01\GPI\USERS01.DBF
channel ORA_DISK_1: reading FROM backup piece D:\ORACLE\FAST_RECOVERY_AREA\GPI\BACKUPSET\2014_11_23\O1_MF_NNND0_DB_LEVEL_0_DAY_0_B7454OL6_.BKP
channel ORA_DISK_1: piece handle=D:\ORACLE\FAST_RECOVERY_AREA\GPI\BACKUPSET\2014_11_23\O1_MF_NNND0_DB_LEVEL_0_DAY_0_B7454OL6_.BKP tag=DB_LEVEL_0_DAY_0
 
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed TIME: 00:04:25
Finished restore at 23-NOV-14
 
Starting recover at 23-NOV-14
USING channel ORA_DISK_1
 
starting media recovery
media recovery complete, elapsed TIME: 00:00:00
 
Finished recover at 23-NOV-14
 
SQL statement: ALTER DATABASE datafile 4 online
repair failure complete
 
Do you want TO OPEN the DATABASE (enter YES OR NO)? YES
DATABASE opened
 
RMAN> list failure;
 
no failures found that MATCH specification

Um die User Nachfrage zu überspringen, kann auch das Keyword „NOPROMPT“ verwendet werden.

Details über das Kommando in der 11g R2 Dokumentation ⇒ REPAIR FAILURE

Quellen

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
"Autor: Gunther Pipperr"
dba/oracle_rman_recovery_advisor.txt · Zuletzt geändert: 2014/11/24 09:58 von Gunther Pippèrr