ITPub博客

首页 > 数据库 > Oracle > 获取某张表上的增删改信息的两种办法

获取某张表上的增删改信息的两种办法

原创 Oracle 作者:oracle11111 时间:2024-12-18 14:13:50 0 删除 编辑

获取某张表上的增删改信息的两种办法


方式1: 我们可以通过触发器的方式获取相关信息


create table tab_monitor as (select sid,username,program,machine,'000.000.000.000'  ipadd,sysdate moditime from v$session where 0=1);


该表分别记录了,删除的用户、机器名、ip及删除时间等


2、创建触发器


   create or replace trigger tab_monitor_tri

      before delete or update or insert    on ZC.T1

      for each row

      begin

       insert into tab_monitor 

       select sid,username,program,machine,sys_context('userenv','ip_address'),sysdate 

       from v$session where audsid = userenv('sessionid');

      end;

       /



测试

SQL> insert into t1  values('asdfasf');


1 row created.


SQL> commit;


Commit complete.


SQL> delete from t1 where x='asdfasf';


1 row deleted.


SQL> commit;


Commit complete.




查询记录表

select * from tab_monitor;

       SID USERNAME PROGRAM      MACHINE  IPADD       MODITIME

---------- -------- ------------------------ -------- --------------- ---------

       135 ZC     sqlplus@zc (TNS V1-V3)   zc       18-DEC-24

       135 ZC     sqlplus@zc (TNS V1-V3)   zc       18-DEC-24

  


方式2: 我们可以通过审计的方式获取相关信息

首先要保证数据库开启了审计

SQL> show parameter aud


NAME      TYPE VALUE

------------------------------------ ----------- ------------------------------

audit_file_dest      string /u02/app/oracle/admin/test/adu

mp

audit_sys_operations      boolean TRUE

audit_syslog_level      string

audit_trail      string DB

unified_audit_common_systemlog      string

unified_audit_sga_queue_size      integer 1048576

unified_audit_systemlog      string



开启数据库的表审计 

Audit Insert,Update,Delete,Select on ZC.T1 by access whenever successful;

关闭数据库的表审计

noaudit Insert,Update,Delete,Select on ZC.T1;  

查询审计的信息

set lines 1000

col OS_USERNAME for a10

col USERNAME for a11

col USERHOST for a10

col TERMINAL for a10

col TIMESTAMP for a20

col obj_name for a10

col OWNER for a10

col ACTION_NAME for a11

col TRANSACTIONID for a16

col sql_text for a50

SELECT USERNAME,

USERHOST,

TIMESTAMP,

OWNER,

OBJ_NAME,

ACTION_NAME,

SQL_TEXT

FROM DBA_AUDIT_TRAIL

WHERE OBJ_NAME='T1'

ORDER BY TIMESTAMP;




查询结果:

set lines 1000

col OS_USERNAME for a10

col USERNAME for a11

col USERHOST for a10

col TERMINAL for a10

col TIMESTAMP for a20

col obj_name for a10

col OWNER for a10

col ACTION_NAME for a11

col TRANSACTIONID for a16

col sql_text for a50

SELECT USERNAME,

USERHOST,

TIMESTAMP,

OWNER,

OBJ_NAME,

ACTION_NAME,

SQL_TEXT

FROM DBA_AUDIT_TRAIL

WHERE OBJ_NAME='T1'

ORDER BY TIMESTAMP;


ZC     zc        17-DEC-24     ZC        T1     SELECT

SYSTEM     zc        18-DEC-24     ZC        T1   SELECT

ZC     WORKGROUP\ 18-DEC-24     ZC        T1   SELECT

    APP03


ZC     zc        18-DEC-24     ZC        T1   SELECT

ZC     zc        18-DEC-24     ZC        T1   SELECT

ZC     zc        18-DEC-24     ZC        T1   SELECT

ZC     zc        18-DEC-24     ZC        T1   SELECT

ZC     zc        18-DEC-24     ZC        T1   INSERT

ZC     zc        18-DEC-24     ZC        T1   INSERT

ZC     zc        18-DEC-24     ZC        T1   INSERT

ZC     zc        18-DEC-24     ZC        T1   INSERT

ZC     zc        18-DEC-24     ZC        T1   DELETE















来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69924215/viewspace-3057227/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: bbed 分析索引
下一篇: ora-600 2252
请登录后发表评论 登录
全部评论

注册时间:2019-05-19

  • 博文量
    81
  • 访问量
    90381