by Nurgün Özgür
23. September 2009 23:16
MSSQL'da olmayan ve Oracle mümkün olan SELECT TRIGGER'dan bahsetmek istiyorum.
Aslında bunu yapabilmek için trigger yerine policy yaratılıyor(Fine-grained Auditing).
1. Önce bir policy eklemeniz gerekiyor
BEGIN
DBMS_FGA.ADD_POLICY (OBJECT_SCHEMA=>'COMPANY', OBJECT_NAME=>'PAYROLL', POLICY_NAME=>'PAYROLL_ACCESS');
END;
2. Log işlemini tetikleyecek SELECT'i çalıştırın.
Örnek: çalışanların maaşlarını öğrenmeye çalışalım.
SELECT * FROM COMPANY.PAYROLL;
3. Select sonucunda oluşan Log'u inceleyin. Burada maaş tablosunu kim ne zaman ve neler sorguladığını görebiliriz.
SELECT TIMESTAMP, DB_USER, OS_USER, OBJECT_SCHEMA, OBJECT_NAME, SQL_TEXT FROM DBA_FGA_AUDIT_TRAIL;
Sonuç:
TIMESTAMP DB_USER OS_USER OBJECT_SHEMA OBJECT_NAME SQL_TEXT
------------ ---------- ---------- ----------------- ---------------- -------------------------------------
23-SEP-09 sysadm nurgun COMPANY PAYROLL select * from COMPANY.PAYROLL