我写了一个存储过程,用来从一个连路的表里处理数据insert到本地服务器的一个表里,没处理一定的数据,就commit一下;本地服务器在隔壁的一台电脑上,但是我的电脑经常回自己突然掉电;
由于数据很大,所以处理时间很长,我不停用count(*)来查看处理过来多少数据,在到处理到20多万条数据时,我机子又突然掉电了,但是oracle服务器还继续运行着.
我重起后,再次用pl/sql developer连接上oracle ,用 select(*) 看数据,时,发现只用2000多条了,再刷新3000多条,着说明过程还在服务器上运行着.
我的问题是,我的机子已经关了,那过程怎么还运行着?还有就是再次连接上后,本来20多万条数据怎么就2000多条了,2000多条也就算了,怎么还继续增加数据?

解决方案 »

  1.   

    SQL脚本/存储过程 这些本来就是在服务器上执行的,和客户端无关
      

  2.   

    实例正在自动恢复regard!Thanks
    Hima
      

  3.   

    服务器会自己处理的,因为你已经commit了
      

  4.   

    你确定你那经常死掉的机器是oracle客户端,隔壁电脑才是oracle服务器,那么你机器的掉电是跟oracle服务的正常运作没关系的。而你的commit还没执行是不会提交数据,你看到这样的现象的确很奇怪。
      

  5.   

    向oracle插入数据时,当你commit后,数据并不会立即插入数据库,而是驻留在oracle内存中,当oracle内存中需要提交的数据达到一定数量后,才会插入db。