用以下的方式可以监控登入登出的用戶:
创建如下的两张表:
create table login_log -- 登入登出信息表
(
session_id int not null, -- sessionid
login_on_time date, -- 登入时间
login_off_time date, -- 登出时间
user_in_db varchar2(30), -- 登入的db user
machine varchar2(20), -- 机器名
ip_address varchar2(20), -- ip地址
run_program varchar2(20) -- 以何程序登入
);
create table allow_user -- 网络用戶表
(
ip_address varchar2(20), -- ip地址
login_user_name nvarchar2(20) -- 操作者姓名
);
创建如下的两个触发器:
create or replace trigger login_on_info -- 记录登入信息的触发器
after logon on database
Begin
insert into login_log(session_id,login_on_time,login_off_time,user_in_db,machine,ip_address,run_program)
select AUDSID,sysdate,null,sys.login_user,machine,SYS_CONTEXT('USERENV','IP_ADDRESS'),program
from v$session where AUDSID = USERENV('SESSIONID'); --当前SESSION
END;
create or replace trigger login_off_info -- 记录登出信息的触发器
before logoff on database
Begin
update login_log set login_off_time = sysdate
where session_id = USERENV('SESSIONID'); --当前SESSION
exception
when others then
null;
END;
创建如下的两张表:
create table login_log -- 登入登出信息表
(
session_id int not null, -- sessionid
login_on_time date, -- 登入时间
login_off_time date, -- 登出时间
user_in_db varchar2(30), -- 登入的db user
machine varchar2(20), -- 机器名
ip_address varchar2(20), -- ip地址
run_program varchar2(20) -- 以何程序登入
);
create table allow_user -- 网络用戶表
(
ip_address varchar2(20), -- ip地址
login_user_name nvarchar2(20) -- 操作者姓名
);
创建如下的两个触发器:
create or replace trigger login_on_info -- 记录登入信息的触发器
after logon on database
Begin
insert into login_log(session_id,login_on_time,login_off_time,user_in_db,machine,ip_address,run_program)
select AUDSID,sysdate,null,sys.login_user,machine,SYS_CONTEXT('USERENV','IP_ADDRESS'),program
from v$session where AUDSID = USERENV('SESSIONID'); --当前SESSION
END;
create or replace trigger login_off_info -- 记录登出信息的触发器
before logoff on database
Begin
update login_log set login_off_time = sysdate
where session_id = USERENV('SESSIONID'); --当前SESSION
exception
when others then
null;
END;
本文介绍了如何在Oracle数据库中通过创建login_log和allow_user表以及login_on_info和login_off_info触发器来监控用户的登录和退出信息。登录时记录session_id、登录时间、用户、机器名、IP地址和运行程序,登出时更新登录结束时间。
1058

被折叠的 条评论
为什么被折叠?



