在JOB中运行一个过程跟直接手工运行这个过程之间的区别

今天碰到一个很奇怪的问题,我在一个用户下新建了一个过程,里面有把几个表相互关联的得到的数据插入到一个中间表中的语句,过程创建后,通过手工方式运行,大概10秒不到就能成功执行完成,但是把该过程加入到JOB中运行后,每次运行该JOB时,发现执行时间很长,最后报不能扩展TEMP表空间的错误,在运行JOB期间,通过查看v$sort_usage,发现该用户使用的临时表空间不断的在扩展,直到到达最大的范围。过程如下:
手工执行这个过程:
sqlplus>exec pro_get_mo_sms;
PL/SQL 过程已成功完成。
大概花了不到10秒。
查看视图:
SQL> select tablespace,segtype,SEGBLK#, EXTENTS,BLOCKS from V$SORT_usage;

未选定行
在JOB中执行该过程:
SQL> select job, WHAT from dba_jobs;
       JOB WHAT
---------- --------------------------------------------------
       290 PRO_GET_MO_SMS;

SQL> begin
  2  dbms_job.run(209);
  3  end;
  4/

SQL> select tablespace,segtype,SEGBLK#, EXTENTS,BLOCKS from V$SORT_usage;

TABLESPACE                      SEGTYPE   SEGBLK# EXTENTS BLOCKS
------------------------------- --------- ------- ------- ------
CORETE_TEMP                     HASH       119049     392  50176

过1秒钟。。。

TABLESPACE                      SEGTYPE   SEGBLK# EXTENTS BLOCKS
------------------------------- --------- ------- ------- ------
CORETE_TEMP                     HASH       119049     533  68224

过1秒钟。。。
TABLESPACE                      SEGTYPE   SEGBLK# EXTENTS BLOCKS
------------------------------- --------- ------- ------- ------
CORETE_TEMP                     HASH       119049     647  82816


发现EXTENTS不断的在增加,可是我的存储过程中用到排序的地方并不大,而且数量级很小,为什么该过程在JOB中运行的时候会使用这么多的临时段呢??
最后该JOB执行成功,但是该过程执行失败,查看过程写的日志,报不能扩展TEMP表空间的错误。

VERSION:9205
OS:LINUX ADS3

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28419/viewspace-613745/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28419/viewspace-613745/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值