注意,对于DBA用户无效
REM 以下表和触发器用来记录登陆信息
REM 以SYS用户建立
REM 如果只对单个表空间操作,可建立On schema触发器
connect sys
REM 需要基于基本表的授权(以sys用户建立无需)
grant select on v_$session to user
/
drop table session_history
/
REM Session进程历史纪录表
REM 记录登陆信息
create table session_history
(
USERNAME varchar2(20),
SID number,
AUDSID number,
OSUSER varchar2(30),
ACTION varchar2(100),
LOGIN_TIME date,
LOGOFF_TIME date,
IP varchar2(20),
TERMINAL varchar2(30),
PROGRAM varchar2(100)
)
/
REM 记录登陆信息的触发器
CREATE OR REPLACE TRIGGER LOGON_HISTORY
AFTER LOGON ON DATABASE --WHEN (USER='EQSP') --ONLY FOR USER 'EQSP'
BEGIN
insert into session_history
select username,sid,AUDSID,OSUSER,ACTION,SYSDATE,null,SYS_CONTEXT('USERENV','IP_ADDRESS'),TERMINAL,PROGRAM
from v$session
where audsid = userenv( 'sessionid' ) ;
END;
/
REM 记录退出时间的触发器
CREATE OR REPLACE TRIGGER LOGOFF_HISTORY
BEFORE LOGOFF ON DATABASE --WHEN (USER='EQSP') --ONLY FOR USER 'EQSP'
BEGIN
UPDATE SESSION_HISTORY
SET LOGOFF_TIME = SYSDATE
WHERE audsid = userenv( 'sessionid' );
end;
/