社区
基础和管理
帖子详情
temp表空间涨满,访问速度变慢的问题
悲酥清风
2009-08-26 09:29:35
不知道大家有没有遇到过这个问题,temp表空间很快使用率涨到了99%多,这时候访问数据库的效率变得奇慢无比,针对这样的问题有什么好的解决方法?
看到很多人遇到这样的问题,但并没有很好的解决,一方面可以从对数据的访问上简化查询之类的操作来优化,但毕竟是有限的
如果删除现有的temp表空间然后新建,会有什么影响吗?
...全文
938
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
Temp
表空间
不足
问题
解决方案详解
虽然能生成告警,但若无主动推送机制,则仍可能被忽视。因此,应将其与外部通知系统集成,实现邮件、短信甚至企业微信/钉钉机器人告警。-- 会话级生命周期:数据跨事务保留id NUMBER,-- 事务级生命周期:提交即清空优势对比表:特性手动临时表全局临时表(GTT)存储位置用户
表空间
Temp
表空间
并发安全需命名隔离自动会话隔离清理方式手动DROP/TRUNCATE提交或断开自动清空统计信息需维护。
oracle临时表-优化查询速度
1、前言 目前所有使用oracle作为数据库支撑平台的应用,大部分数据量比较庞大的系统,即表的数据量一般情况下都是在百万级以上的数据量。 当然在oracle中创建分区是一种不错的选择,但是当你发现你的应用有多张表关联的时候,并且这些表大部分都是比较庞大,而你关联的时候发现其中的某一张或者某几张表关联之后得到的结果集非常小并且查询得到这个结果集的速度非常快,那么这个时候我考虑在
重启系统后oracle突然
变慢
问题
解决
昨晚大停电,今早来启动服务器,然后启动数据库,运行本地项目连接的时候,执行一个sql语句需要3分钟,昨天同样的程序执行只需要3秒,oracle查询速度突然
变慢
,但是对于很多数据量小的表以及简单查询数据量大的表还是比较快的,我执行的那个sql需要连接许多张表一起查询,并且已经做了分页,速度还是很慢。 网上搜了很多原因,有个说是资源没有关闭释放,要关闭session,杀死线程,然后照做了,杀了许多线
临时
表空间
作用
临时
表空间
oracle大表执行慢的优化方法,Oracle性能突然
变慢
的解决思路
场景:某个ETL任务正常情况下每天11:30~12:00之间结束,突然某天后延到13:50,次日15点,然后逐步每天稳定在17:00,同服务器下其他任务也相对
变慢
。一、IO层面
问题
排查1.查看操作系统资源管理器磁盘活动,确定排名靠前的磁盘IO,定位具体进程,确认是否有异常或不必要的IO进程,此处定位并暂停OGG进程(谨慎停止),观察一整天数据库性能2.排除系统自动备份任务造成的IO性能资源堵塞,此...
基础和管理
17,380
社区成员
95,113
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章