现在我用c++程序每天插入大量数据,当天查的时候是没有问题的,但到了第二天,数据莫名其妙的减少一部分,不知是不是程序提交插入事务的时候,数据库没有处理完成事务的原因,但如果是这个原因,也不会到了第二天的时候,数据才丢失了,现在我可以肯定的是程序没有删除,没有人攻击,请高手列出具体方法指点一下。

解决方案 »

  1.   

    1.是不是有什么作业在定时运行,把数据给删除了?
    2.下面的内容是查询操作记录的情况,你查查看是谁干的好事情?
    begin 
    SYS.DBMS_LOGMNR.ADD_LOGFILE('C:\oracle\oradata\jhoracle\REDO01.LOG', sys.dbms_logmnr.New); 
    end; select min(low_time),  max(high_time), 
          min(low_scn),  max(next_scn) -1 
    from V$logmnr_logs; begin 
    SYS.DBMS_LOGMNR.START_LOGMNR(Options => sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG); 
    end; Select 
    SCN, 
    timestamp, 
    sql_redo, 
    session# session_num, 
    username, 
    session_info 
    From V$LOGMNR_CONTENTS where sql_redo like '%update%'
    Order by 1; 
    begin 
    SYS.DBMS_LOGMNR.END_LOGMNR(); 
    end;上面的'C:\oracle\oradata\jhoracle\REDO01.LOG'文件更改你自己对应的文件,一共三个:
    'C:\oracle\oradata\jhoracle\REDO01.LOG'
    'C:\oracle\oradata\jhoracle\REDO02.LOG'
    'C:\oracle\oradata\jhoracle\REDO03.LOG'
      

  2.   

    TO 楼上:
    查过了有大量的DELETE操作
    SESSION_NUM USERNAME SESSION_INFO
    0 UNKNOWN UNKNOWN
    0 UNKNOWN UNKNOWN
    0 UNKNOWN UNKNOWN不知是不是跟事务回滚有关系,如果是事务回滚了,请问在数据库里如何防止事务回滚呢?或者在程序上如何处理呢?请指数