Oracle用户登录信息的统计

Oracle用户登录信息的统计

1.创建存储Oracle用户登录信息的表:

create table stats$user_log
(
  user_id         VARCHAR2(30),
  session_id      NUMBER(10),
  host_name       VARCHAR2(30),
   last_module     VARCHAR2(30),
  logon_day       DATE,
  logon_time      VARCHAR2(15),
  logoff_day      DATE,
  logoff_time     VARCHAR2(10),
  elapsed_minutes NUMBER(10)
)

 

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

create or replace trigger logon_trigger
after logon on database
begin
  insert into stats$user_log
  values(user,
  sys_context('userenv','sessionid'),
  sys_context('userenv','host'),
  null,
  sysdate,
  to_char(sysdate,'hh24:mi:ss'),
  null,
  null,
  null
  );
  end;

 

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

create or replace trigger logoff_trigger
  before logoff on database
begin
 update stats$user_log
     set last_module =
         (select module
            from v$session
           where sys_context('USERENV', 'SESSIONID') = audsid)
   where sys_context('USERENV', 'SESSIONID') = session_id;

  update stats$user_log
     set logoff_day = sysdate
   where sys_context('USERENV', 'SESSIONID') = session_id;

  update stats$user_log
     set logoff_time = to_char(sysdate, 'hh24:mi:ss')
   where sys_context('USERENV', 'SESSIONID') = session_id;

  update stats$user_log
     set elapsed_minutes = round((logoff_day - logon_day) * 1440)
   where sys_context('USERENV', 'SESSIONID') = session_id;
end;

 


4.查看用户登入登出信息:

 

 

 

 

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值