Mam bazę danych Oracle 12.1.0.2 Multitenant, z której próbuję usunąć plik PDB. Jednak przez pomyłkę usunąłem pamięć z serwera bazy danych i PDB nie może uzyskać dostępu do swoich plików. Po odłączeniu PDB otrzymuję następujący błąd:
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'
Cóż, to niefortunne, ale w moim przypadku można się tego spodziewać. Przez pomyłkę wyrwałem pamięć dla tego pliku PDB, zanim go odłączyłem. Większość literatury w witrynie pomocy technicznej Oracle mówi, aby przywrócić plik PDB z kopii zapasowej. Ale ten plik PDB to klon produkcji i nie mam ochoty na tworzenie kopii zapasowych. To 25+TB i jeśli coś pójdzie nie tak, usuwam PDB i tworzę nowy klon produkcji. Nie jest potrzebna żadna kopia zapasowa, z wyjątkiem może, aby uchronić mnie przed głupim błędem usunięcia pamięci masowej przed odłączeniem.
Ponieważ nie mogłem odłączyć PDB, próbowałem po prostu upuścić PDB, ale pojawia się inny błąd:
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
Teraz czuję się jak w sytuacji paragrafu 22. Nie mogę odłączyć PDB ani go upuścić.
Widziałem ten błąd przy wielu okazjach i zawsze żałowałem, że nie mogę po prostu upuścić PDB bez konieczności wcześniejszego odłączania go. Nie mam ochoty podłączać tego do innego CDB. Chcę tylko, żeby to zniknęło na dobre. I wtedy zdałem sobie sprawę, że tkwi w szczegółach. Kiedy przeczytałem komunikat o błędzie ORA-65179, skupiłem się na jego drugiej części. PDB nie jest najpierw odłączany. Przeczytałem ten komunikat o błędzie co najmniej 20 razy w mojej pracy z Multitenant i przegapiłem krytyczny szczegół, który powstrzymał mnie przed porzuceniem pliku PDB, który teraz zaznaczę poniżej.
ORA-65179:nie można przechowywać pliki danych dla podłączanej bazy danych, która nie jest odłączona
Szczegółem, który ciągle pomijam, było to, że nie mogłem ZACHOWAĆ plików danych. Czy to oznacza, że mogę usunąć plik PDB, jeśli usunę również pliki danych?
SQL> drop pluggable database GOLD2019_08_22_125953 including datafiles; Pluggable database dropped.
Rzeczywiście, mógłbym łatwo upuścić PDB. Czasami najciekawsze rzeczy można znaleźć w szczegółach, jeśli tylko trochę zwolnimy i upewnimy się, że widzimy wszystko przed nami, zamiast skakać do końca.