标签:
系统触发器用于监视数据库服务的打开、关闭、错误等信息的取得,或者是监控用户的行为操作等。如果要创建系统触发器,可以使用如下的语法
CREATE [OR REPLACE] TRIGGER 触发器名称 [BEFORE | AFTER] [数据库事件] ON [DATABASE | SCHEMA] [WHEN 触发条件] [DECLARE] [程序声明部分 ;] BEGIN 程序代码部分 ; END [触发器名称] ;
NO. | 事件 | 触发时机 | 描述 |
1 | STARTUP | AFTER | 数据库实例启动之后触发 |
2 | SHUTDOWN | BEFORE | 数据库实例关闭之前触发 |
3 | SERVERERROR | AFTER | 出错误时触发 |
4 | LOGON | AFTER | 用户登录后触发 |
5 | LOGOFF | BEFOR | 用户注销前触发 |
示例一、登录登出日志功能
--创建序列 CREATE SEQUENCE user_log_seq; --创建日志表 CREATE TABLE user_log( logid NUMBER CONSTRAINT pk_logoid PRIMARY KEY, username VARCHAR2(50) NOT NULL, logodate DATE, logoffdate DATE, ip VARCHAR2(20), logtype VARCHAR2(20) );
--创建登录触发器 create or replace trigger logon_trigger AFTER LOGON ON DATABASE declare begin INSERT INTO user_log(logid,username,logodate,ip,logtype) VALUES(user_log_seq.nextval,ora_login_user,SYSDATE,ora_client_ip_address,‘LOGON‘); end logon_trigger;
--创建登出触发器 CREATE OR REPLACE TRIGGER LOGON_TRIGGER BEFORE LOGOFF ON DATABASE DECLARE BEGIN INSERT INTO USER_LOG (LOGID, USERNAME, LOGOFFDATE, IP, LOGTYPE) VALUES (USER_LOG_SEQ.NEXTVAL, ORA_LOGIN_USER, SYSDATE, ORA_CLIENT_IP_ADDRESS, ‘LOGFF‘); END LOGON_TRIGGER;
切换用户进行登录
使用管理登录,查看user_log表
SELECT * FROM user_log;
标签:
原文地址:http://www.cnblogs.com/liunanjava/p/4220194.html