• FP 某段SQL语句执行时间超过1个小时,并报错:ORA-01652: 无法通过 128 (在表空间 TEMPSTG 中) 扩展


    一、出现如下两个错误:
    1.某一段SQL语句执行时间超过1个小时;
    2.一个小时后,提示如下错误:ORA-01652: 无法通过 128 (在表空间 TEMPSTG 中) 扩展 temp 段ORA-06512: 在 "STG.FP_MO2SAP"

    二、检查及处理过程
    提示temp表空间有问题,临时表空间主要是用于在排序操作或者大型查询、统计分析操作。
    1.先检查临时表空间信息 select * from dba_tablespaces; select * from dba_temp_files; select * from v$tempfile
    检查发现临时表空间有32G,当前只执行此语句就把整个表空间用完,初步估计SQL语句有问题,可将语句拷贝出来研究。
    如下图是释放后结果图:


    2.对SQL语句进行优化,加索引,再次执行语句时间由一个小时变成6秒,成功一半。

    CREATE INDEX STG.IDX_TEMP_MO_DBA01 ON STG.TEMP_MO(LOC_ID,ITEM)
    LOGGING
    TABLESPACE WWFDATA
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
                FLASH_CACHE      DEFAULT
                CELL_FLASH_CACHE DEFAULT
               )
    NOPARALLEL;
    
    CREATE INDEX STG.IDX_IN_ITEM_SITE_DBA01 ON STG.IN_ITEM_SITE(ITEM_ID,PROC_TYPE)
    LOGGING
    TABLESPACE WWFDATA
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
                FLASH_CACHE      DEFAULT
                CELL_FLASH_CACHE DEFAULT
               )
    NOPARALLEL;
    
    CREATE INDEX STG.IDX_IN_ITEMBOMROUTING_DBA01 ON STG.IN_ITEMBOMROUTING(PRODUCED_ITEM_ID,SITEID)
    LOGGING
    TABLESPACE WWFDATA
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
                FLASH_CACHE      DEFAULT
                CELL_FLASH_CACHE DEFAULT
               )
    NOPARALLEL;
    View Code


    3.将此SQL语句加回存储过程FP_MO2SAP后还是比较慢,再继续检查SQL语句。

    select count(1) from IN_ITEMBOMROUTING --193027
    select count(1) from temp_mo --20473
    set serveroutput on
    exec show_space('IN_ITEMBOMROUTING');

    表记录数有19W条。有可能会把临时表空间吃完,对涉及到的基表做了一个空间占用情况统计,计算一下基表占用19922944字节,大约是19M。还不包括其它的表的字段统计,

    4.接下来做一个执行计划和统计分析,得到如下结果:

    发现SQL语句里面没有用到temp_mo表

  • 相关阅读:
    vmware workstation 10.0
    成为嵌入式程序员应知道的0x10个基本问题
    Linux嵌入式系统与硬件平台的关系
    vasprintf的实现
    GIT常用命令
    ip地址转化代码实例
    Linux网络编程实例解析
    openwrt的交叉编译
    appium初学者,使用之检查appium环境报错Could not detect Mac OS X Version from sw_vers output: '10.12.1’,
    第二章 mac上运行第一个appium实例
  • 原文地址:https://www.cnblogs.com/Snowfun/p/6069000.html
Copyright © 2020-2023  润新知