Ho un database multitenant Oracle 19.3 che sto tentando di applicare l'aggiornamento della versione 19.7. La RU è stata installata correttamente da Optch. Ma datapatch comporterà l'errore ORA-1114. Ricevo errori come i seguenti in uno dei registri:
SQL> alter database collegabile GOLD2020_06_18_123653 open read write instances=all;
altera il database collegabile GOLD2020_06_18_123653 apri leggi scrivi istanze=tutti
*
ERRORE alla riga 1:
ORA-65107:errore riscontrato durante l'elaborazione dell'attività corrente sull'istanza:1
ORA-17500:errore ODM:argomento non valido
ORA-01114:errore IO durante la scrittura del blocco nel file 12346 (blocco n. 1)
ORA-17500:errore ODM:argomento non valido
ORA-01114:errore IO durante la scrittura del blocco nel file 12345 (blocco n. 1)
ORA-17500:errore ODM:argomento non valido
Prima di poter spiegare qual è il problema, lasciami discutere di come utilizziamo Multitenant nel mio ambiente. Una volta alla settimana, abbiamo un cron job che crea una copia del nostro database di produzione (usando snapshot hardware basati su disco). Chiamiamo questa copia della produzione la nostra "immagine d'oro". Questa immagine dorata è inserita nel nostro database come uno dei nostri PDB. Il nome PDB è nel formato GOLDaaaa_mm_gg_hhmiss in modo da sapere quando è stato creato quel PDB.
Tutti i nostri database di sviluppo e test vengono quindi creati da questo PDB di immagine dorata. Quando ho bisogno di aggiornare DEV1 o TEST, chiudiamo semplicemente il PDB per DEV1 o TEST e lo rilasciamo. Quindi creiamo uno snapshot clone dell'ultima immagine dorata. Il PDB dell'immagine dorata è in modalità SOLA LETTURA per facilitare il clone dell'istantanea.
Come ho scritto qui, quando un PDB viene utilizzato come origine per un clone di snapshot, Oracle cambierà i permessi dei file in 220. Questo è Oracle che ci protegge da noi stessi. Non dovremmo essere autorizzati a modificare l'origine di un clone di snapshot, quindi Oracle rende i file di dati di sola lettura. Chiunque in Oracle abbia deciso di modificare i permessi dei file non ne ha parlato con gli sviluppatori di datapatch.
Datapatch vede il PDB di SOLA LETTURA e vuole aprirlo come LETTURA SCRITTURA, applicare una patch all'interno del PDB e quindi reimpostarlo su SOLA LETTURA. Tuttavia, datapatch non può aprire il PDB in modalità di lettura e scrittura perché i permessi del file non lo consentono. Da qui gli errori che sto ricevendo.
Oracle mi ha fatto questo ... hanno forzato i permessi dei file in un modo e quindi datapatch non può fare quello che ora vogliono che faccia.
Non ho ancora ricevuto notizie ufficiali con la mia richiesta di servizio, ma mi aspetto che questo diventi un bug. Datapatch dovrebbe saltare tutti i PDB che sono fonti per cloni di istantanee, secondo me.
Nel frattempo, puoi farti strada con la forza bruta. Ho provato a utilizzare il parametro -exclude_pdbs per datapatch ma non ha funzionato. Apparentemente c'è un bug noto in cui quel parametro non funziona se il tuo elenco di PDB ha una virgola. Quindi ho dovuto eseguire il datapatch come segue:\
./datapatch -verbose -pdbs cdb\$root
./datapatch -verbose -pdbs pdb\$seme
./datapatch -verbose -pdbs dev1,dev2
Per prima cosa, ho eseguito datapatch per applicare una patch a CDB$ROOT. Quindi ho corretto PDB$SEED. Quindi ho corretto i miei PDB di sviluppo. Semplicemente non ho patchato i miei PDB delle immagini d'oro.