Cambiando la tabla AUD$ a otro tablespace

De manera natural, al instalar una base de datos Oracle, la tabla AUD$ que guarda la auditoría de actividades y que es base de la vista DBA_AUDIT_TRAIL, está alojada en el tablespace SYSTEM (ver Auditando la base de datos).

De acuerdo a la cantidad de acciones que se estén auditando y de usuarios que se tengan, dicha tabla puede crecer bastante afectando al tablespace que la aloja. Al ser dicho tablespace uno de los primordiales para la base de datos de Oracle, puede repercutir en problemas serios.

Aquí muestro cómo se puede sacar a AUD$ del tablespace SYSTEM.

Para iniciar, voy a crear un tablespace temporal que guardará la tabla AUD$ y al cual, se le podrá agregar espacio según se necesite:

SQL> create tablespace db_audit
  2    datafile '/u031/data/oracle/OPROD3/db_audit01.dbf' size 1g;

Tablespace created.

Después, se crea la estructura de la nueva tabla AUD$ en el nuevo tablespace creado previamente. De momento tendrá un nombre diferente, AUD_TEMP:

SQL> create table aud_temp tablespace db_audit
  2  as
  3  select *
  4  from   aud$
  5  where  1=0;

Table created.

Una vez que ya se creó la nueva tabla, se intercambia el nombre con la actual AUD$, esto se logra renombrando a la actual AUD$ a AUD_OLD:

SQL> rename aud$ to aud_old;

Table renamed.

y la nueva tabla AUD_TEMP toma el nombre de AUD$:

SQL> rename aud_temp to aud$;

Table renamed.

Finalmente, se requiere un índice para la nueva tabla AUD$ sobre las columnas SESSIONID y SES$TID:

SQL> create index aud$_idx01 on aud$ (sessionid, ses$tid)
  2  tablespace db_audit;

Index created.

Para verificar que la tabla está creada y lista, uso uno de mis Scripts útiles para un DBA:

SQL> star objdef aud$
SQL> set echo   off
------------------------------------------------------------------------------|
ObjDef | Shows datos de un objeto.
------------------------------------------------------------------------------|
Use:     objdef object_name|%
Example: objdef dept%
------------------------------------------------------------------------------|

OWNER           OBJECT_NAME                    OBJECT_TYPE          CREATED   LAST_DDL_ STATUS
--------------- ------------------------------ -------------------- --------- --------- ---------
SYS             AUD$                           TABLE                13-SEP-13 13-SEP-13 VALID

1 row selected.

Para mayor información, se puede ver la nota 1019377.6 de My Oracle Support.

Si la información de este post te ha sido de utilidad o quieres que agregue algo más, deja por favor un comentario, contestaré a la brevedad.

Anuncios

2 Responses to Cambiando la tabla AUD$ a otro tablespace

  1. Excelente aporte, muchas gracias.
    saludos cordiales.

  2. Orlando Olguín Olvera says:

    Hola Pablo.

    Muchags gracias.

    Orlando.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: