ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 在JOB中运行一个过程跟直接手工运行这个过程之间的区别

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

原创 Linux操作系统 作者:crpp0902 时间:2019-06-07 17:57:06 0 删除 编辑
今天碰到一个很奇怪的问题,我在一个用户下新建了一个过程,里面有把几个表相互关联的得到的数据插入到一个中间表中的语句,过程创建后,通过手工方式运行,大概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博客 ” ,链接:https://blog.itpub.net/28419/viewspace-613745/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2002-11-14

  • 博文量
    59
  • 访问量
    54497