今天碰到一个很奇怪的问题,我在一个用户下新建了一个过程,里面有把几个表相互关联的得到的数据插入到一个中间表中的语句,过程创建后,通过手工方式运行,大概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
手工执行这个过程:
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/