Neben den oben schon erwähnten Befehlen "query" und "-help" sind die wichtigsten Befehle
- "lsinv" zum Listen der bereits installierten Komponenten
- "apply" zum Einspielen eines Patches
- "rollback" um einen Patch gegebenfalls wieder zurückzunehmen
- "prereq" zum Prüfen auf mögliche Konfilkte
Insbesondere bei PSUs wird gerade das "prereq" Kommando explizit in der Readme erwähnt und gehört zum Patch Vorgang.
OPatch zeigt mit Hifle des "lsinventory" bzw. kurz "lsinv" Befehl alle installierten Komponenten an, die im entsprechenden Inventory Verzeichnis des
ORACLE_HOMEs zu finden sind. Wird "lsinv" ohne Parameter ausgeführt, so zeigt er lediglich die Inhalte des aktiven ORACLE_HOMEs an, d.h. OPatch greift
nur auf das Inventory im jeweiligen ORACLE_HOME zu und schaut nicht im globalen Inventory nach, welche Produkte/Versionen sonst noch installiert sind.
Diese lokale Abfrage hat jedoch den Vorteil, dass die Ausgabe hier mit "-detail" sehr detailliert erfolgen kann.
Möchte man hingegen die Informationen aller installierten ORACLE_HOMEs erhalten, so führt man OPatch mit der Option "-all" aus. Hier ist die Ausgabe nicht so
detailliert, aber man erhält eine Übersicht über die ORACLE_HOMEs auf den kompletten Servern - vorausgesetzt, alle Homes sind im Globalen Inventory (/etc/oraInst.loc)
registriert.
Eine Besonderheit gibt es noch bei RAC Umgebungen. Mit "-all_nodes" ist es möglich, die lokalen Inventories auch Knoten übergreifend zu vergleichen.
Hierbei werden nicht nur die installierten Patches aufgelistet, sondern auch eine Checksumme des Oracle Executables verglichen:
Die Installation von Patches ist im Normalfall mit einem Schritt getan. Es ist aber durchaus empfehlenswert, vor der Patch Installation einen
Check auf mögliche Konflikte durchzuführen und das Readme des jeweiligen Patches zu konsultieren. Sind dort keine speziellen Instruktionen
genannt, lässt sich der Patch mit folgenden 2 Befehlen prüfen und installieren, nachdem man sich im entpackten Verzeichnis des Patches positioniert hat:
Das Einspielen eines Patches erfolgt dabei immer in mindestens 2 Schritten: Backup der zu ändernden Dateien nach .patch_storage im ORACLE_HOME und dann erst
die eigentliche Installation der Dateien und das Linken falls notwendig.
Manche Patches erlauben auch das direkte Ausführen von SQL nach der Patch Installation. Dies kann man erreichen, indem man dem apply Befehl ein "-runSql" mitgibt.
Ob dies allerdings überhaupt möglich ist, steht im Readme des Patches.
Gibt man übrigens bei RAC Homes nicht den speziellen "-local" Flag mit, so wird der Patch automatisch auf alle anderen Knoten mit verteilt (nach vorhergehender Bestätigung).
Die Arbeit der Neukompilierung wird aber nur auf dem ersten Knoten durchgeführt, die Executables werden danach einfach auf die anderen Knoten kopiert. Dies kann
eine erhebliche Zeitersparnis sein.
Das Zurücknehmen (auf englisch Rollback) eines Patches funktioniert etwas anders. Hierbei wird nicht die Patch Nummer des Patches benötigt, sondern die eindeutige
"Unique Patch ID". Diese erhält man nur über die Auflistung des Inventories mit "opatch lsinv" (siehe oben). Mit Hilfe dieser ID ist ein Zurückrollen
des Patches dann möglich:
Damit ein Rollback eines Patches funktioniert, dürfen selbstverständlich die Originaldateien aus dem .patch_storage Verzeichnis nicht entfernt worden sein!.
Nicht in der Dokumentation erwähnt sind die Funktionalitäten, die über den "opatch util" Befehl zur Verfügung stehen. Dabei findet man gerade hier
einige interessante Optionen. Neben der Möglichkeit, SQL eines Patches mit OPatch anzuwenden, einen installierten Patch mit "verify" zu validieren und im RAC Umfeld
Remote Befehle oder Lösch- und Kopieraktionen auszuführen, gehört auch ein "cleanup" dazu, welches nicht benötigte Dateien aus dem Backup Verzeichnis löscht,
ohne dabei die Rollback Funktionalität zu beeinträchtigen: