我需要做一个日志察看,来得到每个用户的操作。
目前对所有的操作都会记录到了一张表(T1)里面,同时记录了每个操作对应的sessionId(不能记录用户名称),现在,我需要查询这个表(T1),也意味着我需要把这个sessionID翻译过来。问题是,过了一段时间后,这个sessionID已经失效了,不知道如何去找到它曾经对应的用户名称。要如何解决呢?
我想在数据库产生这个sessionID的时候就把对应的用户名称保存起来,不知道怎么做?另外,需要提出的事,出于性能考虑,T1上不允许建立触发器,也就是说,不能通过在T1上建立触发器来得到用户名称。

解决方案 »

  1.   

    用logon触发器。
    create or replace trigger login_on_info
    after logon on database 
    Begin 
      if USERENV('SESSIONID')>0 then
        insert into TABLENAME(...)
        select ...
        from v$session where AUDSID = USERENV('SESSIONID');  --当前SESSION
      end if;
    END;
      

  2.   

    反正也是记录T1表,为什么不把sessionid和名称同时放到T1里,这样不是就没这麻烦了