sql >> Database >  >> RDS >> Oracle

Het zit 'm in de details

Ik heb een Oracle 12.1.0.2 Multitenant-database waarvan ik een PDB probeer te verwijderen. Ik heb echter per ongeluk de opslag van de databaseserver verwijderd en de PDB heeft geen toegang tot zijn bestanden. Bij het loskoppelen van de PDB krijg ik de volgende foutmelding:

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'

Nou dat is jammer maar te verwachten in mijn geval. Ik heb per ongeluk de opslag voor deze PDB eruit gehaald voordat ik de stekker uit het stopcontact trok. De meeste literatuur op de ondersteuningssite van Oracle zegt dat je de PDB vanaf je back-up moet herstellen. Maar deze PDB is een productiekloon en ik wil er geen back-up van maken. Het is 25+TB en als er iets mis mee gaat, verwijder ik de PDB en maak ik een nieuwe productiekloon. Er is geen back-up nodig, behalve mei om me te redden van mijn domme fout om de opslag te verwijderen voordat ik de stekker uit het stopcontact haal.

Omdat ik de PDB niet kon loskoppelen, heb ik geprobeerd de PDB gewoon te laten vallen, maar ik krijg een andere foutmelding:

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

Nu voel ik me alsof ik in een Catch-22-situatie zit. Ik kan de PDB niet loskoppelen en ook niet laten vallen.

Ik heb deze fout bij vele gelegenheden gezien en heb altijd gewenst dat ik de PDB gewoon kon laten vallen zonder deze eerst te hoeven loskoppelen. Ik heb geen wens om dit in een andere CDB aan te sluiten. Ik wil gewoon dat het ding voorgoed weg is. En toen realiseerde ik me dat het in de details zit. Toen ik die ORA-65179-foutmelding las, concentreerde ik me op het laatste deel ervan. De PDB wordt niet eerst losgekoppeld. Ik heb deze foutmelding minstens 20 keer gelezen in mijn werk met Multitenant en ik miste het cruciale detail dat me ervan weerhield de PDB te laten vallen, die ik hieronder zal benadrukken.

ORA-65179:kan niet houden databestanden voor een inplugbare database die niet is losgekoppeld

Het detail dat ik steeds oversloeg was dat ik de databestanden niet kon HOUDEN. Betekent dit dat ik de PDB kan laten vallen als ik ook de gegevensbestanden verwijder?

SQL> drop pluggable database GOLD2019_08_22_125953 including datafiles;

 Pluggable database dropped. 

En ja hoor, ik zou het VOB gemakkelijk kunnen laten vallen. Soms zitten de meest interessante dingen in de details als we even wat rustiger aan doen en ervoor zorgen dat we alles voor ons zien in plaats van naar het einde te springen.


  1. Problemen met PostgreSQL-prestaties identificeren met trage query's

  2. Hoe te voorkomen dat dubbele records worden ingevoegd in SQL INSERT-query (5 eenvoudige manieren)

  3. Maak een Auto-Increment-kolom in SQLite

  4. Hoe importeer ik een SQL-bestand via de opdrachtregel in MySQL?