oracle的监测TABLE数据更改情况

本文介绍了如何在Oracle数据库中创建触发器来记录用户登录、登出信息以及对XX_TABLE表的插入和更新操作。通过使用SYS_CONTEXT函数获取用户环境信息,如终端、用户名、SID、主机、OS用户、IP地址等,并将这些信息存储在相应的日志表中,以便于监控和审计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




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

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',54into hostname
  
from dual;
  
select
      sys_context(
'USERENV','IP_ADDRESS',12into 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值