Mit RMAN eine Tabelle wiederherstellen

gurbelunder

Datenbank-Guru
Beiträge
136
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
 
Werbung:

gurbelunder

Datenbank-Guru
Beiträge
136
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
 
Oben