alter session set events '10046 trace name context forever,level 8';
select * from v$system_event where event='db file scattered read';
db file scattered read
全表扫描(Full Table Scans)或快速全索引扫描(Index Fast Full Scans)
library cache lock
登录密码错误尝试过多、热表收集统计信息和SQL解析失败,sql绑定变量无法共享,过期游标过多,大量并发业务
建议一: 后期进行历史分区清理的操作(DDL操作同类)时,需提前查询表上SQL的游标是否超过200,如超过这个阈值,应主动使用DBMS_SHARED_POOL.PURGE的方式将过期的游标清理出内存,尽可能的减少遍历游标HASH链表时间较长的现象;
select 'exec sys.dbms_shared_pool.purge(''' || address || ',' ||
hash_value || ''',''C'');' as flush_sql
from v$sql t
where t.sql_id = '&sqlid'
and t.is_obsolete = 'Y'
group by address,hash_value;
建议二: 从应用层面,建议将前述同一个SQLID(g14zxrn7wyaxh)的SQL文本,通过在原SQL文本中,加入不同的注释,从而将其变为若干个不同SQLI ,但功能相同的SQL。其目的也是业务峰期时,将访问分散到不同的父游标上
建议三: 数据库分区维护操作属于DDL操作,影响较大,应选择业务最低峰期进行操作