Gruñidos sobre …

11 abril 2010

Shutdown timeout y AWR

Filed under: Español, Gruñidos, Oracle — Etiquetas: — fidelinho @ 5:56 pm

En Oracle 9.2 Oracle introdujo un timeout en el proceso de parada (shutdown) Según la documentación (de 10g dado que antes no estaba documentado)

Shutdown modes that wait for users to disconnect or for transactions to complete have a limit on the amount of time that they wait. If all events blocking the shutdown do not occur within one hour, the shutdown command cancels with the following message: ORA-01013: user requested cancel of current operation.

Esta característica está documentada en varias notas de metalink (MOS) y SAP:

MOS ID 367444.1 Is There A Shutdown TIMEOUT For SHUTDOWN IMMEDIATE On 9.2 And Later?
MOS ID 305666.1 Shutdown is Cancelled With ORA-1013 After Waiting for an Hour
SAP Note 618861 Composite SAP Note: ORA-01013

Este proceso tiene sus ventajas y desventajas. Recientemente he descubierto una más, la cual no he encontrado documentada y que considero un error grave (ya veremos que dice Oracle)

En Oracle 10g (supongo que 11g también), al parar Oracle (shutdown immediate), lo primero que hace es parar varios procesos de fondo (QMNC, CJQ0, MMNL, MMON) y luego espera a que finalicen los procesos de usuario. Si alguno de esos procesos no se “muere” en el tiempo establecido, una hora, Oracle cancela la parada y continua “normalmente”

Pero que pasa con los procesos de fondo que han sido parados? Aparentemente, no los reinicia.

Recientemente intenté analizar un problema en un sistema  cual fue mi sorpresa cuando comprobé que la última información grabada por ASH/AWR era de hacía 12 días. Curioso, el periodo de retención es de 7 días, no debería de haber información tan vieja y debería de haber información más nueva.

Después de investigar un poco y gracias a un colega que tuvo un problema similar hacia unos meses pude constatar que el sistema había tenido una parada abortada justo 12 días atrás (un poco modificado para que el “culpable” no se reconozca):

Completed checkpoint up to RBA [0xXXXXX.2.10], SCN: XXXXXXXXXXX
Sun Mar 28 10:24:44 2010
Stopping background process QMNC  
Sun Mar 28 10:24:44 2010
Stopping background process CJQ0  
Sun Mar 28 10:24:46 2010
Stopping background process MMNL    
Sun Mar 28 10:24:47 2010
Stopping background process MMON
Sun Mar 28 10:24:48 2010
Shutting down instance (immediate)
License high water mark = XXX
Sun Mar 28 10:28:44 2010
Incremental checkpoint up to RBA [0xXXXXX.5.0], current log tail at RBA [0xXXXXX.13.0] 
Sun Mar 28 10:29:47 2010
Active call for process XXXXXXX user 'oraSID' program 'oracle@hostname'
SHUTDOWN: waiting for active calls to complete.
Sun Mar 28 10:44:49 2010
MMNL absent for 1233 secs; Foregrounds taking over
Sun Mar 28 10:58:48 2010
Incremental checkpoint up to RBA [0xXXXXX.4b.0], current log tail at RBA [0xXXXXX.60.0]
Sun Mar 28 11:24:49 2010
SHUTDOWN: Active sessions prevent database close operation
Sun Mar 28 11:27:38 2010
Beginning log switch checkpoint up to RBA [0xXXXXX.2.10], SCN: XXXXXXXXXXX

Simplemente rearancando Oracle el misterio del AWR perdido se resolvió, volvíamos a tener el proceso MMNL corriendo felizmente y realizando si trabajo.

No pude investigar si los otros procesos que son parados tampoco son rearancados. La pregunta que también me queda en el aire para otro día es si hay otros procesos que son parados y no rearancados en esta situación pero no son escritos en el alert log.

Un día con un poco de tiempo libre intentaré reproducir este caso. A ver si se me ocurre como.

De todas formas no fui capaz de encontrar información sobre esta situación en metalink (MOS) ni los foros de OTN ni en google (lo cual no quiere decir que no la haya)

También es interesante indicar que la cancelación no está acompañada de un ORA-ORA-01013  a pesar de lo que indica la documentación.

Si alguien tiene más información que comente. Yo prometo actualizar este apunte si/cuando tenga alguna.

Update:
Como esperaba, Oracle se defiende como un gato panza arriba. La respuesta es que es un comportamiento “normal” y esperado. Dado que es una “parada” abortada deja a Oracle “un poco incompleto” y hay que repetir la parada. Estas parada abortada deberías ser tratadas por los administradores. dado que no se ha hecho nada en 2 semanas, demuestra que hay un problema con los sistemas de Alerta.

Estoy de acuerdo con la segunda parte, pero no con la primera

Indico que Oracle no debería dejarse a si mismo “un poco incompleto” y que si aborta la parada debería de rearancar los procesos que ha parado apuntan al siguiente mensaje:

Sun Mar 28 10:44:49 2010
MMNL absent for 1233 secs; Foregrounds taking over

El proceso MMNL tiene un “timeout” de 1200 segundos,  no se pudo rearrancar (la base de datos se estaba parando) Indican que ese mensaje se repitirá cada 1200 segundos (están sorprendidos cuando les indico que no). Que esta no es una característica importante para la base de datos y que no afecta a la consistencia de los datas, por lo tanto no se realiza ninguna otra acción, “as designed”.

Blog de WordPress.com.

A %d blogueros les gusta esto: