Oracle使用系統級觸發器審計重要帳號的DDL語句

rongshiyuan發表於2012-10-24

Oracle使用系統級觸發器審計重要帳號的DDL語句

如果要審計資料庫中的DDL操作,那麼可以通過DDL觸發器來實現,本節介紹一個例子,把資料庫中的所有DDL操作都記錄下來。本例子可以在oracle 8i或更高的版本中使用。

第一步,建立表空間和相關的日誌表:

create tablespace statlog datafile '/oradata/statlog.dbf' size 200m;

create table stat$log_ddl

(

ddl_date date,

user_name varchar2(30),

ip_addr VARCHAR2(30),

obj_name VARCHAR2(50),

ddl_type VARCHAR2(30),

object_type VARCHAR2(18),

owner VARCHAR2(30),

SQL_TEXT VARCHAR2(1000)

) TABLESPACE STATLOG;

第二步,建立資料庫級的DDL觸發器,把所有的DDL操作都記錄下來

CREATE OR REPLACE TRIGGER DDL_audit AFTER CREATE OR ALTER OR DROP OR TRUNCATE OR

GRANT OR REVOKE OR RENAME

on DATABASE

declare

ipaddr varchar2(20);

STEXT VARCHAR2(1000);

BEGIN

begin

select sys_context('USERENV', 'IP_ADDRESS') into ipaddr FROM dual;

exception when others then

ipaddr:='-';

end;

begin

select SQL_TEXT INTO STEXT FROM v$open_cursor WHERE UPPER(sql_text) LIKE 'ALTER%';

exception when others then

STEXT:='-';

end;

insert into sys.stat$log_DDL values

(sysdate,

user,

nvl (ipaddr,'-'),

NVL(ora_dict_obj_name,'-'),

NVL(ORA_SYSEVENT,'-'),

NVL(ora_dict_obj_type,'-'),

NVL(ora_dict_obj_owner,'-'),

STEXT

);

exception when others then

null;

end;

/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17252115/viewspace-747054/,如需轉載,請註明出處,否則將追究法律責任。

相關文章