首页 > 代码库 > PLSQL_统计信息系列1_以前正常程式因统计信息过久突然出现性能问题(案例)
PLSQL_统计信息系列1_以前正常程式因统计信息过久突然出现性能问题(案例)
2014-11-15 Created By BaoXinjian
一、摘要
在性能的稳定数据库中,所有的job都需要在一定时间内完成
以前在一个银行系统中,突然某一个job原本在30minutes内完成的,但是在3hours之后,还在运行
排除了数据量大小变化的影响,需要查看该程序的解析计划是否变更,在稳定的系统中,job对应的explain plan一般通过sqlplan management固定,很少变化
所以需要查看,是否job对应的sqlplan explain是否变化
一般来说,解析计划变更也会导致此类问题
二、解决方式
Step1. 查看程序对应的session
select sid, sql_id from v$session where sid = 1001
Step2. 查看对应session目前在运行的sql
select b.begin_interval_time, a.disk_reads_total, a.buffer_gets_total,a.buffer_gets_delta, a.rows_processed_total, a.plan_hash_value from dba_hist_sqlstat a, dba_hist_snapshot b where a.snap_id = b.snap_id
and sql_id = ‘466bpq7055f4c‘
order by 1 desc;
Step3. 查看该长时间运行sql对应的解析计划是否在这段时间有过变更
select* from v$sql_plan
Step4. 查看表的统计时间
select name, last_analized from dba_tables
Step5. 对表进行产生统计信息
exec dbms_stats.gather_table_stats(ownname=>‘SCOT‘,tabname=>‘GAVIN‘,estimate_percent=>3,degree=>32,granularity=>‘GLOBAL‘,cascade=>FALSE,no_invalidate=>FALSE);
Thanks and Regards
PLSQL_统计信息系列1_以前正常程式因统计信息过久突然出现性能问题(案例)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。