Es kann ein Szenario geben, in dem die Umstellungsphase fehlgeschlagen ist. Es ist möglich, zum vorherigen Stand der Umstellung zurückzukehren (Rollback des Patches), wenn die Flashback-Datenbank entweder in der Datenbank aktiviert ist oder wir vor der Umstellung eine vollständige Sicherung durchgeführt haben
Ich würde es in Bezug auf Datenbank-Flashback erklären, um den Patch rückgängig zu machen
Ich gehe davon aus, dass Flashback in der Datenbank aktiviert ist. Wir können dies mit dem Befehl
bestätigenSQL>select FLASHBACK_ON from v$database;
FLASHBACK_ON
------------
Yes
Unter den folgenden Links erfahren Sie mehr über die Flashback-Datenbank
Flashback Oracle Database
Wie man Flashback macht, wenn wir Dataguard haben
Es wird empfohlen, die Umstellungsphase für das Online-Patching auf einen Zeitpunkt zu planen, an dem nur wenige Onlinetransaktionen stattfinden und die Stapelverarbeitung minimal ist. Sie sollten sich vergewissern, dass kritische gleichzeitige Anforderungen während der Umstellung nicht ausgeführt werden. Sie sollten auch erwägen, geplante gleichzeitige Anfragen vor der Umstellung anzuhalten, da sonst die Umstellungsphase auf den Abschluss des Programms wartet und Sie im Falle eines Flashbacks Transaktionsdaten verlieren
Betrachten wir den Problemfall
Fall 1
Sie führen einen Online-Patch-Zyklus durch:
$ adop phase=prepare
$ adop phase=apply patches=99999999
$ adop phase=finalize
$ adop phase=cutover
Die Umstellung schlägt fehl und Sie müssen zu dem Zustand des Systems zurückkehren, bevor Sie die Umstellungsphase ausgeführt haben.
Wenn Sie die Cutover-Phase nicht ausgeführt hätten, hätten Sie den Patch-Anwendungsprozess durch Ausführen der Adop-Abort-Phase rückgängig machen können. Dies ist jedoch nicht möglich, nachdem die Umstellung ausgeführt wurde.
Es gibt zwei Hauptteile, um den Patch rückgängig zu machen:
(1) Datenbankwiederherstellung :Flashback-Datenbank ist die schnellste Methode, um die Datenbankänderungen rückgängig zu machen und zu einem bestimmten Zeitpunkt zurückzukehren. Wir können auch eine Datenbankwiederherstellungstechnik verwenden, aber das ist sehr zeitaufwändig
Flashback der Datenbank
a).Fahren Sie zuerst die Datenbank herunter und starten Sie sie dann im Mount-Zustand:
SQL>shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL>startup mount ORACLE instance started.
b). Stellen Sie den Flashback auf die angegebene Zeit wieder her.
SQL>flashback database to time to_data(<time before teh cutover>; Flashback complete.
c).Starten Sie die Datenbank im Nur-Lese-Modus:
SQL>alter database open read only; Database altered. Check all looks as expected.
d).Fahren Sie die Datenbank herunter, starten Sie sie im Mount-Zustand und öffnen Sie sie dann mit der Option resetlogs:
SQL>shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL>startup mount ORACLE instance started. Database mounted. SQL>alter database open resetlogs; Database altered.
2)Wiederherstellung des Dateisystems :Je nachdem, wann die Umstellung fehlgeschlagen ist, müssen Sie möglicherweise auch die Dateisysteme der Anwendungsebene wiederherstellen
Wiederherstellen der Dateisysteme
Ob Sie diesen Schritt ausführen müssen, hängt davon ab, ob die Umstellung vor dem Wechsel der Dateisysteme fehlgeschlagen ist. Welcher dieser Fälle zutrifft, können Sie anhand der Cutover-Protokolle in $NE_BASE/EBSapps/log/adop/
Fall 1 – Wenn die Protokollmeldungen anzeigen, dass die Umstellung fehlgeschlagen ist, bevor die Dateisysteme gewechselt wurden, führen Sie ein sauberes Herunterfahren aller laufenden Dienste durch. Starten Sie dann alle Dienste mit dem normalen Startskript neu,
Fall 2 – Wenn die Protokollmeldungen darauf hindeuten, dass die Umstellung nach dem Umschalten der Dateisysteme fehlgeschlagen ist, führen Sie den folgenden Schritt aus, um die Dateisysteme zurückzuschalten.
(a) Beenden Sie die Dienste, die vom neuen Ausführungsdateisystem gestartet wurden
1. Beziehen Sie die Umgebung auf das neue Ausführungsdateisystem.
2. Beenden Sie von $ADMIN_SCRIPTS_HOME aus alle Dienste (unter Verwendung von adstpall .sh unter UNIX).
(b)Wiederholen Sie in einer Umgebung mit mehreren Knoten die beiden vorangegangenen Schritte auf allen Knoten und lassen Sie den Admin-Knoten bis hinter alle Slave-Knoten.
(c) Wechseln Sie die Dateisysteme zurück
Führen Sie auf allen Knoten, auf denen die Dateisysteme gewechselt wurden, den folgenden Befehl aus, um die Dateisysteme zurückzuschalten:
$ perl $AD_TOP/patch/115/bin/txkADOPCutOverPhaseCtrlScript.pl \ -action=ctxupdate \ -contextfile=<full path to new run context file> \ -patchcontextfile=<full path to new patch file system context file> \ -outdir=<full path to out directory>
(d)Starten Sie alle Dienste aus dem alten Ausführungsdateisystem (unter UNIX mit adstrtal.sh).
(e)Wiederholen Sie in einer Umgebung mit mehreren Knoten die vorherigen beiden Schritte auf allen Knoten, beginnend mit dem Admin-Knoten und dann weiter zu den Slave-Knoten
Fazit
Nachdem die Wiederherstellung abgeschlossen ist, haben Sie zwei grundlegende Optionen zum Fortfahren:
(a) Brechen Sie den aktuellen Patch-Zyklus ab, wenn das Problem, das Sie wiederherstellen musste, durch die Patches verursacht wurde, die Sie anzuwenden versuchten.
Hier sind die Schritte zum Abbrechen eines Online-Patch-Zyklus
Wenn ein Patch-Zyklus fehlschlägt und das Problem nicht schnell behoben werden kann, ist es möglich, den Patch-Zyklus abzubrechen und zum normalen Laufzeitbetrieb zurückzukehren. Die Patch-Edition wird eingestellt.
Sie können einen Patch-Zyklus abbrechen (ohne irgendwelche Patches anzuwenden), indem Sie den folgenden Befehl ausführen:
$ adop phase=abort
Durch das Abbrechen eines Patch-Zyklus wird die Patch-Edition gelöscht, aber Sie müssen dann die Bereinigungs- und fs_clone-Phasen ausführen, bevor Sie einen neuen Patch-Zyklus starten. Die Bereinigung muss eine vollständige Bereinigung sein.
For example:
$ adop phase=prepare
$ adop phase=apply patches=9999999
$ adop phase=abort
$ adop phase=cleanup cleanup_mode=full
$ adop phase=fs_clone
Optional können Sie die Abbruch- und Bereinigungsbefehle wie folgt kombinieren:
$ adop phase=abort,cleanup cleanup_mode=full
(b) Identifizieren und beheben Sie alle anderen Probleme im aktuellen Patch-Zyklus und fahren Sie mit dem Patchen fort.