我正在跑批 一个存储过程,过一会发现这个用户不知道这个用户的状态是否已连接。点开别的存储过程名却显示该用户“ora03114 未连接到oracle” 可是我查询表 却又可以。现在关键的是我不知道是不是跑到一半我这个存储过程又要重跑了。这个存储过程数据很大(跑批要好几个小时),我昨天也遇到这样情况,当时没有在意。望高手指教!

解决方案 »

  1.   

    我通过查询 sesseion语句 select * from v$session where status <>'INACTIVE' 看到我那个存储过程还在执行,是否有办法看到这个存储过程执行了多少了呢?(这个主要是批量插入 这个过程,都是卡在insert这里,我有没办法看到insert这个插入了 多少呢?)
      

  2.   

    建议你数据量大的话,使用分批commit。或者这里把回滚段和回滚undo_retention设置的大一些。检查一下v$lock, v$locked_object表看看有没有对象锁住了。
      

  3.   

    “是否有办法看到这个存储过程执行了多少了呢?(这个主要是批量插入 这个过程,都是卡在insert这里,我有没办法看到insert这个插入了 多少呢?"关于这个问题,建议你在存储过程中加入调试信息,比如建立一个中间表,然后在存储过程中随时把insert的时间和情况记录到里面,这样,你就对存储过程的执行情况会有一个比较清楚的了解了。