通过Trigger监控Logon和Logoff
1,创建审计信息的Table
create table login_log( session_id int not null, SID INT, login_on_time date, login_off_time date, user_in_db varchar2(100), machine varchar2(100), os_user varchar2(100), ip_address varchar2(20), run_program varchar2(100));
create or replace trigger login_on_infoafter logon on databaseBegin insert into login_log(session_id,SID,login_on_time,login_off_time,user_in_db,machine,os_user,ip_address,run_program) select AUDSID,SID,sysdate,null,sys.login_user,machine,a.OSUSER,SYS_CONTEXT('USERENV','IP_ADDRESS'),NVL(program,MODULE) from v$session a where AUDSID = USERENV('SESSIONID');END;
create or replace trigger login_off_infobefore logoff on databaseBegin update login_log set login_off_time = sysdate where session_id = USERENV('SESSIONID');exception when others then null;END;
SELECT * FROM login_log;
Thu Apr 7 14:58:00 2011Errors in file /opt/oracle/app/oracle/admin/bks/bdump/bks_ora_7456.trc:ORA-04098: trigger 'SYS.LOGIN_ON_INFO' is invalid and failed re-validation