SQL> select event,count(*) from v$session_event group by event order by count(*) desc ; SQL*Net message from client 156 SQL*Net message to client 156 db file sequential read 250 latch free 49 1log file sync 30 db file scattered read 25 buffer busy waits 23 log file switch completion 17 SQL*Net more data to client 16
发现数据库系统有 大量 sequential read 事件。
select sid,event from v$session_wait where event in ('file sequential read ')
得到等待事件的 id
然后通过id 获得sql 语句。
SELECT sql_text FROM v$sqltext a WHERE a.hash_value = (SELECT sql_hash_value FROM v$session b WHERE b.SID = '&sid') ORDER BY piece ASC
使用该应用用户连接,检查该语句的执行计划:
SQL> set autotrace trace explain
检查表的索引:
SQL> select index_name,column_name from user_ind_columns where table_name ='HS_INFO';
检查该表,存在以下索引:
SQL> select index_name,index_type from user_indexes where table_name='HS_INFO';
检查索引键值:
SQL> select index_name,column_name from user_ind_columns where table_name ='HS_INFO';