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

摘要:
无法将临时段ORA-06512扩展到128(在表空间TEMPSTG中)_ tablespace;选择*fromv$tempfile临时表空间为32G,ViewCode3。将此SQL语句添加回存储过程FP_在MO2SAP之后,它仍然很慢。

一、出现如下两个错误:
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语句有问题,可将语句拷贝出来研究。
如下图是释放后结果图:

FP 某段SQL语句执行时间超过1个小时,并报错:ORA-01652: 无法通过 128 (在表空间 TEMPSTG 中) 扩展第1张
2.对SQL语句进行优化,加索引,再次执行语句时间由一个小时变成6秒,成功一半。

FP 某段SQL语句执行时间超过1个小时,并报错:ORA-01652: 无法通过 128 (在表空间 TEMPSTG 中) 扩展第2张FP 某段SQL语句执行时间超过1个小时,并报错:ORA-01652: 无法通过 128 (在表空间 TEMPSTG 中) 扩展第3张
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。还不包括其它的表的字段统计,

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

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

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

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

免责声明:文章转载自《FP 某段SQL语句执行时间超过1个小时,并报错:ORA-01652: 无法通过 128 (在表空间 TEMPSTG 中) 扩展》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[UE4]抛物线指示器logstash output时区差8个小时下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Oracle 临时表创建及删除

转: Oracle 临时表创建及删除 Oracle临时表 临时表分为两种 会话级别(ON COMMIT PRESERVE ROWS;) CREATE GLOBAL TEMPORARY <TABLE_NAME> ( <column specification> ) ON COMMIT PRESERVE ROWS; 会话级临时表是指...

某列字符串相加计算的sql语句的写法

如果需要计算某一列字符串相加,应该如何实现呢?下面就将教您计算某列的字符串相加sql语句写法,希望对您学习sql语句使用有所启迪。 一个表  两列: column1  char(12)     column2  int    举例:   要求:以column2为聚合标准,把column1所有字符串相加 计算某列的字符串相加sql语句脚本: -----...

Hive的基本操作

一、创建数据库   hive>create database mydb ; //hql和mysql语法极其相似   hive>show databases;//查看所有数据库 二、创建表   格式:     create [external] table <表名>(列的定义,....)  [row format delimited...

SQLServer update语句用法

  UPDATE语句用于创建一个更新查询,根据指定的条件更改指定表中的字段值。UPDATE语句不生成结果集,而且当使用更新查询更新记录之后,不能取消这次操作。 语法:UPDATE table SET newvalue WHERE criteria 说明:table参数指定表的名称,其中包含要更改的数据。 newval...

pymysql完成数据的查询操作

import pymysql # 创建连接对象 conn = pymysql.connect(host='localhost', port=3306, user='root', password='mysql',database='python', charset='utf8') # 获取游标对象 cursor = conn.cursor() # 查...

ORACLE WITH AS 用法

With查询语句不是以select开始的,而是以“WITH”关键字开头    可认为在真正进行查询之前预先构造了一个临时表,之后便可多次使用它做进一步的分析和处理 WITH Clause方法的优点     增加了SQL的易读性,如果构造了多个子查询,结构会更清晰;更重要的是:“一次分析,多次使用”,这也是为什么会提供性能的地方,达到了“少读”的目标。   ...