分享

T-9如何判断谁往表里增加了一条纪录。

 爪一o_0一斗 2012-12-06

        事先打开审计功能或者在表上建立触发器。事后可以通过logmnr查看。

        用触发器
create or replace trigger tri_test 
after insert 
on tb -->判断此表是否被插入记录
for each row 
begin 
insert into ta(日期) values(sysdate) ;
commit;
end ;

        建立表级触发器是个好办法,能够跟踪到更多的信息.可以在应用程序中嵌入包DBMS_APPLICATION_INFO,利用DBMS_APPLICATION_INFO.SET_CLIENT_INFO设置CLIENT_INFO信息,然后在trigger中用DBMS_APPLICATION_INFO.READ_CLIENT_INFO得到其设置的信息,可以判断是不是应用程序插入了数据。
        用数据库审计即可,
先设置audit_trail参数,决定审计结果保存地点;
然后执行audit insert on schema.table_name whenever successful;
这样就行了,在有人做insert操作后,根据audit_trail参数到相应位置去看审计结果就行了。
        建触发器其实也是审计,是基于值的审计,比数据库审计慢,不过审计的内容可以更详细。 
        你的需求上面我说的3种方法都能实现。
 
        如果是用触发器来审计,要用自主事务。
 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多