很简单,你在每个执行语句里都加一个COMMIT,也就是在整个存储过程里
加上十个COMMIT,这个办法是最笨的,但最有效

解决方案 »

  1.   

    我看不是commit的问题
    如果存储过程能够正常结束
    那数据就一定会隐式提交到数据库中
    相反不是存储过程执行异常就是你的哪一句话导致存储过程不能执行最后一条插入语句
      

  2.   

    帖出你的存储过程,让大家看看,是不是存储过程的问题,一般Oracle不会发生你所说的问题!
      

  3.   

    to samenzhou(崂山道士) 
    在oracle中,最好不要这么做,这么做只会加大oracle的负担。
    楼主的问题需要与他的过程与业务相关才能知道问题所在
      

  4.   

    TO PENITENT
       呵呵,俺不是说了嘛,这个办法最笨嘛?!
       不过在存储过程里显式提交的办法是一个叫SQL XPERT的工具提倡的
    这个工具是QUEST公司出的。
      

  5.   

    呵呵,要是Oracle真提交了,但却丢失了,Oracle也就别在IT混了
      

  6.   

    insert.....
    /
    insert.....
    /
    insert.....
    /
    insert.....
    /
    insert.....
    /
    insert.....
    /
      

  7.   

    肯定是存储过程执行异常,产生问题,没有commit.
    注意加个 exception段。
      

  8.   

    应该不是直接的,如果你不commit(提交)的话,直接exit了那数据库就根本没有被存储。
      

  9.   

    程序没办法贴,有几百行。
    现在问题是程序可以正确结束(因为对数据的要求很严格,如果出错程序会自动停下来)用没有写入库中的数据单步调没问题,而且经过不确定的时间后数据库中有此纪录。程序中有commit程序每隔几秒钟就会调用一次,其他的数据没有问题,而且我也查到了原始数据正确。本人怀疑不是常见问题!!版本是8.1.7.2.1,过程用java调用
      

  10.   

    程序很长但只是在程序的最后加了commit,而且此程序对多个库进行查询,插入。不知是不是需要在丢失数据的语句后面加commit?会不会有这种情况?不加commit在某种情况下(例如:程序终止运行,对库的操作太多将队列中的内容替换掉)会不会丢失数据?
      

  11.   

    楼主的问题,阿也曾遇到;是利用一个游标进行循环的条件插入操作,偶尔会出现丢失某些数据的情况;过程是放在CRONTAB中每日定时执行的;这种情况很蹊跷,也是无法正常去解释的,阿也狠是困惑!阿也是想每条的COMMIT,但最终还是没有改!因为这样的单个提交会增加数据库负担,不过假如该成单个提交的话,应该不会出现这种情况的。
      

  12.   

    还有一种情况,如果你刚插入数据,使用Oracle Enterprise Manager Console的“表数据编辑器”打开表时,最后一条记录经常会显不出来,而它确实已经存在于数据库中了(使用查询可以查出来)。
      

  13.   

    我这个是不定时的被java调用,但是出现任何情况程序会停止执行。
    前两天也出现过这种情况,但是过一段时间程序可以将数据写到库里。这次是几个小时的纪录全部丢失(好在有补救方法)。
    只有commit方法吗?和数据链路有关系吗?和内存有关系吗?(共享池,高速缓存)可以找到阿也吗?我想问一下具体情况!
      

  14.   


       不对不对,这个和执行插入的程序也有很在大关系。比如用JDBC或者ADO都能进行事务处理,如果在程序中使用了ADO或者JDBC的事务也会影响到提交。检查一下吧:)