Limieza de logs en Oracle 11G

Hoy voy a describir la limpieza de logs con 11g ADRCI, bueno voy a describir la teoría porque en la práctica yo no he conseguido que esto funcione, se cambia pero no borra nada.

 En versiones anteriores de oracle los archivos de trazas de udump, cdump y dbump se tenían que borrar a mano.

En Oracle 11g se con la ADR el proceso MMON se encargará de borrar los ficheros automáticamente en función de dos parámetros:

LONGP_POLICY (Periodos largos) Por defecto 365 días y borra Incidentes  chequeos del estado de la base de datos

 SHORTP_POLICY (short term) Por defecto 30 días y se encarga de trace y core dumps

 El comandos de ADRCI show control muestra la configuración de estos valores:

 adrci> show control
 ADR Home = /u01/app/oracle/diag/rdbms/prueba/prueba:
*************************************************************************
ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                            LAST_AUTOPRG_TIME                        LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION      ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME
-------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ----------------------------------------
1095473802           720                  8760                 2010-07-07 08:46:56.405618 +08:00        2010-08-22 22:14:11.443356 +08:00                                                 1                    2                    76                   1                    2010-07-07 08:46:56.405618 +08:00
 

En este caso el valor por defecto son 720 horas (30 días) para los periodos cortos y  8760 horas (1 año) para los periodos largos.

Estos valores se puede cambiar utilizando el comando ADRCI ‘set control’

 Un ejemplo de un cambio a 15 días

 adrci> set control (SHORTP_POLICY =360)
 adrci> show control
 ADR Home = /u01/app/oracle/diag/rdbms/prueba/prueba:
*************************************************************************
ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                            LAST_AUTOPRG_TIME                        LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION      ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME
-------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ----------------------------------------
1095473802           360                  8760                 2010-08-27 09:36:09.385370 +08:00        2010-08-22 22:14:11.443356 +08:00                                                 1                    2                    76                   1                    2010-07-07 08:46:56.405618 +08:00

 También se puede limpiar los ficheros manualmente utilizando el comando ‘purge’ de ADRCI (este se define en minutos no en horas).

Ejemplo para borrar todos los ficheros de más de 6 días

 adrci> purge -age 8640 -type TRACE 
adrci> show control
 ADR Home = /u01/app/oracle/diag/rdbms/prueba/prueba:
*************************************************************************
ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                            LAST_AUTOPRG_TIME                        LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION      ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME
-------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ----------------------------------------
1095473802           360                  8760                 2010-08-27 09:36:09.385370 +08:00        2010-08-22 22:14:11.443356 +08:00        2010-08-27 09:50:07.399853 +08:00        1                    2                    76                   1                    2010-07-07 08:46:56.405618 +08:00

En los sql curiosos existe una página para cambiar la política de todos los ADRHOME de una máquina.

De todas formas como he dicho al principio está es la teoría yo no he logrado que esto funcione de manera correcta, a esto le hemos unido una política de borrado manual.

Estructura, contenido y localizacion de ARD (Automatic Diagnostic Repository)

Es un estructura de directorios almacenada fuera de la base de datos, para permitir el diagnostico de errores incluso cuando la base de  datos este parada.
El directorio raíz de ADR se llama ADR base. Y su localización es´ta determinada en parámetro de inicialización DIAGNOSTIC_DEST. Si se omite este parámetro o se deja a null, la localización se establecerá según el siguiente orden:
         • Si está declarada la variable de entorno ORACLE_BASE el DIAGNOSTIC_DEST será igual quec ORACLE_BASE.
          • Si la variable de entorno no está definida el DIAGNOSTIC_DEST será ORACLE_HOME/log.
Dentro de base de ADR se pueden definer multiples ADR homes, cada uno par alas diferentes instancias o porductos o componetes de oracle instalados. La localización de ADR home se determina por la siguiente estructura de directorios, que comienza con la directorio de base de ADR:
diag/product_type/product_id/instance_id

Estructura para una base de datos
Path Component   Valor de la base de datos Oracle
product_type                rdbms
product_id                     database name
instance_id                    SID

Por ejemplo para una base de datos con sid PEPE la estructura sera así:
ADR_base/diag/rdbms/pepe/pepe/
Subdirectorios de HOME de ADR
Dentro del directorio  ADR existen varios subdirectorios donde se va almacenando la información. Lista de los subdirectorios y su contenido.
 ADR subdirectorios y contenido
Subdirectorios                 Contenidos
alert                                           Log XML
cdump                                      Archivos core
incident                                   Múltiples subdirectorios, cada uno subdirectorio lleva el nombre de un incidente en  concreto y cada uno tiene dumps de ese incidente en concreto
trace                                          Procesos de background y trace de procesos de servidor y ficheros SQL trace
(others)                                   Otros subdirectorios de home de ADR, los cuales almacenan de paquetes   incidencias, reportes de monitorización y otro tipo de información.

Estructura de Directorios de una base de datos
 

ADR en ambientes cluster:
En un RAC cada nodo tiene su propia estructura. Esta puede estar en su propio disco local o un almacenamiento compartido, las ventajas de esta última opción son:
 Puedes utilizar la vista ADRCI para tener información de las dos instancias en un único reporte.
 Se puede utilizar el Data Record Advisor para diagnosticar y reparar corrupción de bloques, archivos corruptos o desaparecidos y otro tipo de fallos (Para Oracle RAC el Data Recovery Advisor requiere almacenamiento compartido)

Ver la localizacion de ADR con la vista V$DIAG_INFO
La vista V$DIAG_INFO proporciona una lsita de todas las localizaciones de ADR para esa base de datos. Un ejemplo de su salida:

SELECT * FROM V$DIAG_INFO;
INST_ID NAME                  VALUE
 ------- --------------------- -------------------------------------------------------------
      1 Diag Enabled          TRUE
      1 ADR Base              /u01/oracle
      1 ADR Home              /u01/oracle/diag/rdbms/orclbi/orclbi
      1 Diag Trace            /u01/oracle/diag/rdbms/orclbi/orclbi/trace
      1 Diag Alert            /u01/oracle/diag/rdbms/orclbi/orclbi/alert
      1 Diag Incident         /u01/oracle/diag/rdbms/orclbi/orclbi/incident
      1 Diag Cdump            /u01/oracle/diag/rdbms/orclbi/orclbi/cdump
      1 Health Monitor        /u01/oracle/diag/rdbms/orclbi/orclbi/hm
      1 Default Trace File    /u01/oracle/diag/rdbms/orclbi/orclbi/trace/orcl_ora_22769.trc
      1 Active Problem Count  8
      1 Active Incident Count 20

Automatic Dignostic Repository (ADR)

El ADR es un repositorio de ficheros para el diagnostico de la base de datos, almacena trazas, dumps, ficheros de alerta, reportes de monitorización, etc. Es una estructura de directorios unificada para todas las plataformas y para los diferentes productos (ASM, BD). Comienza a utilizarse con Oracle 11g.Cada instancia tiene su propia estructura de directorios. 

Alert Log

El alert log es un archive XML que contiene un log cronológico de los mensajes de la base de datos. Se almacena en ADR y incluye los siguientes mensajes:
• Errores criticos (incidencias)
• Operaciones administrativas como levantar la base de datos o pararla.
• Errores en la actualización de vistas materializadas.
• Otros eventos en la base de datos.
El alert log se puede consultar a través del Entrepise Manager o con la utilidad ADRCI. Existe también una versión en formato texto, per  Oracle que recomienda que no se utilice porque está desestructurada y puede cambiar de versión a versión.

Archivos Trace, Dumps y  Core
Los archivos Trace dumps y core files contienen datas de diagnóstico para investigar los problemas de la base de datos. Se almacenan en ADR
Trace Files
Cada servidor o proceso de background puede escribir en un fichero trace asociado. Los ficheros trace se actualizan periódicamente a lo largo de la vida del proceso y pueden contener información de su estatus, actividades y errores. Cuando un proceso detecta un error critico, este escribe la información sobre el error en un fichero de trace. La facilidad SQL trace también permite información de rendimiento de un sql concreto. Se puede activar el sql trace para una sesión o para una instancia.
Los nombres de ficheros de trace dependen del la plataforma. Normalmente contiene en su nombre el Oracle SID, el nombre del proceso de background  y el numero de proceso del sistema operativo. Un ejemplo orcl_ora_344.trc. Estos ficheros van acompañados de un fichero (.trm), el cual contiene información estructurada del fichero trace.
Dumps
Un dump es un tipo específico de fichero de trace. Un dump es normalmente datos de diagnisto de un momento determinado como respuesta a un evento (como una incidencia)apesar de que los traces intentan ser un salida continua de datos de diagnostic. Cunado ocurre una incidencia, la base de datos escribe uno o más dumps en el directorio  creado para la incidencia
Core
Un archivo core contienen  un volcado de memoria, en formato binario. Los archivos core incluyen la cadena core y el proceso de sistema operativo. Los archivos Core son útiles solo a los ingenieros de soporte de Oracle. Esto tipo de archivo no se encuentra en todas las plataformas.
Otros components de ADR

A demás de los ficheros antes mencionados, ADR tiene un informes de monitoreo de salud, registros reparados, casos de test de sql, paquetes de incidencia y mas.
ADRCI Utilidad de línea de comandos
El ADRCI es una utilidad que permite investigar problemas, ver los reportes de salud y empaquetar y subir los ficheros de diagnostico al soporte de oracle, también permite ver lo alert.
En la próxima entrada explicaremos su contenido.