Di recente stavo applicando la PSU di luglio a uno dei miei database RAC e continuavo a ricevere un errore da OPatch che indicava che il prereq checkSystemSpace non era riuscito. Non dovrebbe sorprendere nessuno che OPatch superi una serie di controlli dei prerequisiti prima di applicare la patch. OPatch sta cercando di garantire buone possibilità di successo e di non esplodere a metà del processo di patch.
Ora checkSystemSpace è solo uno dei controlli eseguiti da OPatch. E dal suo titolo, posso facilmente discernere che ho poco spazio, probabilmente spazio su disco. So che questo è sul supporto del disco in cui risiede ORACLE_HOME poiché è l'unico spazio su disco che sto modificando durante l'applicazione della patch. Ma quello che OPatch non mi diceva sullo schermo è quanto spazio era necessario. Anche il file di registro di OPatch non me l'ha detto. Avevo circa 8 GB di spazio libero su quell'unità e l'alimentatore non era affatto vicino a quelle dimensioni. Ho ripulito alcuni vecchi file ma OPatch ha comunque fallito in questo controllo.
Per scoprire quanto spazio su disco era necessario, ho eseguito manualmente OPatch per questo specifico controllo dei prerequisiti come segue:
prerequisito patch checkSystemSpace -ph .
Sto eseguendo un controllo dei prerequisiti. Il secondo parametro di OPatch gli dice quale controllo eseguire. La direttiva -ph dice a OPatch quale directory home della patch utilizzare e, nel mio caso, è la directory corrente (indicata dal punto). L'output era simile al seguente tagliato per brevità:
Space Needed : 8780.128MB
Space Usable : 8347.293MB
Required amount of space(8780.128MB) is not available.
Prereq "checkSystemSpace" failed.
Eseguendo manualmente il controllo dei prerequisiti, sono stato in grado di ottenere le informazioni di cui avevo bisogno. OPatch sta cercando circa 8,7 GB di spazio libero e io ho 8,3 GB disponibili e sono a corto di circa 430 MB. Quindi ora ho una buona idea di quanto spazio devo ripulire prima che questo controllo passi correttamente.
OPatch ha una serie di altri controlli con esso. Per scoprirli tutti, pubblica quanto segue:
opatch prereq -h
Questo non fornirà solo i nomi dei controlli, ma una breve descrizione di ciascuno. Ad esempio, potresti ricevere una notifica che il controllo CheckApplicable non è riuscito. Cosa significa? La descrizione di un paragrafo è:
CheckApplicable
Check for the presence of the required components in
the ORACLE_HOME and check if all the actions of the
given patch(es) are applicable.
Quindi questo controllo garantisce che la directory home di Oracle abbia i componenti necessari per avere successo. Ad esempio, non è possibile applicare una patch per risolvere un problema di partizionamento se l'opzione Partizionamento non è installata. Usa OPatch per vedere il resto dei controlli rereq che OPatch sta facendo. La maggior parte di essi continua in background senza preavviso, quindi alcuni di questi potrebbero sorprenderti.
La prossima volta che un controllo dei prerequisiti fallisce, prova a eseguirlo manualmente per vedere se hai più informazioni di quelle fornite inizialmente quando hai provato ad applicare la patch.