临时表空间暴涨原因分析

巡检发现用户临时表空间在08:30左右,上涨50%

1、查看临时表空间变化趋势图

在这里  的事实v胜多负少vv  地方v发 插入图片描述
2、找到造成这一问题的sql语句

通过捕获同一时间段的sql语句 ,发现是sql_id为8yquvdakbcjqz 导致的
在这里插入图片描述

3、查看执行计划在这里插入图片描述
发现存在笛卡尔积MERGE JOIN CARTESIAN
在这里插入图片描述

4、原因分析

笛卡尔积的出现会严重影响执行效率,出现此问题的原因是:

1)两个表的不对等(不属于本次问题)

2)CBO优化器选择错误,统计信息收集不准确

(1)只返回一行数据的表,查看是否需要收集统计信息

select table_name,stale_stats from dba_tab_statistics where table_name
in (‘xx’,‘xx’,‘xx’)

(2)查看USER_GROUP_ID是否为最优选择,发现唯一值并不多,考虑添加hint

生成执行计划较优的sqlprofile,并进行绑定

3)清理shared_pool,重新生成执行计划

(1)查询共享池中的执行计划

select PLAN_HASH_VALUE,sql_profile,sql_id,address,hash_value from gv$sqlarea where sql_id=‘8yquvdakbcjqz’;

PLAN_HASH_VALUE SQL_PROFILE SQL_ID ADDRESS HASH_VALUE


  3622554210             8yquvdakbcjqz  00000000DEDA0CE0  2763409119

2)执行命令,将需要清除的执行计划进行清理。

exec sys.dbms_shared_pool.purge(‘00000000DEDA0CE0,2763409119’,‘c’);

3)检查数据库服务器的cpu使用率,并且执行相关脚本跟踪sql执行情况。

5、解决方案

最终采用清理shared_pool,重新生成执行计划的方案优化SQL
查看执行效率发现MERGE JOIN CARTESIAN已经不存在了
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值