Oracle--创建TRIGGER实现跟踪用户登录信息

Posted Leader.Z

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle--创建TRIGGER实现跟踪用户登录信息相关的知识,希望对你有一定的参考价值。

---创建日志表记录用户登录信息
create  table user_log
(
  user_id         VARCHAR2(30),
  session_id      NUMBER(10),
  host_name       VARCHAR2(30),
  last_module     VARCHAR2(30),
  logon_day       DATE,
  logoff_day      DATE,
  elapsed_minutes NUMBER(10)
);

 

--创建用户登录之后的触发器统计用户登陆时的信息:

create or replace  trigger logon_trigger
after logon on database
begin
  insert into user_log
  values(
  user,
  sys_context(\'userenv\',\'sessionid\'),
  sys_context(\'userenv\',\'host\'),
  null,
  sysdate,
  null,
  null
  );
  end;

select * from user_log;
 

--创建用户登出之前的触发器统计用户登出时的信息:

create or replace  trigger logoff_trigger
  before logoff on database
begin
 update user_log
     set last_module =
         (select module
            from v$session
           where sys_context(\'USERENV\', \'SESSIONID\') = audsid)
   where sys_context(\'USERENV\', \'SESSIONID\') = session_id;
  update user_log
     set logoff_day = sysdate
   where sys_context(\'USERENV\', \'SESSIONID\') = session_id;
  update user_log
     set elapsed_minutes = round((logoff_day - logon_day) * 1440)
   where sys_context(\'USERENV\', \'SESSIONID\') = session_id;
end;

 

以上是关于Oracle--创建TRIGGER实现跟踪用户登录信息的主要内容,如果未能解决你的问题,请参考以下文章

我想不通的 Oracle SQL Developer SQL TRIGGER 创建问题

Oracle - 特定用户的审计跟踪

oracle中怎样让一个用户查询其它用户的trigger?

dblink+trigger实现两个Oracle数据库中两个表的数据同步

oracle 主键生成策略-sequence序列+trigger触发器

如何使用Oracle跟踪文件?