26 Mayıs 2011 Perşembe

DBMS_AUDIT_MGMT Paketi ve Audit Trail Bilgilerinin Taşınması

DBMS_AUDIT_MGMT

Oracle veritabanı 11g R1 ile audit işlemleri varsayılan olarak açık şekilde gelmekteydi. Oracle veritabanı 11g R2 ile birlikte audit trail bilgilerinin daha iyi yönetilmesi sağlanmıştır. Bunu, DBMS_AUDIT_MGMT paketi ile sağlayabilmekteyiz.

SET_AUDIT_TRAIL_LOCATION bir prosedür ve DBMS_AUDIT_MGMT paketine aittir. Bu prosedür ile standart ve/veya FGA (Fine Grained Auditing) lokasyonunu değiştirebiliyoruz. OS seviyesinde bir değişiklik yapabilmek şu an için mümkün değildir.

İlgili prosedür iki adet argüman almaktadır;

1) AUDIT_TRAIL_TYPE: Hangi tipteki audit trail'in yerinin değiştirileceği bilgisidir.
2) AUDIT_TRAIL_LOCATION_VALUE: Hangi tablespace'a audit trail'in yerinin taşınacağını bilgisidir.

AUDIT_TRAIL_TYPE için 3 sabit bulunmaktadır;

1) DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD: Standart audit trail (AUD$)
2) DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD: FG audit trail (FGA_LOG$)

3) DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD: Hem standart hem de FGA trail

Küçük bir örnek ile devam edersek;

SQL> SELECT TABLE_NAME, TABLESPACE_NAME
FROM DBA_TABLES
WHERE TABLE_NAME IN ('AUD$', 'FGA_LOG$');

TABLE_NAME                            TABLESPACE_NAME
------------------------------------------------------------------------

AUD$                                            SYSTEM
FGA_LOG$                                  SYSTEM

--> Standart ve FGA bilgilerinin system tablespace'inde bulunduğunu ve herhangi bir audit aksiyonu ile buralara log'lanacağını gördük. Şimdi ise bu tabloların bulunmasını istediğimiz başka bir alanı, yani tablespace'i göstereceğiz ancak önce ilgili tablespace'i yaratmamız gerekiyor;

SQL> CREATE TABLESPACE 'OGAN_AUDIT'
DATAFILE '/u01/oracle/ogan_audit.dbf'
SIZE 100M AUTOEXTEND ON NEXT 10M;

--> OGAN_AUDIT isminde bir tablespace yarattım ve 100 MB büyüklüğünde bir de datafile tanımladım. Şimdi ise ilgili prosedür ile hem startdart hem de FGA audit bilgilerini taşıyacağım;

SQL> BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
AUDIT_TRAIL_LOCATION_VALUE => 'OGAN_AUDIT');
END;
/

SQL> SELECT TABLE_NAME, TABLESPACE_NAME
FROM DBA_TABLES
WHERE TABLE_NAME IN ('AUD$', 'FGA_LOG$');

TABLE_NAME                            TABLESPACE_NAME
------------------------------------------------------------------------
AUD$                                           OGAN_AUDIT
FGA_LOG$                                 SYSTEM

SQL> BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,
AUDIT_TRAIL_LOCATION_VALUE => 'OGAN_AUDIT');
END;
/

SQL> SELECT TABLE_NAME, TABLESPACE_NAME
FROM DBA_TABLES
WHERE TABLE_NAME IN ('AUD$', 'FGA_LOG$');

TABLE_NAME                            TABLESPACE_NAME
------------------------------------------------------------------------
AUD$                                           OGAN_AUDIT
FGA_LOG$                                 OGAN_AUDIT

--> Her iki tipteki audit trail bilgilerinin bundan sonra OGAN_AUDIT tablespace'inde bulundurulmasını sağladım. Şimdi ise geri alacağım.

SQL> BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
AUDIT_TRAIL_LOCATION_VALUE => 'SYSTEM');
END;
/

SQL> SELECT TABLE_NAME, TABLESPACE_NAME
FROM DBA_TABLES
WHERE TABLE_NAME IN ('AUD$', 'FGA_LOG$');

TABLE_NAME                            TABLESPACE_NAME
------------------------------------------------------------------------
AUD$                                           SYSTEM
FGA_LOG$                                  SYSTEM

Önceki audit trail bilgilerinin taşınması, işletim sistemi kaynaklarına ve önceki bilgilerin ne kadar fazla veya az olduğuna göre süre bakımından değişebilmektedir.

İyi çalışmalar.

Ogan

Hiç yorum yok:

Takip et: @oganozdogan