sql >> Databasteknik >  >> RDS >> Oracle

Det finns i detaljerna

Jag har en Oracle 12.1.0.2 Multitenant-databas som jag försöker ta bort en PDB från. Men jag tog av misstag bort lagringen från databasservern och PDB kan inte komma åt dess filer. När jag kopplar ur PDB får jag följande felmeddelande:

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'

Tja, det är olyckligt men förväntat i mitt fall. Jag drog av misstag ut lagringen för detta PDB innan jag kopplade ur den. Det mesta av litteraturen på Oracles supportwebbplats säger att man ska återställa PDB från din säkerhetskopia. Men det här PDB är en klon av produktion och jag bryr mig inte om att säkerhetskopiera det. Det är 25+TB och om något går fel med det tar jag bort PDB och skapar en ny klon av produktionen. Ingen säkerhetskopiering behövs förutom maj för att rädda mig från mitt fåniga misstag att ta bort lagringen innan du drar ur kontakten.

Eftersom jag inte kunde koppla ur PDB, försökte jag bara släppa PDB men jag får ett annat felmeddelande:

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 känner jag mig som om jag är i en Catch-22-situation. Jag kan inte koppla bort det preliminära budgetförslaget och inte heller släppa det.

Jag har sett det här felet vid många tillfällen och alltid önskat att jag bara kunde släppa PDB utan att behöva koppla ur den först. Jag har ingen lust att koppla in detta till en annan CDB. Jag vill bara att saken ska försvinna för gott. Och det var då jag insåg att det ligger i detaljerna. När jag läste det där ORA-65179-felmeddelandet fokuserade jag på den senare delen av det. Det preliminära budgetförslaget kopplas inte ur först. Jag har läst det här felmeddelandet minst 20 gånger i mitt arbete med Multitenant och jag missade den kritiska detaljen som hindrade mig från att släppa det preliminära budgetförslaget som jag nu kommer att lyfta fram nedan.

ORA-65179:kan inte behålla datafiler för en pluggbar databas som inte är frånkopplad

Detaljen jag hoppade över var att jag inte kunde BEHÅLLA datafilerna. Betyder det att jag kan släppa PDB om jag också tar bort datafilerna?

SQL> drop pluggable database GOLD2019_08_22_125953 including datafiles;

 Pluggable database dropped. 

Visst kan jag lätt släppa det preliminära budgetförslaget. Ibland finns de mest intressanta sakerna i detaljerna om vi bara saktar ner lite och ser till att vi ser allt framför oss istället för att hoppa till slutet.


  1. Har Mysql en motsvarighet till @@ROWCOUNT som i mssql?

  2. Använder som jokertecken i förberett uttalande

  3. Hur skapar man en Oracle-sekvens som börjar med maxvärde från en tabell?

  4. Identitetsökningen hoppar i SQL Server-databasen