Anda di halaman 1dari 6

Tips DBA Oracle, Buscar en este sitio

Linux and Other


Things

Database Administrator >


Home Page
Depuracion del Tablespace SYSTEM Database Administrator
Linux
publicado a la(s) 21 jun. 2012 6:16 por Ivan Acosta [ actualizado el 21 jun. 2012 8:38 ]
Postgres SQL
BooksMarks
Bueno esta vez, escribo mi experiencia y sucesos que me pasaron en un proceso de migración o
Contactame...
cambio de versión del software que actualmente administro. Cuando comencé con el proceso
de migración de Oracle 10g a versión 11g, observe con extrañeza que el tablespace system tenia
un crecimiento hasta del 500% en comparación con lo que tenia en versión 10g. Indagando y View My Pro le on Linked
buscando cual era el posible problema, identifique que las tablas que manejan auditoria como las
FGA_LOG$ y la AUD$ tenían un crecimiento exponencial, pero bueno encontré la solución a este
tema y eso es lo que explicare a continuación.

1. Verificamos la ubicación de estas tablas, con el fin de crear otro tablespace y mover estos
objetos a ese nuevos.

select x.table_name, x.tablespace_name, y.bytes


from dba_tables x, dba_segments y
where x.table_name in ('AUD$', 'FGA_LOG$')
and x.table_name=y.segment_name
ORDER BY x.table_name;

TABLE_NAME TABLESPACE_NAME BYTES


------------------------------ ------------------------------ ----------
AUD$ SYSTEM 34603008 Click here to read about me.
FGA_LOG$ SYSTEM 251658240
Booksmark
SYS@DESA >

Show My Personal Blog


2. Debemos crear un tablespace nuevo para, pasar estos objetos a ese nuevo datafile;

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
CREATE SMALLFILE
TABLESPACE "AUDITORIA"
LOGGING
DATAFILE '/ruta/datafile/AUDIT.DBF' SIZE 8192M REUSE AUTOEXTEND ON NEXT 1024M
MAXSIZE 12288M EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;

Tablespace creado.

SYS@DESA >

Click here to read about me personal


3. Ahora utilizamos el packague DBMS_AUDIT_MGMT, para mover estos objetos, este tiene Blog.
algunos parametros, como el de set_audit_trail_location.

BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD, Autores de la página
audit_trail_location_value => 'AUDITORIA');
Ivan Acosta
END;
junio 21, 2012
/

Procedimiento PL/SQL terminado correctamente.

Ahora veri camos que efectivamente se realizo el transpaso de estos objetos.

SELECT table_name, tablespace_name


FROM dba_tables
where table_name in ('AUD$', 'FGA_LOG$')
ORDER BY table_name;

TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
AUD$ AUDITORIA
FGA_LOG$ AUDITORIA

Ahora que hemos realizado el cambio, es necesario realizar una


buena administración y depuración de estas tablas, para ello es necesario verificar
los parámetros que tiene nuestra DB y debemos ejecutar el siguiente script.

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
COLUMN parameter_name FORMAT A30
COLUMN parameter_value FORMAT A20
COLUMN audit_trail FORMAT A20
SELECT * FROM dba_audit_mgmt_config_params;

PARAMETER_NAME PARAMETER_VALUE AUDIT_TRAIL


------------------------------ -------------------- --------------------
AUDIT FILE MAX SIZE 10000 XML AUDIT TRAIL
AUDIT FILE MAX SIZE 10000 OS AUDIT TRAIL
AUDIT FILE MAX AGE 5 OS AUDIT TRAIL
AUDIT FILE MAX AGE 5 XML AUDIT TRAIL
DB AUDIT TABLESPACE AUDITORIA STANDARD AUDIT TRAIL
DB AUDIT TABLESPACE AUDITORIA FGA AUDIT TRAIL
DB AUDIT CLEAN BATCH SIZE 10000 STANDARD AUDIT TRAIL
DB AUDIT CLEAN BATCH SIZE 10000 FGA AUDIT TRAIL
OS FILE CLEAN BATCH SIZE 1000 XML AUDIT TRAIL
OS FILE CLEAN BATCH SIZE 1000 OS AUDIT TRAIL

10 filas seleccionadas.

SYS@DESA >

En esta parte solamente nos interesan los parámetros de limpieza, con el fin de realizar la
correcta depuración de esta información. Para eso debemos ejecutar lo siguiente:

BEGIN
DBMS_AUDIT_MGMT.init_cleanup(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
default_cleanup_interval => 24 /* hours */);
END;
/

Procedimiento PL/SQL terminado correctamente.

SYS@DESA >

Bueno, ahora que hemos parametrizado el AUDIT_TRAIL, es necesario purgar los registros de
auditoría que hay hasta el momento, para ello el pakcage DBMS_AUDIT_MGMT nos permite purgar
todos los registros antes de la fecha señalada, el procedimiento SET_LAST_ARCHIVE_TIMESTAMP,
que acepta tres parámetros.

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
DECLARE
v_timestamp DATE := sysdate -21;
BEGIN
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
LAST_ARCHIVE_TIME => v_timestamp );

DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML,
LAST_ARCHIVE_TIME => v_timestamp );

DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
LAST_ARCHIVE_TIME => v_timestamp );

DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,
LAST_ARCHIVE_TIME => v_timestamp );

END;
/

Procedimiento PL/SQL terminado correctamente.

Si deseamos realizar un purgar manualmente estos registros, podemos realizarlo asi:

set linesize 150


col audit_trail format a50
col last_archive_ts format a80
SELECT audit_trail, last_archive_ts FROM dba_audit_mgmt_last_arch_ts;

AUDIT_TRAIL LAST_ARCHIVE_TS
-------------------------------------------------- --------------------------------------
------------------------------------------
OS AUDIT TRAIL 06-JUN-12 09.01.24.000000 AM -05:00
XML AUDIT TRAIL 06-JUN-12 09.01.24.000000 AM -05:00
STANDARD AUDIT TRAIL 06-JUN-12 09.01.24.000000 AM +00:00
FGA AUDIT TRAIL 06-JUN-12 09.01.24.000000 AM +00:00

Contamos los registros que tiene la tabla aud$.

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
SYS@DESA > SELECT COUNT(*) FROM aud$;

COUNT(*)
----------
194334

BEGIN
DBMS_AUDIT_MGMT.clean_audit_trail(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
use_last_arch_timestamp => TRUE);
END;
09:25:55 6 /

Procedimiento PL/SQL terminado correctamente.

SYS@DESA > SELECT COUNT(*) FROM aud$;

COUNT(*)
----------
7898

Si queremos automatizar esta limpieza, podemos realizar un JOB que se ejecute esta limpieza,
debemos ejecutar lo siguiente:

BEGIN
DBMS_AUDIT_MGMT.create_purge_job(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
audit_trail_purge_interval => 24 /* hours */,
audit_trail_purge_name => 'PURGE_ALL_AUDIT_TRAILS',
use_last_arch_timestamp => TRUE);
END;
/

Para comprobar la pametrizacion del JOB, lo validamos asi:

SELECT job_action
FROM dba_scheduler_jobs
WHERE job_name = 'PURGE_ALL_AUDIT_TRAILS';

JOB_ACTION
---------------------------------------------------------
BEGIN DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(15, TRUE); END;

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Fuentes:

http://www.oracle-base.com/articles/11g/auditing-enhancements-
11gr2.php#moving_db_audit_trail
http://oraclesid.blogspot.com.ar/search/label/DBA_AUDIT_MGMT_CONFIG_PARAMS

Comments

You do not have permission to add comments.

Recent Site Activity | Report Abuse | Powered By Google Sites

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD

Anda mungkin juga menyukai