ホームページ > データベース > mysql チュートリアル > Oracle使用系统级触发器审计重要帐号的DDL语句

Oracle使用系统级触发器审计重要帐号的DDL语句

WBOY
リリース: 2016-06-07 17:21:57
オリジナル
1244 人が閲覧しました

如果要审计数据库中的DDL操作,那么可以通过DDL触发器来实现,本节介绍一个例子,把数据库中的所有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;

/

linux

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート