Il peut y avoir un scénario lorsque la phase de basculement a échoué. Il est possible de revenir à l'état précédent de la transition (annuler le correctif), si la base de données de flashback est activée dans la base de données ou si nous avons effectué une sauvegarde complète avant la transition
Je l'expliquerais en ce qui concerne Database Flashback pour annuler le correctif
Je suppose ici que Flashback est activé dans la base de données. Nous pouvons le confirmer en utilisant la commande
SQL>select FLASHBACK_ON from v$database;
FLASHBACK_ON
------------
Yes
Vous pouvez en savoir plus sur la base de données Flashback dans les liens ci-dessous
Flashback Oracle Database
Comment faire un Flashback lorsque nous avons dataguard
Il est recommandé de programmer la phase de basculement d'Online Patching à un moment où il y a peu de transactions en ligne et où le traitement par lots est minimal. Vous devez confirmer que les demandes simultanées critiques ne s'exécutent pas pendant le basculement. Vous devriez également envisager de suspendre les demandes simultanées planifiées avant d'exécuter le basculement, sinon la phase de basculement attendra la fin du programme et vous perdrez les données de transaction en cas de retour en arrière
Regardons le Cas Problème
Cas 1
Vous exécutez un cycle de correctifs en ligne :
$ adop phase=prepare
$ adop phase=apply patches=99999999
$ adop phase=finalize
$ adop phase=cutover
Le basculement échoue et vous devez revenir à l'état du système avant d'exécuter la phase de basculement.
Si vous n'aviez pas exécuté la phase de basculement, vous auriez pu annuler le processus d'application du correctif en exécutant la phase d'abandon de l'adoption. Cependant, cela n'est pas possible une fois que le basculement a été exécuté.
Il y a deux parties principales pour annuler le correctif :
(1) Restauration de la base de données :La base de données Flashback est la méthode la plus rapide pour annuler les modifications de la base de données et revenir à un point dans le temps. Nous pouvons également utiliser la technique de restauration de la base de données, mais cela prend beaucoup de temps
Flasher la base de données
a). Tout d'abord, arrêtez la base de données, puis démarrez-la en état de montage :
SQL>shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL>startup mount ORACLE instance started.
b).Restaurer le flashback à l'heure spécifiée.
SQL>flashback database to time to_data(<time before teh cutover>; Flashback complete.
c).Démarrez la base de données en mode lecture seule :
SQL>alter database open read only; Database altered. Check all looks as expected.
d). Arrêtez la base de données, démarrez-la en état de montage, puis ouvrez-la avec l'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) Restauration du système de fichiers :Selon le moment où la transition a échoué, vous devrez peut-être également restaurer les systèmes de fichiers du niveau application
Restauration des systèmes de fichiers
La nécessité d'effectuer cette étape est conditionnelle, selon que la transition a échoué avant le basculement des systèmes de fichiers. Vous pouvez identifier lequel de ces cas s'applique en vous référant aux journaux de basculement dans $NE_BASE/EBSapps/log/adop/
Cas 1 – Si les messages du journal indiquent que le basculement a échoué avant le basculement des systèmes de fichiers, effectuez un arrêt propre de tous les services en cours d'exécution. Redémarrez ensuite tous les services à l'aide du script de démarrage normal,
Cas 2 - Si les messages du journal indiquent que le basculement a échoué après le basculement des systèmes de fichiers, suivez l'étape ci-dessous pour rétablir les systèmes de fichiers.
(a) Arrêtez les services démarrés à partir du nouveau système de fichiers d'exécution
1.Sourcez l'environnement sur le nouveau système de fichiers d'exécution.
2.Depuis $ADMIN_SCRIPTS_HOME, arrêtez tous les services (à l'aide d'adstpall .sh sous UNIX).
(b) Dans un environnement à plusieurs nœuds, répétez les deux étapes précédentes sur tous les nœuds, en laissant le nœud administrateur après tous les nœuds esclaves.
(c) Rebasculer les systèmes de fichiers
Sur tous les nœuds où les systèmes de fichiers ont été basculés, exécutez la commande suivante pour basculer les systèmes de fichiers :
$ 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) Démarrez tous les services à partir de l'ancien système de fichiers d'exécution (à l'aide de adstrtal.sh sous UNIX).
(e) Dans un environnement multi-nœuds, répétez les deux étapes précédentes sur tous les nœuds, en commençant par le nœud d'administration puis en passant aux nœuds esclaves
Conclusion
Une fois la restauration terminée, vous disposez de deux options de base pour continuer :
(a) Abandonnez le cycle de correctifs en cours, si le problème qui vous a obligé à restaurer a été causé par les correctifs que vous tentiez d'appliquer.
Voici les étapes pour annuler un cycle de correctifs en ligne
Si un cycle de correction échoue et que le problème ne peut pas être résolu rapidement, il est possible d'abandonner le cycle de correction et de revenir au fonctionnement normal de l'exécution. L'édition du correctif sera abandonnée.
Vous pouvez abandonner un cycle de correctifs (sans appliquer de correctifs) en exécutant la commande :
$ adop phase=abort
L'abandon d'un cycle de correction entraîne la suppression de l'édition du correctif, mais vous devez ensuite exécuter les phases de nettoyage et fs_clone avant de démarrer un nouveau cycle de correction. Le nettoyage doit être un nettoyage complet.
For example:
$ adop phase=prepare
$ adop phase=apply patches=9999999
$ adop phase=abort
$ adop phase=cleanup cleanup_mode=full
$ adop phase=fs_clone
Vous pouvez éventuellement combiner les commandes d'abandon et de nettoyage comme suit :
$ adop phase=abort,cleanup cleanup_mode=full
(b) Identifiez et corrigez tout autre problème dans le cycle de correctifs actuel, et procédez au correctif.