sql >> Base de Datos >  >> RDS >> Oracle

Cómo revertir el parche después de una fase de transición fallida en R12.2

Puede haber un escenario en el que la fase de transición falle. Es posible volver al estado anterior de transición (deshacer el parche), si la base de datos flashback está habilitada en la base de datos o si hemos realizado una copia de seguridad completa antes de la transición

Lo estaría explicando con respecto a Database Flashback para revertir el parche

Supongo que aquí tenemos Flashback habilitado en la base de datos. Podemos confirmarlo usando el comando

SQL>select FLASHBACK_ON from v$database;
FLASHBACK_ON
------------
Yes

Puede obtener más información sobre la base de datos Flashback en los siguientes enlaces

Flashback Oracle Database
Cómo hacer Flashback cuando tenemos protección de datos

Se recomienda que la fase de transición de la aplicación de parches en línea se programe para un momento en el que haya pocas transacciones en línea y el procesamiento por lotes sea mínimo. Debe confirmar que las solicitudes simultáneas críticas no se ejecutan durante la transición. También debe considerar poner en espera las solicitudes concurrentes programadas antes de ejecutar la transición, ya que, de lo contrario, la fase de transición esperará a que se complete el programa y, además, perderá los datos de la transacción en caso de retroceso.

Veamos el Caso Problema

Caso 1

Está ejecutando un ciclo de aplicación de parches en línea:

$ adop phase=prepare
$ adop phase=apply patches=99999999
$ adop phase=finalize
$ adop phase=cutover

La transferencia falla y debe volver al estado del sistema antes de ejecutar la fase de transferencia.

Si no hubiera ejecutado la fase de transición, habría podido revertir el proceso de aplicación del parche ejecutando la fase de cancelación de adopción. Sin embargo, esto no es posible una vez que se ha ejecutado la transición.

Hay dos partes principales para revertir el parche:
(1) Restauración de base de datos :La base de datos Flashback es el método más rápido para revertir los cambios de la base de datos y volver a un punto en el tiempo. También podemos usar la técnica de restauración de la base de datos, pero eso lleva mucho tiempo

Flasheo de la base de datos
a). Primero, apague la base de datos, luego iníciela en estado de montaje:

SQL>shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>startup mount
ORACLE instance started.

b).Restaurar el flashback al tiempo especificado.

SQL>flashback database to time to_data(<time before teh cutover>;
Flashback complete.

c). Inicie la base de datos en modo de solo lectura:

SQL>alter database open read only;
Database altered.

Check all looks as expected.

d). Cierre la base de datos, iníciela en estado de montaje y luego ábrala con la opción 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) Restauración del sistema de archivos :Dependiendo de cuándo falló la transición, es posible que también deba restaurar los sistemas de archivos del nivel de la aplicación

Restauración de los sistemas de archivos

La necesidad de realizar este paso es condicional, dependiendo de si la transición falló antes de que se cambiaran los sistemas de archivos. Puede identificar cuál de estos casos se aplica consultando los registros de transición en $NE_BASE/EBSapps/log/adop//cutover_ / para su ID de sesión actual.

Caso 1:si los mensajes de registro indican que la transición falló antes de que se cambiaran los sistemas de archivos, realice un cierre limpio de todos los servicios que se estén ejecutando. Luego reinicie todos los servicios usando el script de inicio normal,

Caso 2:si los mensajes de registro indican que la transición falló después de que se cambiaron los sistemas de archivos, siga el paso a continuación para volver a cambiar los sistemas de archivos.

(a) Cierre los servicios iniciados desde el nuevo sistema de archivos de ejecución

1. Obtenga el entorno en el nuevo sistema de archivos de ejecución.
2.Desde $ADMIN_SCRIPTS_HOME, cierre todos los servicios (usando adstpall .sh en UNIX).

(b) En un entorno de múltiples nodos, repita los dos pasos anteriores en todos los nodos, dejando el nodo de administración hasta después de todos los nodos esclavos.

(c) Volver a cambiar los sistemas de archivos
En todos los nodos en los que se han cambiado los sistemas de archivos, ejecute el siguiente comando para volver a cambiar los sistemas de archivos:

$ 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)Inicie todos los servicios desde el antiguo sistema de archivos de ejecución (usando adstrtal.sh en UNIX).
(e)En un entorno de múltiples nodos, repita los dos pasos anteriores en todos los nodos, comenzando con el nodo de administración y luego proceder a los nodos esclavos

Conclusión

Una vez completada la restauración, tiene dos opciones básicas para continuar:
(a) Cancelar el ciclo de aplicación de parches actual, si el problema que requirió la restauración fue causado por los parches que intentaba aplicar.

Estos son los pasos para cancelar un ciclo de aplicación de parches en línea

Si falla un ciclo de aplicación de parches y el problema no se puede resolver rápidamente, es posible cancelar el ciclo de aplicación de parches y volver a la operación de tiempo de ejecución normal. La edición del parche se eliminará.

Puede abandonar un ciclo de aplicación de parches (sin aplicar ningún parche) ejecutando el comando:
$ adop phase=abort

Cancelar un ciclo de aplicación de parches eliminará la edición del parche, pero luego debe ejecutar las fases de limpieza y fs_clone antes de comenzar un nuevo ciclo de aplicación de parches. La limpieza debe ser una limpieza completa.

For example:
$ adop phase=prepare
$ adop phase=apply patches=9999999
$ adop phase=abort
$ adop phase=cleanup cleanup_mode=full
$ adop phase=fs_clone

Opcionalmente, puede combinar los comandos de cancelación y limpieza de la siguiente manera:

$ adop phase=abort,cleanup cleanup_mode=full

(b) Identifique y corrija cualquier otro problema en el ciclo de parches actual y continúe con el parche.