lunes, 9 de diciembre de 2019

10. ACERCA DEL ALERT LOG EN ORACLE


·     El fichero de alertas de oracle alert.log es uno de los ficheros que tradicionalmente revisamos en busca de errores de la base de datos.

    10.1. UBICACIÓN DEL ALERT LOG EN ORACLE 11G

             select * FROM V$PARAMETER where name like '%background_dump_dest%';
                   
                   show parameter background;
                   
                   show parameter background_dump_dest;

    10.2. UBICACIÓN DEL ALERT.LOG DE ORACLE 12C Y ORACLE 18C

-      select * from v$diag_info;

             $ORACLE_BASE/diag/rdbms/<sid>/<sid>/trace and is named alert_<sid>.log

            Esta otra sentencia es muy completa

            set lines 800
                  col inst_id form 9999 head inst
                  col name form a25
                  col value form a80 wrap
                  select * from v$diag_info order by name; 
      


Hasta la versión 11g esta monitorización se hacía por medio del scripts que interactuaban con ficheros del sistema operativo, lo que nos llevaba a tener que mantener estos scripts para las distintas versiones de shells de sistema, o tener que instalar algún tipo de intérprete en el sistema que nos lo gestionara de manera multiplataforma.

Una de las grandes ventajas de la 11g es que Oracle nos ha obsequiado con una tabla de base de datos que mapea esta información del alert.log dentro de la base de datos. Estamos hablando de la tabla x$dbgalertext;

Mediante la tabla x$dbgalertext podemos obtener toda la información que está en el alert.log, su contenido es:

SQL>desc X$DBGALERTEX

Ahora bien, ¿cómo accedemos a ella?

La tabla no puede ser accedida directamente desde un usuario que no sea sys, así que, lo que haremos será el crear una vista sobre esta tabla (a la que llamaremos por ejemplo ficheroalert ) y permitirle que lo vea a nuestro usuario de monitorización.

SQL>create view ficheroalert as select  * from sys.x$dbgalertext;
grant select on sys.ficheroalert to MONITORIZACION;

·         La siguiente sentencia permite ver las veces que se ha hecho un ALTER en lo que llevamos de año.

SQL>select   
 ORIGINATING_TIMESTAMP,
 MESSAGE_TEXT
    from sys.x$dbgalertext
where  ORIGINATING_TIMESTAMP >
      TO_TIMESTAMP('01-01-14 00:00:00','DD-MM-RR HH24:MI:SS')
 and ( MESSAGE_TEXT like 'ALTER%');

·        La siguiente sentencia permite ver las veces que se han hecho un ALTER en lo que llevamos de un año (quitando el rman)

SQL>select   
   ORIGINATING_TIMESTAMP,
   MESSAGE_TEXT
     from sys.x$dbgalertext
   where  ORIGINATING_TIMESTAMP >
      TO_TIMESTAMP('01-01-14 00:00:00','DD-MM-RR HH24:MI:SS')
     and module_id not in ('rman')
     and ( MESSAGE_TEXT like 'ALTER%')
    and( MESSAGE_TEXT not like 'ALTER DATABASE BACKUP CONTROLFILE TO %')

·        La siguiente sentencia permite ver las veces que se ha llevado un evento de arrancado de la bases de datos.

SQL>select   
   ORIGINATING_TIMESTAMP,
   MESSAGE_TEXT
     from sys.x$dbgalertext
   where  ORIGINATING_TIMESTAMP >
         TO_TIMESTAMP('01-01-14 00:00:00','DD-MM-RR HH24:MI:SS')
 and( MESSAGE_TEXT like 'ALTER DATABASE OPEN%');

10.3. BUSCANDO LA UBICACIÓN DEL ALERT.LOG CON ADRCI (Linux, Solarix)

ADRCI: (ADR Command Interpreter) está disponible a partir de la versión 11g de Oracle y nos permite rotar/eliminar de manera sencilla así como establecer las políticas de retención para los logs de las instancias de base de datos, tanto los de Alert como Trace, cdump, hm, incident y utscdmp.

Su manejo es sencillo, para nuestro caso solo es hacer el llamado de la herramienta desde el prompt del sistema operativo.

-bash-5.0$ adrci

ADRCI: Release 12.1.0.2.0 - Production on Sat Nov 27 08:20:37 2021

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

ADR base = "/u01/app/oracle"

adrci> show alert

Choose the home from which to view the alert log:

1: diag/clients/user_oracle/host_2811459066_82
2: diag/rdbms/incorepr/INCOREPR2
3: diag/rdbms/sfcorepr/SFCOREPR1
4: diag/rdbms/sfcorepr/SFCOREPR2
5: diag/rdbms/repoprd/REPOPRD2
6: diag/tnslsnr/colombia4/mgmtlsnr
7: diag/tnslsnr/colombia4/listener_backup
8: diag/tnslsnr/colombia4/listener_copia_dataguard
9: diag/tnslsnr/colombia4/listener_dataguard
Q: to quit

Con el comando del SHOW podemos ver el contenido de los archivos por cantidad de lineas.

Please select option: SHOW ALERT -TAIL 50

Please select option: 3
Output the results to file: /tmp/alert_69613_1_SFCOREPR1_1.ado


1 comentario: