Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment annuler le correctif après l'échec de la phase de basculement dans R12.2

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//cutover_ / pour votre identifiant de session actuel.

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.