用以下的方式可以监控登入登出的用户:
创建如下的两张表:
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; |