场景:测试库压力测试,用户反应oracle库很慢很慢
1检查等待事件:
select event,count(1) from v$session_wait group by event order by 2 desc;
发现 read by other session 排第一。
2找到read by other session的SQL,同时可以取一个AWR报告看看TOP SQL,都指向同一SQL。
select sid,
s.username,
s.program,
s.action,
logon_time,
q.sql_text,
q.SQL_FULLTEXT,
q.sql_id
from v$session s
left join v$sql q on s.sql_hash_value = q.hash_value
where s.sid in (select sid
from v$session_wait
where event in ('read by other session'));
3、找到绑定变量,执行一下SQL,看看SQL是执行计划。此时可以做一个10053事件,看看为啥是这样的执行计划。
但是SQL很明显是走了一个错误的索引。
select * from v$sql_bind_capture where sql_id='f2wthw8rn4706';
4、CBO计算执行计划是根据统计信息,错误的执行计划很可能是统计信息不准确。经查询,果然是统计信息不准确。收集统