Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Es liegt im Detail

Ich habe eine Oracle 12.1.0.2 Multitenant-Datenbank, aus der ich versuche, eine PDB zu entfernen. Ich habe jedoch versehentlich den Speicher vom Datenbankserver entfernt und die PDB kann nicht auf ihre Dateien zugreifen. Beim Trennen der PDB erhalte ich die folgende Fehlermeldung:

SQL> alter pluggable database GOLD2019_08_22_125953 unplug into '/tmp/GOLD2019_08_22_125953.xml';
alter pluggable database GOLD2019_08_22_125953 unplug into '/tmp/GOLD2019_08_22_125953.xml'
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 50277 - see DBWR trace file
ORA-01110: data file 50277:
'/u01/app/oracle/oradata/mt_golden_2019_08_22_125953/data03/datafile_20.dbf'

Das ist schade, aber in meinem Fall zu erwarten. Ich habe versehentlich den Speicher für diese PDB herausgezogen, bevor ich sie abgezogen habe. Die meiste Literatur auf der Support-Website von Oracle sagt, dass Sie die PDB aus Ihrer Sicherung wiederherstellen sollen. Aber diese PDB ist ein Klon der Produktion und ich möchte sie nicht sichern. Es ist 25+TB und wenn etwas damit schief geht, entferne ich die PDB und erstelle einen neuen Klon der Produktion. Es ist kein Backup erforderlich, außer möglicherweise, um mich vor meinem dummen Fehler zu bewahren, den Speicher vor dem Abziehen zu entfernen.

Da ich die PDB nicht trennen konnte, habe ich versucht, die PDB einfach zu löschen, aber ich erhalte eine andere Fehlermeldung:

SQL> drop pluggable database GOLD2019_08_22_125953 keep datafiles;
drop pluggable database GOLD2019_08_22_125953 keep datafiles
*
ERROR at line 1:
ORA-65179: cannot keep datafiles for a pluggable database that is not unplugged

Jetzt fühle ich mich wie in einer Catch-22-Situation. Ich kann die PDB weder trennen noch löschen.

Ich habe diesen Fehler bei vielen Gelegenheiten gesehen und mir immer gewünscht, ich könnte die PDB einfach löschen, ohne sie zuerst trennen zu müssen. Ich habe keine Lust, dies in ein anderes CDB zu stecken. Ich will nur, dass das Ding für immer weg ist. Und da wurde mir klar, dass es im Detail liegt. Als ich diese ORA-65179-Fehlermeldung las, konzentrierte ich mich auf den letzten Teil davon. Die PDB wird nicht zuerst ausgesteckt. Ich habe diese Fehlermeldung bei meiner Arbeit mit Multitenant mindestens 20 Mal gelesen und dabei das kritische Detail übersehen, das mich daran gehindert hat, die PDB zu löschen, was ich jetzt unten hervorheben werde.

ORA-65179:kann nicht beibehalten werden Datendateien für eine Plug-in-Datenbank, die nicht ausgesteckt ist

Das Detail, das ich immer wieder überspringe, war, dass ich die Datendateien nicht BEHALTEN konnte. Bedeutet das, dass ich die PDB löschen kann, wenn ich auch die Datendateien entferne?

SQL> drop pluggable database GOLD2019_08_22_125953 including datafiles;

 Pluggable database dropped. 

Sicher genug, ich könnte die PDB leicht fallen lassen. Manchmal finden sich die interessantesten Dinge in den Details, wenn wir nur ein bisschen langsamer werden und sicherstellen, dass wir alles vor uns sehen, anstatt zum Ende zu springen.