oracle的监测TABLE数据更改情况




记录数据库登陆用户信息:

CREATE  or  REPLACE   TRIGGER  LogonTrigger
  AFTER LOGON 
ON   DATABASE
 
BEGIN
  
if  length(SYS_CONTEXT( ' USERENV ' , ' TERMINAL ' )) > 0   then
    insert 
INTO  AccountConnections
      (TERMINAL,
       UserName,
       SID,
       ISDBA,
       HOST,
       OS_USER,
       IP_ADDRESS,
       EventAction,
       EventDate)
    
VALUES
      (SYS_CONTEXT(
' USERENV ' ' TERMINAL ' ),
       SYS_CONTEXT(
' USERENV ' ' SESSION_USER ' ),
       SYS_CONTEXT(
' USERENV ' , ' SESSIONID ' ),
       SYS_CONTEXT(
' USERENV ' ' ISDBA ' ),
       SYS_CONTEXT(
' USERENV ' ' HOST ' ),
       SYS_CONTEXT(
' USERENV ' ' OS_USER ' ),
       SYS_CONTEXT(
' USERENV ' ' IP_ADDRESS ' ),
       
' LOGIN ' ,
       sysdate);
  
end   if ;
END ;
/
CREATE  or  REPLACE   TRIGGER  LogoffTrigger
  BEFORE LOGOFF 
ON   DATABASE
BEGIN
  
if  length(SYS_CONTEXT( ' USERENV ' ' TERMINAL ' ))  >   0   then
    insert 
INTO  AccountConnections
      (TERMINAL,
       UserName,
       sid,
       ISDBA,
       HOST,
       OS_USER,
       IP_ADDRESS,
       EventAction,
       EventDate)
    
VALUES
      (SYS_CONTEXT(
' USERENV ' ' TERMINAL ' ),
       SYS_CONTEXT(
' USERENV ' ' SESSION_USER ' ),
       SYS_CONTEXT(
' USERENV ' , ' SESSIONID ' ),
       SYS_CONTEXT(
' USERENV ' ' ISDBA ' ),
       SYS_CONTEXT(
' USERENV ' ' HOST ' ),
       SYS_CONTEXT(
' USERENV ' ' OS_USER ' ),
       SYS_CONTEXT(
' USERENV ' ' IP_ADDRESS ' ),
       
' LOGOFF ' ,
       sysdate);
  
end   if ;
END ;
/
 

更改XX_TABLE表数据的用户信息:

CREATE   OR   REPLACE   TRIGGER XX_TABLE _UPDTRACE
BEFORE 
INSERT   OR   UPDATE   ON XX_TABLE
FOR  EACH ROW
DECLARE
W_SYSTIMESTAMP 
TIMESTAMP ( 3 ) : =  SYSTIMESTAMP;
W_SYSDATE DATE :
=  SYSDATE;
hostname
XX_TABLE .ipadd % type;
hostip
XX_TABLE .hostname % type;
BEGIN
  :NEW.KOSIN_TS :
=  W_SYSTIMESTAMP;
  
IF  INSERTING  THEN
    :NEW.SAKUSEI_DT :
=  W_SYSDATE;
  
END   IF ;
 
select
    sys_context(
' USERENV ' , ' HOST ' , 54 into  hostname
  
from  dual;
  
select
      sys_context(
' USERENV ' , ' IP_ADDRESS ' , 12 into  hostip
  
from  dual;
  
insert   into  tabletrace(ipadd,hostname,updtime,tablename) 
  
values  (hostip, hostname, sysdate,  'XX_TABLE ' );
  
END ;


常用SYS_CONTEXT函数:
select  SYS_CONTEXT( ' USERENV ' ' TERMINAL ' ) terminal,
       SYS_CONTEXT(
' USERENV ' ' LANGUAGE ' ) language,
       SYS_CONTEXT(
' USERENV ' ' SESSIONID ' ) sessionid,
       SYS_CONTEXT(
' USERENV ' ' INSTANCE ' ) instance,
       SYS_CONTEXT(
' USERENV ' ' ENTRYID ' ) entryid,
       SYS_CONTEXT(
' USERENV ' ' ISDBA ' ) isdba,
       SYS_CONTEXT(
' USERENV ' ' NLS_TERRITORY ' ) nls_territory,
       SYS_CONTEXT(
' USERENV ' ' NLS_CURRENCY ' ) nls_currency,
       SYS_CONTEXT(
' USERENV ' ' NLS_CALENDAR ' ) nls_calendar,
       SYS_CONTEXT(
' USERENV ' ' NLS_DATE_FORMAT ' ) nls_date_format,
       SYS_CONTEXT(
' USERENV ' ' NLS_DATE_LANGUAGE ' ) nls_date_language,
       SYS_CONTEXT(
' USERENV ' ' NLS_SORT ' ) nls_sort,
       SYS_CONTEXT(
' USERENV ' ' CURRENT_USER ' current_user ,
       SYS_CONTEXT(
' USERENV ' ' CURRENT_USERID ' ) current_userid,
       SYS_CONTEXT(
' USERENV ' ' SESSION_USER ' session_user ,
       SYS_CONTEXT(
' USERENV ' ' SESSION_USERID ' ) session_userid,
       SYS_CONTEXT(
' USERENV ' ' PROXY_USER ' ) proxy_user,
       SYS_CONTEXT(
' USERENV ' ' PROXY_USERID ' ) proxy_userid,
       SYS_CONTEXT(
' USERENV ' ' DB_DOMAIN ' ) db_domain,
       SYS_CONTEXT(
' USERENV ' ' DB_NAME ' db_name ,
       SYS_CONTEXT(
' USERENV ' ' HOST ' ) host,
       SYS_CONTEXT(
' USERENV ' ' OS_USER ' ) os_user,
       SYS_CONTEXT(
' USERENV ' ' EXTERNAL_NAME ' ) external_name,
       SYS_CONTEXT(
' USERENV ' ' IP_ADDRESS ' ) ip_address,
       SYS_CONTEXT(
' USERENV ' ' NETWORK_PROTOCOL ' ) network_protocol,
       SYS_CONTEXT(
' USERENV ' ' BG_JOB_ID ' ) bg_job_id,
       SYS_CONTEXT(
' USERENV ' ' FG_JOB_ID ' ) fg_job_id,
       SYS_CONTEXT(
' USERENV ' ' AUTHENTICATION_TYPE ' ) authentication_type,
       SYS_CONTEXT(
' USERENV ' ' AUTHENTICATION_DATA ' ) authentication_data
  
from  dual

你可能感兴趣的:(oracle的监测TABLE数据更改情况)