查看: 8143|回复: 23

【大话IT】temp表空间暴增的原因

[复制链接]
论坛徽章:
8
ITPUB9周年纪念徽章
日期:2010-10-08 09:31:21ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262012新春纪念徽章
日期:2012-01-04 11:53:29鲜花蛋
日期:2012-02-10 17:37:33ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2014-02-27 06:00:13马上有车
日期:2014-12-30 16:42:25
发表于 2015-1-20 12:00 | 显示全部楼层 |阅读模式
今天看到我的临时表空间已经33g了。
想问下暴增的原因?

怀疑是sql sort造成的,但是想知道, 表不是很大,排序的时候怎么能使temp增到33g呢?
temp不是可以自动清理,重复使用么?
如果是sort造成的。是不是我的一个session在sort的时候,虽然temp中有已经有了可以重复使用的segment,但是它还是使temp表空间增加,使用新增的区呢? 而不使用temp已经释放的extent呢?

此时另一个sessiong要sort,是不是会使用标记为已经回收使用的extent呢?


求职 : 数据库管理员
认证徽章
论坛徽章:
71
2011新春纪念徽章
日期:2015-05-19 13:15:06itpub13周年纪念徽章
日期:2014-09-28 13:09:30马上有对象
日期:2014-10-16 14:28:04马上加薪
日期:2014-11-10 10:43:10马上加薪
日期:2014-12-02 10:42:48马上有房
日期:2014-12-12 14:28:33马上有车
日期:2014-12-16 09:29:54马上加薪
日期:2014-12-22 17:00:50马上有对象
日期:2015-01-05 17:32:582010新春纪念徽章
日期:2015-01-23 11:01:59
发表于 2015-1-20 13:10 | 显示全部楼层
使用完之后就会释放,但是文件大小不会回收,你得看真正使用的是多少

使用道具 举报

回复
论坛徽章:
8
ITPUB9周年纪念徽章
日期:2010-10-08 09:31:21ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262012新春纪念徽章
日期:2012-01-04 11:53:29鲜花蛋
日期:2012-02-10 17:37:33ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2014-02-27 06:00:13马上有车
日期:2014-12-30 16:42:25
 楼主| 发表于 2015-1-20 15:27 | 显示全部楼层
myles521 发表于 2015-1-20 13:10
使用完之后就会释放,但是文件大小不会回收,你得看真正使用的是多少

恩 我想知道,一个session使用temp的时候,有些区标记为可用,它使用这些标记可用的区,但是可能标记的被用完了,那么它就需要扩展,这样就使得temp空间增加了。
如果增加的时候,又有些区被smon标记为可用,那么此时这个session仍需要sort,那是使用那些又被标记为可用的区,还是自己再去扩展temp,使用新扩展的区呢?

使用道具 举报

回复
论坛徽章:
3
懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18天蝎座
日期:2016-05-14 12:00:32
发表于 2015-1-20 21:33 | 显示全部楼层
第一個可以在3秒內反應就用不能請使用第二個SQL看看 TEMPORARY TABLESPACE 被什麼使用掉啦.

第一個SQL:
SELECT NVL (SE.USERNAME, '(ORALCE)') AS USERNAME,
               'alter system kill session '''
            || SE.SID
            || ''
            || ','
            || SE.SERIAL#
            || ',@'
            || SE.INST_ID
            || ''' IMMEDIATE;'
               AS RUN_DATA,
            SE.PREV_EXEC_START,
            SYSDATE AS NOW_DATE,
            (SYSDATE - SE.PREV_EXEC_START) * 24 * 60 * 60 AS RUN_SEC,
            (SYSDATE - SE.PREV_EXEC_START) * 24 AS RUN_TIME,
            C.SQL_FULLTEXT,
            C.CHILD_NUMBER,
            C.SQL_ID,
            SE.SID,
            SE.INST_ID,
            SE.SERIAL#,
            SE.SQL_ADDRESS,
            SE.MACHINE,
            SE.PROGRAM,
            SU.TABLESPACE,
            SU.SEGTYPE,
            SU.CONTENTS,
            SU.BLOCKS * 8 / 1024 || 'MB' AS USED_SPACE
       FROM GV$SESSION SE, GV$SORT_USAGE SU, gv$sql C
      WHERE     SE.SADDR = SU.SESSION_ADDR
            AND SE.INST_ID = SU.INST_ID
            AND SE.sql_address = C.address(+)
            AND SE.INST_ID = C.INST_ID(+)
   ORDER BY SE.sid,
            C.SQL_ID,
            C.CHILD_NUMBER,
            SE.serial#,
            SE.SQL_ADDRESS;




第二個SQL:
SELECT NVL (SE.USERNAME, '(ORALCE)') AS USERNAME,
               'alter system kill session '''
            || SE.SID
            || ''
            || ','
            || SE.SERIAL#
            || ',@'
            || SE.INST_ID
            || ''' IMMEDIATE;'
               AS RUN_DATA,
            SE.PREV_EXEC_START,
            SYSDATE AS NOW_DATE,
            (SYSDATE - SE.PREV_EXEC_START) * 24 * 60 * 60 AS RUN_SEC,
            (SYSDATE - SE.PREV_EXEC_START) * 24 AS RUN_TIME,
            SE.SQL_ADDRESS, -- key1
            SE.SQL_HASH_VALUE, -- key2
            SE.INST_ID, -- key3
            SE.SID,
            SE.SERIAL#,
            SE.MACHINE,
            SE.PROGRAM,
            SU.TABLESPACE,
            SU.SEGTYPE,
            SU.CONTENTS,
            SU.BLOCKS * 8 / 1024 || 'MB' AS USED_SPACE
       FROM GV$SESSION SE, GV$SORT_USAGE SU
      WHERE     SE.SADDR = SU.SESSION_ADDR
            AND SE.INST_ID = SU.INST_ID
   ORDER BY SE.sid,
            SE.serial#,
            SE.SQL_ADDRESS;

SELECT    *
       FROM   gv$sql C
      WHERE C.ADDRESS = '00000076072151B0' -- SE.SQL_ADDRESS
        and C.HASH_VALUE = '2424365054' -- SE.SQL_HASH_VALUE
        AND c.INST_ID = 1 -- SE.INST_ID

使用道具 举报

回复
论坛徽章:
3
懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18天蝎座
日期:2016-05-14 12:00:32
发表于 2015-1-21 22:41 | 显示全部楼层
1. select ...
2. new index
3. insert ... select ...
4. update ...
5. delete ...
6. DBMS RAC 資料交換

使用道具 举报

回复
认证徽章
论坛徽章:
249
Jeep
日期:2013-09-04 19:17:57Jeep
日期:2013-10-08 09:46:02Jeep
日期:2013-10-08 16:38:27Jeep
日期:2013-11-22 14:53:46Jeep
日期:2013-11-08 23:59:45Jeep
日期:2013-11-22 17:15:17Jeep
日期:2013-11-22 17:15:17Jeep
日期:2013-11-17 09:59:04季节之章:夏
日期:2015-01-28 14:58:51季节之章:春
日期:2014-12-25 16:20:50
发表于 2015-1-21 23:04 | 显示全部楼层
使用后,文件是不会自动回收的

使用道具 举报

回复
认证徽章
论坛徽章:
67
现任管理团队成员
日期:2012-06-02 02:10:00ITPUB元老
日期:2012-09-12 14:06:14ITPUB社区千里马徽章
日期:2013-06-09 10:15:34季节之章:冬
日期:2012-09-04 11:05:30季节之章:春
日期:2012-09-05 09:20:36优秀写手
日期:2013-12-18 09:29:09马上有房
日期:2014-04-10 13:35:362014年新春福章
日期:2014-04-14 09:54:08马上有车
日期:2014-02-28 16:43:13马上加薪
日期:2014-02-19 11:55:14
发表于 2015-1-22 13:46 | 显示全部楼层
单表不是很大,但是实际查询的结果集可能会很大的。
比如 select * from a,b,c,d,e,f,g,h,i,j,k order by a.a

使用道具 举报

回复
认证徽章
论坛徽章:
20
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44itpub13周年纪念徽章
日期:2014-09-28 10:55:54马上有钱
日期:2014-12-14 22:33:02美羊羊
日期:2015-02-28 17:32:28沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:58:18慢羊羊
日期:2015-05-01 17:38:23美羊羊
日期:2015-06-29 21:06:54秀才
日期:2015-08-28 09:17:412014年世界杯参赛球队: 瑞士
日期:2014-06-13 11:23:53
发表于 2015-1-22 14:07 | 显示全部楼层
大不了干掉重建一个

使用道具 举报

回复
求职 : ERP实施
论坛徽章:
9
2011新春纪念徽章
日期:2011-02-18 11:43:34ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:56ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:002013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2014-03-27 06:00:132015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39喜羊羊
日期:2015-03-10 14:01:43
发表于 2015-2-4 12:03 | 显示全部楼层
先看看程序是否有一些比较低效的SQL,或者有些SQL可能没必要Order By什么的......


Operations that Require Temporary Segments
The following statements sometimes require the use of a temporary segment:
■ CREATE INDEX
■ SELECT ... ORDER BY
■ SELECT DISTINCT ...
■ SELECT ... GROUP BY
■ SELECT . . . UNION
■ SELECT ... INTERSECT
■ SELECT ... MINUS
Some unindexed joins and correlated subqueries can require use of a temporary
segment. For example, if a query contains a DISTINCT clause, a GROUP BY, and an
ORDER BY, Oracle can require as many as two temporary segments.

使用道具 举报

回复
论坛徽章:
4
优秀写手
日期:2014-08-15 06:00:132015年新春福章
日期:2015-03-04 14:55:132015年新春福章
日期:2015-03-06 11:59:47慢羊羊
日期:2015-04-08 13:42:29
发表于 2015-2-4 14:32 | 显示全部楼层
myles521 发表于 2015-1-20 13:10
使用完之后就会释放,但是文件大小不会回收,你得看真正使用的是多少

文件大小不会回收,指的是什么文件

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表