数据表中的某条数据被 delete了。如何才能监测到? 不能使用触发器。有其他的办法吗? 使用java 编写代码 能获取到也可以。请提供思路。 

解决方案 »

  1.   

    具体需求lz是不是转化为个人理解了!
    持久层用的是什么?
    最笨的方法就是到db中再查一次,如果没有就表示不存在(删除了)
      

  2.   

    使用log_miner,然后去查询V$logmnr_contents。
      

  3.   

     你是想检测删除的具体数据还是想知道删除了几条啊,想知道删除几条用sql%count就行,要是想知道删除具体的数据,你在删除之前可以先记录下来啊,delete应该有个条件吧,你根据这个条件先select一下,存到变量里
      

  4.   

    使用logmnr分析日志,然后用java查询v$logmnr_contents---将数据字典提取到指定的路径
    begin
      dbms_logmnr_d.build('log_miner_test.ora','E:\oracle\product\10.2.0\logMiner',options => dbms_logmnr_d.STORE_IN_FLAT_FILE);
    end;
    ---添加日志文件到log_miner
    begin
      dbms_logmnr.add_logfile(LogFileName => 'E:\oracle\product\10.2.0\oradata\orcl\REDO01.LOG',Options => dbms_logmnr.NEW);
      dbms_logmnr.add_logfile(LogFileName => 'E:\oracle\product\10.2.0\oradata\orcl\REDO02.LOG',Options => dbms_logmnr.NEW);
      dbms_logmnr.add_logfile(LogFileName => 'E:\oracle\product\10.2.0\oradata\orcl\REDO03.LOG',Options => dbms_logmnr.NEW);
    end;------开始log_miner
    begin
      dbms_logmnr.start_logmnr(DictFileName => 'E:\oracle\product\10.2.0\logMiner\log_miner_test.ora');
    end;-----结束log_miner
    begin
      dbms_logmnr.end_logmnr;
    end;
    ----最后查询用户对你的对象进行的操作
    select * from v$logmnr_contents
      

  5.   

    我好像没表达清楚。现在有一张数据表,被其他用户(我不知道什么用户)不定时删除一些数据,我有什么办法能清楚的知道哪几条被删除了(比如知道主键、删除时间),而且需要马上就知道,公司倾向使用 java 分析oracle日志。可是我不清楚oracle是否提供了接口。如果提供了,该如何使用。
      

  6.   

    关注,数据库安全问题,通过java监控,如何实现?