oracle通过触发器实现登录登出日志记录
2018-07-25 15:42
736 查看
-----删除表--- drop table userlogininfo --创建登录登出记录信息表 create table userlogininfo ( infoid int primary key not null, USERNAME VARCHAR2(30), TERMINAL VARCHAR2(50), IPADRESS VARCHAR2(20), OSUSER VARCHAR2(30), MACHINE VARCHAR2(64), PROGRAM VARCHAR2(64), SID NUMBER, SERIAL# NUMBER, AUSID NUMBER, LOGINTIME DATE default sysdate, LOGout_TIME date ) ---删除序列--- DROP SEQUENCE seq_userlogininfo ---创建自动增长序列-- CREATE SEQUENCE seq_userlogininfo INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10; ------- -----删除触发器---- DROP TRIGGER TR_LOGIN_RECORD ------创建登录触发器--- CREATE OR REPLACE TRIGGER TR_LOGIN_RECORD AFTER logon ON DATABASE DECLARE mtSession v$session%ROWTYPE; CURSOR cSession(iiQuerySid IN NUMBER) IS SELECT * FROM v$session WHERE nvl(osuser,'x') <> 'SYSTEM' and type <> 'BACKGROUND' and audsid = iiQuerySid; BEGIN OPEN cSession(userenv('SESSIONID')); FETCH cSession INTO mtSession; IF cSession%FOUND THEN INSERT INTO userlogininfo(infoid,username,logintime,terminal,ipadress,osuser,machine, program,sid,serial#,ausid) VALUES(seq_userlogininfo.nextval,USER,SYSDATE,mtSession.Terminal, SYS_CONTEXT ('USERENV','IP_ADDRESS'),mtSession.Osuser, mtSession.Machine,mtSession.Program,mtSession.Sid,mtSession.Serial#,userenv('SESSIONID')); END IF; CLOSE cSession; EXCEPTION WHEN OTHERS THEN raise; end; -----创建登出更新登出时间触发器--- create or replace trigger TR_LOGOFF_RECORD before LOGOFF ON DATABASE DECLARE mtSession v$session%ROWTYPE; CURSOR cSession(iiQuerySid IN NUMBER) IS SELECT * FROM v$session where nvl(osuser,'x') <> 'SYSTEM' and type <> 'BACKGROUND' and audsid = iiQuerySid; BEGIN OPEN cSession(userenv('SESSIONID')); FETCH cSession INTO mtSession; IF cSession%FOUND THEN UPDATE userlogininfo SET LOGOUT_TIME=SYSDATE WHERE sid=mtSession.Sid AND serial#=mtSession.Serial#; END IF; CLOSE cSession; EXCEPTION WHEN OTHERS THEN raise; END;
相关文章推荐
- 使用触发器实现记录oracle用户登录失败信息到alert.log日志文件
- 通过触发器实现记录数据的修改日志
- 通过登陆IP记录Linux所有用户登录所操作的日志
- 通过登入IP记录Linux所有用户登录所操作的日志
- Oracle学习记录——使用自定义函数和触发器实现主键动态生成
- Selenium入门记录_003_模块化测试实现登录、登出
- 通过登陆IP记录Linux所有用户登录所操作的日志
- LogBack通过MDC实现日志记录区分用户Session
- Oracle EBS 用户登录日志记录 fnd_logins
- 利用触发器实现日志记录
- Oracle中通过存储过程,Function,触发器实现解析时间类型的字段并插入的对应的数据表中
- oracle实现对表dml错误记录日志
- 通过脚本实现从日志文件中提取时间最近的几条记录
- 基于SSH2框架AspectJ的登录登出日志实现
- Asp.net MVC通过自定义特性实现Action日志记录
- Selenium入门记录_002_通过网页元素选取和操作实现登录操作
- oracle 通过触发器和sequence 实现字段自增
- oracle:通过触发器实现对数据库对象增删改动作的审计
- 触发器实现记录操作表的日志
- [Oracle] 使用触发器实现IP限制用户登录