`
anny627
  • 浏览: 11790 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

oracle 利用触发器记录用户登录登出信息

 
阅读更多

1.建表用来存储登录信息

 

create table LOG$INFORMATION

(

  USERNAME VARCHAR2(30),

  TERMINAL VARCHAR2(50),

  IPADRESS VARCHAR2(20),

  OSUSER VARCHAR2(30),

  MACHINE VARCHAR2(64),

  PROGRAM VARCHAR2(64),

  SID NUMBER,

  SERIAL# NUMBER,

  AUSID NUMBER,

  LOGINTIME DATE default sysdate,

  LOGout_TIME date

)

/

 

2.记录登录信息

 

CREATE OR REPLACE TRIGGER TR_LOGIN_RECORD

AFTER logon ON DATABASE

DECLARE

mtSession v$session%ROWTYPE;

CURSOR cSession(iiQuerySid IN NUMBER) IS

   SELECT * FROM v$session

      WHERE nvl(osuser,'x') <> 'SYSTEM'   and type <> 'BACKGROUND' and audsid = iiQuerySid;

BEGIN

OPEN cSession(userenv('SESSIONID'));

  FETCH cSession INTO mtSession;

  IF cSession%FOUND THEN

INSERT INTO log$information(username,logintime,terminal,ipadress,osuser,machine,

program,sid,serial#,ausid)

       VALUES(USER,SYSDATE,mtSession.Terminal,

              SYS_CONTEXT ('USERENV','IP_ADDRESS'),mtSession.Osuser,

          mtSession.Machine,mtSession.Program,mtSession.Sid,mtSession.Serial#,userenv('SESSIONID'));

  END IF;

  CLOSE cSession;

EXCEPTION

  WHEN OTHERS THEN

    raise;

end;

 

/

3.记录登出信息

 

create or replace trigger TR_LOGOFF_RECORD

before LOGOFF ON DATABASE

DECLARE

mtSession v$session%ROWTYPE;

CURSOR cSession(iiQuerySid IN NUMBER) IS

   SELECT * FROM v$session where

       nvl(osuser,'x') <> 'SYSTEM'   and type <> 'BACKGROUND' and audsid = iiQuerySid;

BEGIN

OPEN cSession(userenv('SESSIONID'));

  FETCH cSession INTO mtSession;

  IF cSession%FOUND THEN

            UPDATE LOG$INFORMATION SET LOGOUT_TIME=SYSDATE WHERE sid=mtSession.Sid AND serial#=mtSession.Serial#;

  END IF;

  CLOSE cSession;

EXCEPTION

  WHEN OTHERS THEN

    raise;

END;

 

 

 

select *from LOG$INFORMATION;

分享到:
评论

相关推荐

    oracle安全审计之登录登出、ddl操作记录触发器

    本篇文章将详细探讨Oracle中的登录登出触发器和DDL操作记录触发器。 首先,让我们了解登录和登出触发器。在Oracle中,登录和登出触发器可以在用户连接到或断开与数据库的连接时执行自定义的代码。这些触发器可以...

    Oracle8触发器系统事件的应用.pdf

    在登录和登出时,可以利用触发器记录用户活动,提升系统的安全性。 在铁路计算机应用中,Oracle8触发器系统事件的利用可以有效监控和管理调度系统的数据库操作,确保数据的一致性、完整性和安全性。通过合理设置...

    oracle_基本的几种触发器

    除了上述的DML和DDL触发器外,Oracle还支持数据库级别的触发器,用于响应数据库事件,如启动、关闭、登录和登出等。这类触发器可以帮助管理员监控和记录重要的数据库活动。 ##### 创建数据库事件触发器示例 ```sql ...

    oracle存储过程和触发器

    它们可以在DML(数据操纵语言)操作(如DELETE、INSERT、UPDATE)前或后执行,也可响应DDL(数据定义语言)操作(如CREATE、ALTER、DROP),以及服务器错误、用户登录/登出、数据库启动/关闭等事件。 **2. 类型与...

    第9章 触发器.ppt

    数据库事件触发器包括如LOGON、LOGOFF和SERVERERROR等事件,这些事件与用户的登录、登出以及数据库运行时发生的错误有关。例如,当用户连接到数据库时,LOGON触发器可以用于记录用户活动,或者实施特定的安全策略。 ...

    触发器的相关知识与实例

    数据库事件触发器响应数据库级别的事件,如用户登录或登出。它们可用于审计和监控用户活动。 **实例**展示了如何创建一个数据库事件触发器`datebase_logon`,当用户登录数据库时,在`user_log`表中记录登录时间和...

    oracle

    3. 系统触发器:与用户的登录、登出、数据库启动或关闭等系统事件关联,这些触发器可以用来监控和管理数据库的状态和用户活动。 触发器按照执行特点还可分为替代触发器和一般触发器。替代触发器通常创建在视图之上...

    触发器,trigger

    - **数据库事件触发器**:这类触发器是在特定的数据库事件发生时被激活的,比如数据库启动(`STARTUP`)、关闭(`SHUTDOWN`)、用户登录(`LOGON`)和登出(`LOGOFF`)以及服务器错误(`SERVERERROR`)等。...

    网吧计费系统

    在网吧计费系统中,Oracle可能用于存储用户信息、消费记录、计费规则等数据。数据库设计时,需要考虑到数据的一致性、完整性和安全性,通过合理的数据表结构、索引和约束条件来优化查询效率。此外,系统可能使用SQL...

    java工作以后的总结

    在Web应用中,Session管理是关键的一环,拦截器可以监控用户会话状态,防止非法访问或者在会话过期时进行相应的处理,如自动登出、提示用户重新登录等。 3. **TimerSample.java**: 这可能是一个使用Java Timer类...

Global site tag (gtag.js) - Google Analytics