Oracle Datenbank Software 19.11/19.12 lässt sich nicht deinstallieren
$ORACLE_HOME/deinstall/deinstall.sh schlägt fehl
Wie jetzt - will jemand 19c Datenbanken schon wieder loswerden?
Viele Unternehmen stellen gerade ihre Datenbanken um und upgraden ihre Umgebung auf die Oracle Datenbank Version 19c. Die Version 19.3 benutzt dabei allerdings niemand, jeder nimmt, sofern durch die Applikationshersteller freigegeben, einen möglichst aktuellen Oracle Datenbank Release Update (RU) für den Betrieb. Diese beinhalten schließlich (neben einigen Backports aus 21c) verschiedenste Fehlerkorrekturen. Aufgrund der relativ kurzen Zyklen in der Bereitstellung der einzelnen Release Updates (RU) jedes Quartal, kommt es da durchaus vor, dass zuerst eine Testumgebung auf 19c gehoben wird, dann ein neuer Release Update zur Verfügung steht, dieser neu installiert, nochmal die Testumgebung upgegradet und ganz zum Schluss dann die produktiv Datenbank auf den gleichen Release Update-Stand gebracht wird. Aus Nachvollziehbarkeitsgründen wird dann die Installation komplett in ein neues Oracle Softwarehome vorgenommen und die Testdatenbank aus dem alten Softwarehome entfernt.
Genau so fing die Geschichte auch bei einem unserer Kunden an, der seine GIS-Datenbank zuerst nach 19.11 und dann schließlich nach 19.12 heben wollte (bzw. musste).
Nach dem Umzug des Listeners in das neue 19.12 Oracle Home und der Deinstallation der Datenbank selbst aus dem 19.11 Oracle Home wollten wir das alte, nicht mehr benötigte Home löschen.
Dazu kann man unter Linux das entsprechende deinstall.sh Skript aus dem Oracle Home aufrufen und nach Eingabe einiger Parameter (was soll mit ggfs. vorhandenen Listenern passieren, gibt es noch DBs im Home, ...) wird die Deinstallation der Software durchgeführt. Eigentlich.
Sofort nach dem Aufruf des deinstall.sh Skriptes und noch bevor die Parameter eingegeben werden können, schlägt das deinstall Skript fehl und wirft einen Fehler aus:
ERROR: oracle/rat/tfa/util/ManageTfa
Exited from program.
Was passiert beim deinstall?
Bei der Deinstallation eines leeren(!) Software Homes passiert unter dem Strich nicht viel. Das aktuelle Oracle Home wird aus dem Software Inventory entfernt und die Dateien im entsprechenden Home Verzeichnis werden gelöscht. In einem nicht leeren Home werden natürlich darüber hinaus noch Listener und Datenbanken gelöscht, das war in unserem Beispiel allerdings nicht notwendig.
Grundsätzlich gibt es also bei leeren Software Homes die Möglichkeit, diese beiden einfach Schritte selbst auszuführen. Dazu muss man zuerst das Oracle Home aus dem Software Inventory entfernen (ich empfehle an der Stelle dies auf gar keinen Fall durch eine Anpassung der XML Datei zu tun, auch wenn das vorübergehend zum Erfolg führen könnte). Dies geht durch den Aufruf des Installers mit dem Parameter detachHome.
Bei einer gesetzten Home Variable könnte das dann in etwa so aussehen:
cd $ORACLE_HOME
./runInstaller -silent -detachHome ORACLE_HOME=$ORACLE_HOME
Wenn das funktioniert, kann man danach einfach mit rm -rf die Verzeichnisse löschen. So war der Plan. Leider haben wir allerdings auch hier einen Fehler erhalten (und nicht genug Zeit um dem Fehler im Detail nachzugehen).
Weg damit!
Da der zweite Weg über das detachHome auch nicht funktioniert hat, haben wir einen weiteren Versuch mit dem deinstall.sh Skript unternommen, zuvor aber den 19.11 Release Update entfernt. Danach ließ sich das Software Home mit dem deinstall.sh Skript wie gewünscht deinstallieren. Der Fehler tritt (nachgetestet) übrigens mindestens auch im 19.12 Release Update auf.
Viele Datenbankverantwortliche wissen, wie man einen Patch installiert, aber die wenigsten müssen regelmäßig Patches bzw. Release Updates deinstallieren. Deshalb hier noch eine kleine Anleitung, was zu tun ist. Wer die Patch-Nummer kennt, kann gleich zum nächsten Punkt weiterspringen. Wer die Patch-Nummer noch benötigt, muss das opatch (aktuell sollte es ja sein, man hat es zur Installation des RUs verwendet) mit dem Parameter lsinventory starten.
cd $ORACLE_HOME/OPatch
./opatch lsinventory
Der Output listet dann alle Patches auf, darunter findet man dann auch die Database Release Updates:
Unique Patch ID: 24175065
Patch description: “Database Release Update : 19.11.0.0.210420 (32545013)”
An dieser Stelle bitte nicht von der Unique Patch ID verwirren lassen. Die zur Deinstallation benötigte Patch-Nummer ist die hier fett hinterlegte aus der Patch description, also die 32545013.
Im zweiten Schritt kann nun der RU aus dem Oracle Software Home entfernt werden. Die dafür notwendige Syntax lautet für den 19.11 RU somit:
cd $ORACLE_HOME/OPatch
./opatch rollback -id 32545013
Nachdem der Release Update aus dem Oracle Home erfolgreich entfernt wurde, kann man mit dem deinstall.sh nun die Datenbank Software wie gewünscht vom Server löschen.
Wir hoffen, dass dieser Bug in einem der nächsten Release Updates korrigiert wird, es könnte allerdings sein, dass der Fehler auch in einem anderen Release Update (kleiner 19.11 oder solchen, die zum Zeitpunkt dieses Blog Posts noch nicht veröffentlicht sind), auftritt.
Kommentare
Keine Kommentare