Habiliar la auditoría para la base de datos
Parámetros de inicio requeridos:
-- DB_EXTENDED registra también la sentencia SQL que afecta al objeto de base de datosALTER SYSTEM SET AUDIT_TRAIL = DB_EXTENDED SCOPE = SPFILE;-- Opcional: si se quieren las sentencias ejecutadas por SYSALTER SYSTEM SET AUDIT_SYS_OPERATIONS = FALSE SCOPE = SPFILE;-- Opcional: el directorio por defecto es $ORACLE_HOME/rdbms/auditALTER SYSTEM SET AUDIT_FILE_DEST = '/tmp' DEFERRED SCOPE = SPFILE; Luego de realizar estos cambios con el usuario system o algún otros con privilegios de administración, deberá reiniciar la instancia para que surtan efecto los cambios.
En mi caso, necesitaba auditar las sentencias ejecutadas por un usuario específico, esto se lo indico con la sentencia AUDIT:
AUDIT ALL BY SCOTT BY SESSION;Esto sólo audita sentencias preconfiguradas (las mismas se indican en los manuales de Oracle). Yo a su vez, agregué la auditoría de las sentencias clásicas SELECT, UPDATE, DELETE e INSERT.
AUDIT SELECT TABLE, UPDATE TABLE, DELETE TABLE, INSERT TABLE, TABLE, INDEX, SYNONYM, EXECUTE PROCEDURE BY SCOTT BY SESSION;Básicamente, el resultado de esta auditoría queda registrada en la tabla SYS.AUD$
Con la sentencia NOAUDIT se deshabilita la auditoría.
NOAUDIT ALL BY SCOTT;
Un dato adicional:
Para ver los valores de los parámetros actuales de la instancia, puede consultar la vista V$PARAMETER ó los parámetros almacenados en el SPFILE a través de la vista V$SPPARAMETER.
Agrego una consulta para determinar con el usuario SYS, qué usuarios están auditando y sobre qué sentencias:
SELECT usr.name, map.name FROM audit$
JOIN stmt_audit_option_map map USING(option#)
JOIN user$ usr USING(user#)
Sino, prueben con esta:
SELECT * FROM DBA_STMT_AUDIT_OPTS;