En más de una ocasión hemos querido volcar los datos
de auditoría de una base de datos a otra y más concretamente las tablas:
- AUD$
- FGA_LOG$
Supongamos que tenemos una instalación de Oracle 10g
R2 en concreto 10.2.0.1, (sí, las hay) y no disponemos de DBMS_AUDIT_MGMT
(nota de Oracle Support 731908.1) para
purgar y gestionar la información de auditoría.
¿Cómo hacerlo?
Este paquete solo es para Audit Vault
10.2.0.3 y el uso fuera de este utilitario no esta soportada, sin embargo , desde la versión 11gr2 está
disponible de forma libre, aunque fue liberada para la versión 11gr1 específicamente
en el patchset 11.1.0.7, además está disponible para la versión 10.2.0.3 en el parche 6989148 ,
también disponible en la versión 10.2.0.4 en el parche 6996030.
¿Cómo hacerlo?
Estas tablas son propiedad de SYS, el usuario más
poderoso dentro de una base de datos Oracle (vamos es como Hulk en Avengers)
Recordemos que estas tablas no se pueden practicar particiones (mientras siga
la tabla en el tablespace system.) y puede que queramos que desaparezcan del
tablespace, porque su crecimiento desmesurado puede poner en riesgo el
rendimiento de nuestro sistema.
La forma de utilizar
a nuestro Hulk (usuario SYS) a la hora de importar los datos es usarlo
de la siguiente manera:
$>imp \"sys/Menele#32
as sysdba\" tables=fga_log$ file=/oracle/home/table.dmp
ignore=Y
buffer=1000000
|
$>imp \"sys/Menele#32
as sysdba\" tables=aud$ file=/oracle/home/table.dmp ignore=Y buffer=1000000
|
La opción Ignore=Y,
permite que no se recree la table y se importen solo los datos.
Para solo purgar datos podemos utilizar la siguiente estrategia:
SQL> connect / as sysdba
Connected.
SQL> truncate table fga_log$;
Table truncated. |
Puedes
borrar determinados registros usando la columna TIMESTAMP# (date) como sigue:
SQL> delete from fga_log$ where timestamp# <
sysdate-14;
|