3.07.2008

PLsql bilinmesi gerekenler -5

11-Audit OBJECTS:

önemli objeleri izleme. Bu iş her ne kadar admin tarafında yapılması gereken bir iş gibi gözuksede bazı durumlar yazılımcılık olmadan yapılamaz.


CREATE OR REPLACE TRIGGER create_object_trigger
AFTER CREATE ON DATABASE
BEGIN
INSERT INTO audit_object_mods
(mod_date, type_of_mod, mod_user,
instance_num, database_name,
object_owner, object_type, object_name)
VALUES
(sysdate, ora_sysevent, ora_login_user,
ora_instance_num, ora_database_name,
ora_dict_obj_owner, ora_dict_obj_type,
ora_dict_obj_name);
end;
/


tabi bu örnektende anlaşıldığı gibi daha önceden audit_object_mods isminde bir tablo yaratmamız gerekir.


CREATE OR REPLACE TRIGGER alter_object_trigger
AFTER ALTER ON DATABASE
BEGIN
INSERT INTO audit_object_mods
(mod_date, type_of_mod, mod_user,
instance_num, database_name,
object_owner, object_type, object_name)
VALUES
(sysdate, ora_sysevent, ora_login_user,
ora_instance_num, ora_database_name,
ora_dict_obj_owner, ora_dict_obj_type,
ora_dict_obj_name);
end;
/
Aşağıdaki şekildede raporlayabiliriz.
,


SET LINESIZE 130
SELECT mod_date, type_of_mod, mod_user, instance_num,
database_name, object_owner, object_type,
object_name
FROM audit_object_mods
ORDER BY mod_date, type_of_mod, object_owner,
object_type, object_name;



Bir başka örnekte ise plsql userının drop yapmasını önlemek mümkündür.

CREATE OR REPLACE TRIGGER stop_drop_trigger
BEFORE DROP ON plsql_user.SCHEMA
BEGIN
RAISE_APPLICATION_ERROR (
num => -20000,
msg => 'Obje drop yapamazsınız');
END;
/


SHOW USER
USER is "PLSQL_USER"
DROP TABLE temp;
drop table temp
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-20000: Obje drop yapamazsınız
ORA-06512: at line 2

Hiç yorum yok: