ZDNetChina中文社区 » 数据库开发 » Oracle » 临时表空间异常增长


2008-5-27 11:16 小玩将
临时表空间异常增长

临时表空间在什么情况下会异常增长
现有环境 AIX5306+ORACLE10203,故障描述如下:
1、        在生产机上,当日常有超过17个左右的并发数据库操作,则会出现数据库临时表空间不足的情况,而每个并发操作基本上是针对一个分行一天的数据进行Group  by 操作,且每个分行一天的数据量最多不会超过300条记录数,数据文件大小也就几百兆,通过监控,每个并发操作需要8-10G的临时表空间,且与并发数是成倍增长的,即如果有17个并发操作总共就需要17*8=136G以上的临时表空间。但是同样的操作,同样的数据量,每个并发操作在测试机上只需要不超过300M的临时表空间。
2、        在生产机上当有超过17个左右的并发数据库操作,出现临时表空间不足的情况下,就一定会发生部分操作被挂死的情况,如果不KILL这些Session,则这些操作10几个小时都不能执行完,也不报任何错误。但如果正常的话,这些错作5分钟之内绝对完成。
3环境对比:

        生产环境        测试环境
操作系统        AIX5300-06 64-bit         AIX5200-07 64-bit
ORACLE版本        10.2.0.3.0 64-bit        10.2.0.1.0 64-bit
执行语句        相同        相同
临时表空间        140G        38G
临时表空间INITIAL_EXTENT        1048576        1048576
临时表空间NEXT_EXTENT        1048576        1048576
SGA        6G        2672M
PGA        2422M        886M
PGA管理模式        AUTO        AUTO
并行会话数        3        3
临时表空间使用量        28G        200M

执行的存储过程见复件,请各位看看可以如何优化:

2008-5-27 11:16 意大利
通常临时表空间爆涨的原因有以下2种:
第一,查询的时候连表查询中使用的表过多,这样会造成积数过大,这个积数大小直接影响了你的临时表空间的占用大小
第二,对查询的某些字段没有使用到索引,如果没有索引,在执行查询的时候,数据会先被复制到临时表空间,如果有的话,复制的只不过是索引的数据

还有一种就是你的临时表空间没有设置上限。。不过好像你应该设置了吧:)

如果都不是这种情况,那么就要根据你的实际情况对临时表空间从新定义大小

页: [1]
查看完整版本: 临时表空间异常增长


Powered by Discuz!  Archiver   © 2001-2006 Comsenz Inc.