Ik heb onlangs de PSU van juli toegepast op een van mijn RAC-databases en ik kreeg steeds een foutmelding van OPatch dat de prereq checkSystemSpace was mislukt. Het zou voor niemand een verrassing moeten zijn dat OPatch een aantal noodzakelijke controles doorloopt voordat de patch wordt toegepast. OPatch probeert een goede kans op succes te garanderen en niet halverwege het patchproces te bombarderen.
Nu is checkSystemSpace slechts een van de controles die OPatch uitvoert. En uit de titel kan ik gemakkelijk opmaken dat ik weinig ruimte heb, waarschijnlijk schijfruimte. Ik weet dat dit zich op de schijfbevestiging bevindt waar ORACLE_HOME zich bevindt, omdat dat de enige schijfruimte is die ik aanpas bij het toepassen van de patch. Maar wat OPatch me niet op het scherm vertelde, is hoeveel ruimte er nodig was. Het OPatch-logbestand vertelde het me ook niet. Ik had ongeveer 8 GB vrije ruimte op die schijf en de PSU was lang niet zo groot. Ik heb wat oude bestanden opgeschoond, maar OPatch faalde nog steeds bij deze controle.
Om erachter te komen hoeveel schijfruimte er nodig was, heb ik OPatch als volgt handmatig uitgevoerd voor deze specifieke vereiste controle:
opatch prereq checkSystemSpace -ph .
Ik voer een vereistencontrole uit. De tweede parameter voor OPatch vertelt welke controle moet worden uitgevoerd. De -ph-richtlijn vertelt OPatch welke thuismap van de patch moet worden gebruikt en in mijn geval is dit de huidige map (aangegeven door de punt). De uitvoer was vergelijkbaar met het volgende, bijgesneden voor beknoptheid:
Space Needed : 8780.128MB
Space Usable : 8347.293MB
Required amount of space(8780.128MB) is not available.
Prereq "checkSystemSpace" failed.
Door de prereq-controle handmatig uit te voeren, kon ik de informatie verkrijgen die ik nodig had. OPatch is op zoek naar ongeveer 8,7 GB vrije ruimte en ik heb 8,3 GB beschikbaar en ik kom ongeveer 430 MB te kort. Dus nu heb ik een goed idee hoeveel ruimte ik moet opruimen voordat deze controle correct zal slagen.
OPatch heeft nog een aantal andere cheques mee. Om ze allemaal te weten, geeft u het volgende op:
opatch prereq -h
Dit geeft niet alleen de namen van de cheques, maar ook een korte beschrijving van elk. U kunt bijvoorbeeld een melding krijgen dat de controle CheckApplicable is mislukt. Wat betekent dat? De beschrijving van één alinea is:
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.
Deze controle zorgt er dus voor dat de Oracle-homedirectory de componenten bevat die nodig zijn om te slagen. U kunt bijvoorbeeld geen patch toepassen om een partitieprobleem op te lossen als de optie Partitionering niet is geïnstalleerd. Gebruik OPatch om de rest van de vereiste controles te zien die OPatch aan het doen is. De meeste gaan op de achtergrond door zonder dat je het merkt, dus sommige ervan zullen je misschien verbazen.
Probeer de volgende keer dat een prereq-controle mislukt, deze handmatig uit te voeren om te zien of u meer informatie heeft dan aanvankelijk werd verstrekt toen u de patch probeerde toe te passen.