Michael Schröpl: (etwas off-topic, aber dringend) Oracle: Versehentlich Datei gelöscht (Rollback-Segment)

Beitrag lesen

optimiere ich noch ein bißchen die Datenbank, d.h. lege das Rollback-Segment neu an.

Hast Du etwa nur *ein* Rollback-Segment?

Wenn man eine Oracle-Datenbank neu anlegt, bekommt, man ein paar kleine Rollback-Segmente mitgeliefert. Für "richtige" Anwendungen reichen die natürlich nicht, aber für ein Not-Login schon.

Also habe ist diese Segmente zwar leben lassen, mir aber zusätzlich einen eigenen Rollback-Tablespace mit zwei richtig schönen großen 100MB-Segmenten angelegt. Wenn ich an dem herumschraube, kann ich ihn mir zwar kaputt machen, aber ich ruiniere damit die Datenbank nicht komplett.

Außerdem habe ich den Source Code der Definition dieser Segmente als SQL-Skript und kann dieses mit SQL*Plus jederzeit wieder laufen lassen.

Ich darf mir halt nur nicht das *letzte* Rollback-Segment ruinieren ... sonst habe ich mich ausgesperrt.

Nur leider habe ich die dazugehörigen Dateien auf Unix-Ebene gelöscht, als das Segment noch online war - shit!

Das ist eine schöne Leistung ... unter welcher Benutzerkennung warst Du denn da unterwegs?
Meine Datenbank ist unter "oracle" installiert und andere Benutzer haben kein Schreibrecht auf dessen Dateien. (Du wirst doch nicht etwa mit "root" ... pfui Teufel!)

Jetzt kriege ich die DB nicht mehr hoch, und die Oracle-Hotline ist heute nicht erreichbar (Murphy...).

Aua, das ist aber eine schwache Leistung. Die 0130-irgendwas (aus dem Gedächnis: 5658???) hat mich bisher noch nie im Stich gelassen.
(Welche Wartungsvertragklasse hast Du denn?)

Ok, dachte ich, sichere ich die zum Rollback-Tablescape gehörenden Dateien vom Band zurück. Kein Problem, außer daß diese Dateien offensichtlich einen älteren Stand haben als die übrigen Datenbankdateien, und deshalb bekomme ich die Datenbank zwar gemounted, aber nicht geöffnet. Um das Rollbacksegment ordnungsgemäß zu löschen, muß die DB aber geöffnet sein - irgendwie beißt sich da die Katze in den Schwanz...

Eine Oracle-Datenbank kriegst Du m. E. nur am Stück zum Laufen - eine Delta-Sicherung nützt gar nichts.

Kurz und gut - weiß jemand zufällig, ob es eine Möglichkeit gibt, die DB *ohne* das (doch eigentlich ohnehin unwichtige) Rollbacksegment hochzukriegen? Ein Auskommentieren in der init.ora-Datei half nichts; Oracle sucht trotzdem nach der Datei bzw. meint, sie bräuchte Media Recovery.

Klar, weil Oracle ohne Rollback-Segmente keine Transaktion mitprotokollieren kann.

Hmmm ... man kann irgendwie bei der Durchführung einer Transaktion explizit das Transaktions-Logging abschalten. Ich habe das noch nie gemacht und hier (zuhause) auch keine Oracle-Handbücher - aber vielleicht gibt es in der "ini.ora" einen Parameter, mit dem man *das* global für alle Vorgänge abschalten kann. *Dann* wäre das Rollback-Segment möglicherweise nicht notwendig ... bedenke, daß Du dann aber mit der Rasierklinge  ohne Griff am offenen Herzen operierst!

Andere Möglichkeit: Du kannst mit "sqldba" auch ohne laufende Datenbank einiges drehen (nach "connect internal"). Damit kann man die Datenbank nicht nur hoch- und runterfahren, sondern auch Tablespaces verwalten etc.
Schau mal dessen Menü-Optionen durch - vielleicht ist auch dort der Schalter verfügbar, wie man das Transaktions-Logging komplett abschalten kann.
Wenn Du Pech hast, dann geht *das* auch nur bei laufender Datenbank - aber testen solltest Du es auf jeden Fall.

Kannst Du den Tablespace, der das Rollbacksegment enthält, mit "sqldba" auf "offline" setzen? Vielleicht startet die Datenbank dann ...

Ich erinnere mich vage, daß man in Oracle für jede Benutzerkennung einstellen kann, welches Rollback-Segment sie benutzen soll. (Irgendwie mußte ich meiner Datenbank ja beibringen, daß sie nicht den mitgelieferten "Kinderkram", sondern meine Großsegmente verwenden soll.)
Vielleicht ist also die Stelle, wo man diese Benutzer konfiguriert, diejenige, wo Du das Transaktionslogging abschalten kannst?

(Ich könnte zwar *alle* Dateien zurücksichern, nur würden dann einige Abschlüsse fehlen, die dann wiederholt werden müßten.)

Wenn Du genug Zeit hast, dann lohnt es sich, noch ein paar Stunden um die Daten zu kämpfen.

P.S.: Ich weiß, das ist hier off-topic, aber vielleicht kennt jemand ja auch ein ORACLE-Forum - oder eine Newsgroup?

Oracle ist kein sooo völlig fremdes Thema hier. (Vielleicht weiß Kess noch irgendwas, das Dir weiterhilft?)