http://www.bugcode.com (收藏,设为首页)
万事开头难,贵在坚持,要相信自己的选择 (手机请访问 http://3g.dlog.cn/bugCode)

oracle客户事件触发器

2008年4月8日(Tuesday) 13点35分 作者: wuheng66888 天气: 心情: 一般

客户事件触发器
(此文为greenfish原创,转载请注明)
客户事件触发器是指基于客户事件所建立的触发器,客户事件是指与客户登陆、用户注销、DDL以及DCL相关的事件,如下所示。
? BEFORE ALTER|AFTER ALTER:该类事件由ALTER语句触发。
? BEFORE DROP|AFTER DROP:该类事件由DROP语句触发。
? BEFORE ANALYZE|AFTER ANALYZE:该类事件由ANALYZE语句触发。
? BEFORE ASSOCIATE STATISTICS|ALTER ASSOCIATE STATISTICS:该类事件由统计关联语句触发。
? BEFORE AUDIT|AFTER AUDIT:该类事件由AUDIT语句触发。
? BEFORE NOAUDIT|AFTER NOAUDIT:该类事件由NOAUDIT语句触发。
? BEFORE COMMENT|AFTER COMMENT:该类事件由COMMENT语句触发。
? BEGORE CREATE|AFTER CREATE:该类事件由CREATE语句触发。
? BEFORE DDL|BEFORE DDL:该类事件由各种DDL语句触发。
? BEFORE DISASSOCIATE STATISTICS|AFTER DISASSOCIATE STATISTICS:该类事件由统计无关语句触发。
? BEFORE GRANT|AFTER GRANT:该类事件由GRANT语句触发。
? BEFORE LOGOFF:该类事件在注销会话之前触发。
? BEFORE LOGON:该类事件在登录成功之后触发。
? BEFORE RENAME|AFTER RENAME:该类事件由RENAME语句触发。
? BEFORE REVOKE|AFTER REVOKE:该类事件由REVOKE语句触发。
? AFTER SUSPEND:该事件在暂停SQL语句时触发。
? BEFORE TRUNCATE|AFTER TRUNCATE:该类事件由TRUNCATE语句触发。
客户事件触发器只能由SYS用户建立,下面以建立登录触发器和DDL触发器为例。说明使用客户事件触发器的方法。
1.建立登录发器
为了记载用户登录事件,可以建立登录触发器。下面以审计登录用户的名称、登录时间和客户端IP地址为例。说明使用登录触发器的方法。在建立登录触发器之前首先建立审计表AUD_LOGON_TAB。
conn sys/oracle as sysdate
create table aud_logon_tab(
    username varchar2(20),time date,addr varchar2(20));
create or replace trigger tr_logon
after logon on database
begin
 insert into aud_logon_tab
values(ora_login_user,sysdate,ora_client_ip_address);
end;
/
conn
scott/tiger@test
select * from sys.aud_logon_tab;
2.建立DDL触发器
为了记录系统所发生的DDL事件,可以建立DDL触发器。下面以审计在SCOTT方案上的DDL事件为例,说明使用DDL触发器的方法。在建立DDL触发器之前首先建立审计表AUD_DDL_TAB。
conn sys/oracle as sysdate
create table aud_ddl_tab(
   event varchar2(20),username varchar2(10),owner varchar(10),
   objname varchar2(20),objtype varchar2(10),time date);
create or replace trigger tr_ddl
   fter ddl on scott.schema
   begin
   insert into aud_ddl_tab values(
   ors_sysevent,ora_login_user,ora_dict_obj_owner,
   ora_dict_obj_name,ora_dict_obj_type,sysdate);
   end;
   /
conn
scott/tiger@test
create table temp(cola int);
drop table temp;
select username,event,objtype,objname from sys.aud_ddl_tab;


关键字:事件触发器  BEFORE ALTER|AFTER ALTER 
       BEFORE TRUNCATE|AFTER TRUNCATE  
       AFTER SUSPEND
       BEFORE REVOKE|AFTER REVOKE
       BEFORE RENAME|AFTER RENAME
       BEFORE GRANT|AFTER GRANT

评论者: 制氮机 2008-11-7 14:12 (Friday)
姓名: 
邮箱:  {可选}
网址:  {可选} 此评论只有我和写日记的人查阅
校验码: ... <我看不清楚>
网记为您提供手机和互联网同步的个人主页,带给你不一样的体验