1.IO使用率100%。

2. 查看AWR报告(最小时间间隔)
查看top 5等待事件,有direct path read。Direct path read是消耗IO资源的操作。

3. 找出消耗IO的SQL
3.1 查看这些SQL的具体情况。
查看SQL的执行计划
SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('92n6xk7v9w92k', 0, 'ALL'));
select * from table(dbms_xplan.display_awr('92n6xk7v9w92k'));
查看SQL的文本
select sql_text from v$sqltext where sql_id = '92n6xk7v9w92k';
4. 找出运行这些SQL的session,然后kill掉。
SELECT 'alter system kill session '''||SID || ',' || SERIAL#||''';'
FROM V$SESSION where sql_id='92n6xk7v9w92k';
5. direct path read可能是由于全表扫描导致,所以将serial_direct_read禁止。
alter session set "_serial_direct_read"=false;
6. 再次查看是否有direct path read IO等待事件。
SELECT SID, SERIAL#, event
FROM V$SESSION where event = ‘direct path read’;
发现没有direct path read的sql执行了。
7, 查看系统IO
发现IO使用率降到50%左右。
当遇到IO使用率达到100%且AWR报告显示Direct Path Read等待事件高时,可以采取一系列步骤来定位和解决问题。首先,找到消耗IO的SQL,通过分析执行计划和SQL文本了解其执行情况。接着,杀死对应SQL的会话,并禁用_serial_direct_read参数以避免全表扫描。最后,检查是否还有Direct Path Read等待事件,并观察IO使用率变化,结果显示IO使用率降至50%左右,问题得到改善。

684

被折叠的 条评论
为什么被折叠?



