公司用的是oracle数据库,前几天我建了几个数据表并在里面存了一些数据,但今天发现里面的数据全不见了,但表还在。
不知道是哪个黑心的家伙把我几天辛苦的成果全删除了。今天心情差透了T_T
请问有没有办法查到是谁干的??
公司用UNIX+LINUX操作系统,谢谢大家!

解决方案 »

  1.   

    不知道楼主有没有做归档处理,如果没有,希望很少。
    如果有,用LogMiner分析日志文件。
    http://www.eol.cn/shiti_jc_2256/20060323/t20060323_123801.shtml
      

  2.   

    看有没有归档了,如果联机日志切换了,logminer也帮不了你了
      

  3.   


    如果开启了audit trail的话可以试试找找是那个用户做的
    SQL> show parameter audit_trail
    看看你的结果
    如果结果为none,如下,就没有办法了。
    audit_trail                          string      NONE
      

  4.   


    还有一个可能,就是你自己没有commit;
      

  5.   


    不好意思,我不是DBA,所以没办法看到日志文件。
    而且不知道公司有没有装LogMiner.
    我和DBA不熟...已经找他查过了,不过他说日志太大,很难找出是哪个用户删除的.我用
    select * from all_objects where object_name=?
    看到表最后DDL的时间是7月3号凌晨4点多PS,我竟然没有权限看 V$sqlarea
      

  6.   


    commit是肯定有的,我用ETL工具把数据倒入数据库,整个job已经完成,我开另外一个session看到数据已经倒入
      

  7.   

    oracle 哪个版的。undo 里的数据要是还在。可以用( as of timestamp sysdate-10/24 ) 查 10小时以前的数据。select * from tb as of timestamp sysdate-10/24;如果能查到就 insert into tb select * from tb as of timestamp sysdate-10/24;如果是 truncate 就查不到了。
      

  8.   

    如果开启了audit trail的话可以试试找找是那个用户做的 
    SQL> show parameter audit_trail 
    看看你的结果 
    如果结果为none,如下,就没有办法了。 
    audit_trail                          string      NONE
      

  9.   

    如果是归档模式,用logminer可以查到执行操作的机器名,
    很容易的,让你们DBA给查查logminer是oracle的组件,不需要额外装的
      

  10.   

    很奇怪csdn居然不允许连续回复3次,可能是防止灌水吧。
    用了show parameter audit_trail 
    结果是
    audit_trail                          string      NONE
      

  11.   

    版本是10g
    用了您的方法,显示
    ora-01466 unable to read data - table definition has changed
      

  12.   

    select * from v$logmnr_contents显示
     ORA-01306: dbms_logmnr.start_logmnr() must be invoked before selecting from v$logmnr_contents
    估计还没选取日志文件吧?
    我找过上级了,他说DBA比较忙,不会帮了...
    我是想,我自己有没有办法查到呢?
    无论如何,还是谢谢你们的方法