客户事件触发器是指基于客户事件所建立的触发器,客户事件是指与客户登陆、用户注销、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
本文转自
http://www.bugcode.com/diary/21485
? 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
本文转自
http://www.bugcode.com/diary/21485