Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Mit RMAN eine Tabelle wiederherstellen

Dieses Thema im Forum "Oracle" wurde erstellt von gurbelunder, 29 Januar 2013.

  1. gurbelunder

    gurbelunder Datenbank-Guru

    Hallo an alle,

    ich habe gerade testweise eine Oracle 11g Instanz laufen.

    Um mein Fullbackup auszuprobieren, habe ich in einem Tablespace eine bestimmte Tabelle gelöscht und wollte diese nun wiederherstellen. Ich habe zwei Wege versucht:

    1. Tablespace wiederherstellen
    Code:
    SQL> alter tablespace bla offline immediate;
    RMAN> restore tablespace bla;
    RMAN> recover tablespace bla;
    SQL> alter tablespace bla online;
    
    2. Datendatei des Tablespace wiederherstellen
    Code:
    SQL> alter database datafile /pfad/zur/bla.dbf offline;
    RMAN> restore datafile /pfad/zur/bla.dbf;
    RMAN> recover datafile /pfad/zur/bla.dbf;
    SQL> alter database datafile /pfad/zur/bla.dbf online;
    
    Leider wird in beiden Fällen die gelöschte Tabelle nicht wiederhergestellt. Ich frage mich nur nun, wieso?
    Die Datenbank war ganz normal gestartet und läuft im ARCHIVELOG Mode.

    Danke für eure hinweise und Tipps.

    Gruß,
    David
     
  2. gurbelunder

    gurbelunder Datenbank-Guru

    Ich habe nun eine Idee, woran das liegen kann, dass die Tabelle nicht wiederhergestellt wird.

    Ich geh das nochmal durch. Als erstes lösche ich eine Tabelle:

    Code:
    sqlplus / as sysdba
    SQL> drop table tabelle;
    Das Löschen der Tabelle wird ja in das aktuelle Redolog geschrieben!

    Nun denk ich mir, "verdammt, das war ja die falsche Tabelle!", also wiederherstellen, dafür erst den Tablespace offline setzen:

    Code:
    SQL> alter tablespace test offline immediate;
    Dann den Tablespace wiederherstellen. Dabei holt ja den Befehl "restore" den Tablespace aus der letzten Sicherung zurück:

    Code:
    RMAN> restore tablespace test;
    Nun habe ich aber immer ein "recover" danach durchgeführt, welcher ja dann aus den archivelogfiles und den Redologfiles liest. Da aber im Redologfile steht, dass die Tabelle "tabelle" gelöscht wird, wird sie ja auch wieder gelöscht! Also lasse ich das "recover" einfach weg!

    Nun kann ich aber den Tablespace nicht mehr online nehmen, da folgender Fehler kommt:

    Code:
    SQL> alter tablespace test online;
    alter tablespace test online
    *
    FEHLER in Zeile 1:
    ORA-01113: Fur Datei '6' ist Media Recovery erforderlich
    ORA-01110: Datendatei 6: '/srv/ora/oradata/dbprod2/test.dbf'
    Nun muss ich doch irgendwie in der Lage sein, Oracle zu sagen, dass er die Änderungen aus dem Redolog nicht berücksichtigt. Ich kann ja jetzt nicht einfach eine Redolog Datei löschen oder die mit einem Editor öffnen und die dementsprechenden Zeilen entfernen...

    EDIT:
    Ich habe auch schon versucht, die Tabelle mittels flashback wieder aus dem dba_recyclebin zu holen, leider auch mit einem Fehler:

    Code:
    SQL> flashback table tabelle to before drop;
    flashback table tabelle to before drop
    *
    FEHLER in Zeile 1:
    ORA-38305: Objekt nicht in RECYCLE BIN
    Die Tabelle ist aber da:

    Code:
    SQL> select original_name from dba_recyclebin;
     
    ORIGINAL_NAME
    --------------------------------
    TABELLE_IDX005
    TABELLE
    
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden