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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM