Jag använde nyligen juli PSU på en av mina RAC-databaser och jag fick hela tiden ett felmeddelande från OPatch om att prereq checkSystemSpace misslyckades. Det borde inte vara någon överraskning för någon där ute att OPatch går igenom ett antal nödvändiga kontroller innan plåstret appliceras. OPatch försöker säkerställa en god chans att lyckas och inte bomba ut mitt i patchprocessen.
Nu är checkSystemSpace bara en av kontrollerna som OPatch utför. Och av dess titel kan jag lätt urskilja att jag har ont om utrymme, förmodligen diskutrymme. Jag vet att detta är på diskfästet där ORACLE_HOME finns eftersom det är det enda diskutrymmet jag ändrar när jag applicerar patchen. Men vad OPatch inte berättade för mig på skärmen är hur mycket utrymme som behövdes. OPatch-loggfilen berättade det inte för mig heller. Jag hade ungefär 8 GB ledigt utrymme på den enheten och PSU:n var inte i närheten av den storleken. Jag har rensat upp några gamla filer men OPatch misslyckades fortfarande med den här kontrollen.
För att ta reda på hur mycket diskutrymme som behövdes, körde jag OPatch manuellt för denna specifika förutsättningskontroll enligt följande:
opatch prereq checkSystemSpace -ph .
Jag kör en förutsättningskontroll. Den andra parametern till OPatch talar om vilken kontroll som ska köras. Direktivet -ph talar om för OPatch vilken patch-hemkatalog som ska användas och i mitt fall är det den aktuella katalogen (betecknad med punkt). Utdata liknade följande trimmade för korthetens skull:
Space Needed : 8780.128MB
Space Usable : 8347.293MB
Required amount of space(8780.128MB) is not available.
Prereq "checkSystemSpace" failed.
Genom att köra prereq-kontrollen manuellt kunde jag få den information jag behövde. OPatch letar efter cirka 8,7 GB ledigt utrymme och jag har 8,3 GB tillgängligt och jag har cirka 430 MB kort. Så nu har jag en bra uppfattning om hur mycket utrymme jag behöver för att städa innan den här kontrollen kommer att passera korrekt.
OPatch har ett antal andra kontroller med sig. För att ta reda på dem alla, utfärda följande:
opatch prereq -h
Detta kommer inte bara att ge namnen på kontrollerna, utan en kort beskrivning av var och en. Du kan till exempel få ett meddelande om att kontrollen CheckApplicable har misslyckats. Vad betyder det? Beskrivningen av ett stycke är:
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.
Så den här kontrollen säkerställer att Oracles hemkatalog har de komponenter som behövs för att lyckas. Du kan till exempel inte använda en patch för att åtgärda ett partitioneringsproblem om alternativet Partitionering inte är installerat. Använd OPatch för att se resten av de återkommande kontrollerna som OPatch gör. De flesta av dem fortsätter i bakgrunden utan förvarning så några av dessa kan överraska dig.
Nästa gång du har en prereq-kontroll som misslyckas, försök att köra den manuellt för att se om du har mer information än vad som ursprungligen angavs när du försökte applicera patchen.