社区
基础和管理
帖子详情
temp表空间涨满,访问速度变慢的问题
悲酥清风
2009-08-26 09:29:35
不知道大家有没有遇到过这个问题,temp表空间很快使用率涨到了99%多,这时候访问数据库的效率变得奇慢无比,针对这样的问题有什么好的解决方法?
看到很多人遇到这样的问题,但并没有很好的解决,一方面可以从对数据的访问上简化查询之类的操作来优化,但毕竟是有限的
如果删除现有的temp表空间然后新建,会有什么影响吗?
...全文
871
14
打赏
收藏
temp表空间涨满,访问速度变慢的问题
不知道大家有没有遇到过这个问题,temp表空间很快使用率涨到了99%多,这时候访问数据库的效率变得奇慢无比,针对这样的问题有什么好的解决方法? 看到很多人遇到这样的问题,但并没有很好的解决,一方面可以从对数据的访问上简化查询之类的操作来优化,但毕竟是有限的 如果删除现有的temp表空间然后新建,会有什么影响吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vc555
2009-08-26
打赏
举报
回复
关键是sql的disk sort过多造成。
1.优化sql,减少sort,或尽量将disk sort转为memory sort.
2.考虑加大pga设置:
show parameter pga_aggregate_target
show parameter workarea_size_policy
3.2g的temp表空间使用率99%,说明有近2g数据都是磁盘排序,sql查询变得奇慢是自然的。找出占用temp表空间最多的sql,优化。
如sql执行完,temp segment是可被重用的,使用率会下降。
上面方法都不能在优化,才考虑加大temp表空间,可drop an recreate或者maxsize unlimited.
hailang1118
2009-08-26
打赏
举报
回复
你先看看什么处理用TEMP表空间那么多,看看能不能改善。改善不了那么看看能不能加内存。
上面两个方法都不行,才改TEMP表空间。
TEMP表空间是在你的SGA内存不够用的时候,Oracle会把数据放到TEMP表空间里的。
改TEMP表空间,只能是治标不治本。
你改成很大,对你的性能改善是不会起多少作用的。
ojuju10
2009-08-26
打赏
举报
回复
[Quote=引用 4 楼 pengjd 的回复:]
数据量在14-18G之间,temp表空间目前设置的是2G
按楼上的说法显然是不够用的…
[/Quote]
2G太小了,多增加一些临时表空间
多壮志
2009-08-26
打赏
举报
回复
其它的不说(例如排序之类的)。
主要就是临时表方面,写程序的时候务必要注意一点。
有的系统中如果大量利用on commit preserve rows类型的临时表,那么如果可能的话,尽量用过之后就trunacate掉,否则session存在的时候,依然会占用不少的空间。
Dave
2009-08-26
打赏
举报
回复
网上的一种解决方法,楼主可以试试..
1、 确定TEMP表空间的ts#
SQL>select ts#, name from sys.ts$ ;
TS# NAME
---------- ------------------------------
0 SYSTEM
1 UNDOTBS1
2 SYSAUX
3 TEMP
4 USERS
5 UNDOTBS2
2、 执行清理操作
SQL>alter session set events 'immediate trace name DROP_SEGMENTS level 4' ;
说明:
temp表空间的TS# 为 3, So TS#+ 1= 4
悲酥清风
2009-08-26
打赏
举报
回复
数据量在14-18G之间,temp表空间目前设置的是2G
按楼上的说法显然是不够用的…
Dave
2009-08-26
打赏
举报
回复
oracle排序时,当PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序.
建议:
1. 重启数据库释放temp
2. 查看temp用户并kill掉
SELECT se.username, se.SID, se.serial#, se.sql_address, se.machine, se.program, su.TABLESPACE,su.segtype, su.CONTENTS FROM v$session se, v$sort_usage su
WHERE se.saddr = su.session_addr
Alter system kill session 'sid,serial#';
3. 多增加几个temp文件,这样不同的事务可以在不同的temp上,性能上要高点..
majy
2009-08-26
打赏
举报
回复
把你的数据库的规模描述一下,比如有多少数据量,temp空间多少大
如果数据库使用率比较高的情况下,你的temp大小可以设置到你的主体数据量的大小。如果你有10G的主要数据,那么你的temp表空间也设置成10G吧,这样,基本上能满足使用要求了
inthirties
2009-08-26
打赏
举报
回复
temp表空间实际过程中确实存在着不断扩张的问题,不过扩张的过度或者频繁的扩展,应该是你的应用中有一些隐患造成的,毕竟temp是排序不够和其他需要排序的运算使用的。
建议你先,收缩一下temp表空间,然后多多监控一下你的数据库。
收缩表空间
http://blog.csdn.net/inthirties/archive/2009/05/29/4221938.aspx
Well
2009-08-26
打赏
举报
回复
temp是当sga的内存不够。。也就是进行排序操作时会用到。。你可以监控一下数据库的有压力的SQL语句,是不是存在过多的不良的SQL语句全表扫描。。可以将temp重新创建。。删除再创建。。
傻儿哥
2009-08-26
打赏
举报
回复
关于增大pga:
怎么查看加到多少就能减小使用temp表的概率呢?(增加了cache hit)
可以使用 EM CONTROL 的一个pga 查看功能,
可以使用mem advisor来调整 PGA.
傻儿哥
2009-08-26
打赏
举报
回复
把disk sort该为 mem sort 的一个建议:
在 SGA中设置
recycle buffer,(它可以缓冲大表)
设置keep buffer,它可以避免经常被访问的小表被淘汰.
查找你sql语句常用到的 大表,和小表.指定存储到keep buffer,或者recycle buffer里来.
语法如下
CREATE INDEX cust_idx …
STORAGE (BUFFER_POOL KEEP …);
ALTER TABLE oe.customers
STORAGE (BUFFER_POOL RECYCLE);
ALTER INDEX oe.cust_lname_ix
STORAGE (BUFFER_POOL KEEP);
傻儿哥
2009-08-26
打赏
举报
回复
[Quote=引用 9 楼 vc555 的回复:]
关键是sql的disk sort过多造成。
1.优化sql,减少sort,或尽量将disk sort转为memory sort.
2.考虑加大pga设置:
show parameter pga_aggregate_target
show parameter workarea_size_policy
3.2g的temp表空间使用率99%,说明有近2g数据都是磁盘排序,sql查询变得奇慢是自然的。找出占用temp表空间最多的sql,优化。
如sql执行完,temp segment是可被重用的,使用率会下降。
上面方法都不能在优化,才考虑加大temp表空间,可drop an recreate或者maxsize unlimited.
[/Quote]
不错,引用下,
zzzzzyyy
2009-08-26
打赏
举报
回复
看到1楼的高手大哥的空间了,呵呵,学习了!
oracle换临时表执行慢,oracle程序性能优化实录-临时
表空间
进行oracle程序性能优化时,还要注意undo空间和临时
表空间
的使用率,如果过高的话,也会导致程序运行缓慢。一般使用率至少需要小于80%。程序运行中报错:ORA-01652:无法通过128(在
表空间
TEMP
中)扩展
temp
段。数据库原来没有这个现象,三表关联查询做insert,速度比较慢。后来在查询语句中加了full提示,,就出现了临时
表空间
不足。查询发现临时
表空间
的使用率已经达到100%了。i...
临时
表空间
作用
临时
表空间
Sql查询
变慢
的原因及优化方法总结
这里写自定义目录标题Sql查询
变慢
的原因及优化方法总结新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 Sql查询
变慢
的原因及优化方法总结 查询速度慢的原因很多,本文总结SQL查询慢的10个原因及50个优化方法: 1、没有
Oracle临时
表空间
oracle的临时
表空间
Oracle临时
表空间
为何暴涨? 昨天在做测试的时候发现一个非常奇怪的
问题
:在程序的查询模块中做查询的时候,开始速度很快,但是过了一段时间以后速度就
变慢
,最后干脆就报错,不工作了。在排错的过程中,发现Oracle临时
表空间
暴涨,达到了几十个GB,在Oracle中对Session进行跟踪,发现磁盘空间还在不停的消耗,几乎是每隔5s,临时表
Oracle查询速度慢的原因总结
查询速度慢的原因很多,常见如下几种: 1,没有索引或者没有用到索引(这是查询慢最常见的
问题
,是程序设计的缺陷) 2,I/O吞吐量小,形成了瓶颈效应. 3,没有创建计算列导致查询不优化. 4,内存不足 5,网络速度慢 6,查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7,锁或者死锁(这也是查询慢最常见的
问题
,是程序设计的缺陷) 8,sp_lock,sp_who,活动的用户查看,原因是读写竞争资源. 9,返回了不必要的行和列 10,查询语句不好,没有优化 可以通过如下方法来优化查询 : .
基础和管理
17,377
社区成员
95,127
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章