查看Oracle表的最后被访问时间

方法一:  
  用以下的方式可以監控登入登出的用戶:  
  創建如下的兩張表:  
  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;  
   
  方法二:  
  用如下的方式可以審計執行drop動作的事件:  
  /**  
    *   drop語句的審計日誌表  
    */  
  create   table   drop_log  
  (  
          session_id   int   not   null,   -- sessionid  
          drop_time     date,   -- drop的時間  
          ip_address   varchar2(20),   -- ip地址  
          object_owner   varchar2(30),   -- 對象的擁有者  
          object_name   varchar2(30),   -- 對象名稱  
          object_type   varchar2(20),   -- 對象類型  
          drop_by_user varchar2(30)   --   執行drop語句的用戶  
  );  
   
  create   or   replace   trigger   drop_info    
  after   drop   on   mfg0513user.schema   -- 在mfg0513user用戶上創建審計drop的觸發器  
  begin    
          insert   into   drop_log  
          (session_id,  
          drop_time,  
          ip_address,  
          object_owner,  
          object_name,  
          object_type,  
          drop_by_user)  
          values(USERENV('SESSIONID'),  
          sysdate,  
          SYS_CONTEXT('USERENV','IP_ADDRESS'),  
          sys.dictionary_obj_owner,  
          sys.dictionary_obj_name,  
          sys.dictionary_obj_type,  
          sys.login_user);          
  end;
posted @ 2009-12-30 14:05  观我生,君子无咎  阅读(1275)  评论(0)    收藏  举报