sábado, 25 de octubre de 2008

¿La auditoría llenó el tablespace System? Pues ¡muévala a otro tablespace!

Ya sea en cumplimiento de alguna regulación o por medida preventiva, en algún momento haremos uso de la auditoría standard y, ¿por qué no?, de la auditoria fina (FGA). Pues bien, si escogiste como destino la base de datos, ésta será registrada en tablas residentes en el tablespace System; tarde o temprano éste se llenará y allí empiezan los problemas. Hay algunas soluciones documentadas y otras no tanto, pero si tienes Oracle 10gR2 10.2.0.3 o superior, hay una forma simple y, lo que es mejor, soportada de hacerlo.

Estamos hablando del flamante package DBMS_AUDIT_MGMT, mismo que nos permite, sin mucho esfuerzo, dar mantenimiento a los registros de auditoria, incluyendo tareas como eliminación de los registros, creación de tareas para la eliminación de los registros y tambien para trasladar las tablas aud$ y fga_log$ a un tablespace de usuario, que es lo que justamente veremos ahora en acción.
  1. Primero crearé el tablespace al cual trasladaré las tablas de auditoría.
  2. SQL> create tablespace auditoria datafile size 100M;Tablespace created.
  3. Ahora a mover las tablas a su nuevo destino.
  4. SQL> BEGIN
      2  DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(
      3  audit_trail_type=> DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
      4  audit_trail_location_value => 'AUDITORIA' );
      5  END;
      6  /
    PL/SQL procedure successfully completed.
  5. Verificando que el traslado se completó.
  6. SQL> select owner, segment_name, segment_type
      2  from dba_segments
      3  where tablespace_name = 'AUDITORIA';
    OWNER      SEGMENT_NAME                   SEGMENT_TYPE
    ---------- ------------------------------ ---------------
    SYS        SYS_LOB0000059750C00028$$      LOBSEGMENT
    SYS        SYS_LOB0000059750C00013$$      LOBSEGMENT
    SYS        SYS_IL0000059750C00028$$       LOBINDEX
    SYS        SYS_IL0000059750C00013$$       LOBINDEX
    SYS        FGA_LOG$                       TABLE
    SYS        AUD$                           TABLE
    6 rows selected.

Tarea cumplida, y en contados minutos, adios procedimientos engorrosos  y sujetos a errores, ¡bienvenida la simplicidad!

Para poder usar este package debes obtener de Metalink el patch que corresponde a la versión que estés usando, recuerda que solo están disponibles para versiones 10.2.0.3 y superiores. Empieza por revisar el Note 731908.1 New Feature DBMS_AUDIT_MGMT To Manage And Purge Audit Information y luego dale una leída a la documentación, para que te enteres de todas las posibilidades de esta nueva facilidad.

¿Te pareció interesante este artículo?, ¿te quedaron algunas dudas?, ¿quieres sugerirme un tema a tratar?, pues déjame tus comentarios o envíame un email y para que NO te pierdas ningún Post, suscríbete por email ahora mismo!

4 comentarios, agrega el tuyo!

Anónimo dijo...

Buenos Dias, permitame felicitarlo por la calidad de su pagina, no solo del aspecto tecnico , tambien de la parte de superacion que debe tener cada persona , me parecio divertido la forma como narro sus experiencias. Si la familia es la razon de todos los esfuerzos.

Gilberto Ariza Pez
Bogota Colombia

Enrique Orbegozo dijo...

Hola Gilberto,
Gracias por tus palabras, en la vida real soy un bromista empedernido, en el Blog soy más bien serio o al menos eso creo, que bueno que lo veas divertido :-)

Anónimo dijo...

Hola Enrique, excelente documento, casualmente estoy con este problema y me gustaria implementarlo, asi que queria hacer las siguientes preguntas:
1._ Al ejecutar el procedimiento de traslado de la auditoria al nuevo tablespace no hay afectacion en la base de datos?.
2._ Que tan rapido es el traslado ya que la tabla AUD$ tiene un tamaño de 19GB.
Atte,
Emilio.

Enrique Orbegozo dijo...

Hola Emilio, lo que Oracle indica es que se debe suspender temporalmente la generación de información de auditoria, por lo que recomienda hacerlo con la base de datos iniciada en modo restricted. Lo que tome mover los datos depende exclusivamente de las capacidades de procesamiento de tu computador.
Saludos.