一
确认问题时间段
2014年9月23日 19:42
通过以下语句把昨晚ash报告中有问题的执行计划导出来
select sql_id,plan_hash_value,SNAP_ID from dba_hist_sqlstat where sql_id='42fc3fw90t4sk' and SNAP_ID between 18765 and 18766 order by SNAP_ID;
select sql_id,plan_hash_value,SNAP_ID from dba_hist_sqlstat where sql_id='8wa7cgcpd019z' and SNAP_ID between 18765 and 18766 order by SNAP_ID;
select sql_id,plan_hash_value,SNAP_ID from dba_hist_sqlstat where sql_id='gxfd8aggfd6pf' and SNAP_ID between 18765 and 18766 order by SNAP_ID;
根据以上查询出来的sql_id通过以下找到在18765 and 18766快照时间段内的执行计划
select * from table(dbms_xplan.display_awr('******'));
select * from table(dbms_xplan.display_cursor('&SQL_ID',&child_number));
SQL Plan Management (SPM) Frequently Asked Questions (Doc ID 1524658.1)
How to Get Execution Plans and Execution Elapsed Times for a Refresh Generated Recursive SQL (Doc ID 1315632.1)
某保险公司
select sql_id,plan_hash_value,SNAP_ID from dba_hist_sqlstat where sql_id='1pamdbsybqt64' and SNAP_ID between 25868 and 25868 order by SNAP_ID;
短信系统awr执行计划
select * from table( DBMS_XPLAN.DISPLAY_AWR('634p3yhu8d9aj',NULL,NULL, 'ALL'));
select sql_id,plan_hash_value,SNAP_ID from dba_hist_sqlstat where sql_id='dq5hm0mpsx0x2';
select sql_id,plan_hash_value,SNAP_ID from dba_hist_sqlstat where sql_id='8mdn1hnm4rzat';
select sql_id,plan_hash_value,SNAP_ID from dba_hist_sqlstat where sql_id='0b4vmh6cxx6c1';
-------------------------------
历史session信息
select SESSION_ID,count(*) from v$active_session_history
select min(sample_time), max(sample_time) from v$active_session_history;
col END_INTERVAL_TIME for a30
set line 160
select END_INTERVAL_TIME,sum(EXECUTIONS_DELTA) from dba_hist_sqlstat t1,dba_hist_snapshot t2 where t1.snap_id=t2.snap_id and plan_hash_value='1618008348'
and END_INTERVAL_TIME>=sysdate-10 group by END_INTERVAL_TIME order by 1;
END_INTERVAL_TIME SUM(EXECUTIONS_DELTA)
------------------------------ ---------------------
02-OCT-15 09.00.27.732 AM 13
02-OCT-15 11.00.10.339 AM 97
..
03-OCT-15 10.00.14.862 AM 38
..
03-OCT-15 12.00.01.642 PM 74
03-OCT-15 01.00.06.360 PM 26
..
04-OCT-15 09.00.31.120 AM 12
..
04-OCT-15 07.00.16.060 PM 3
04-OCT-15 07.00.16.161 PM 3
05-OCT-15 09.00.07.185 AM 29
05-OCT-15 09.00.07.265 AM 29
..
06-OCT-15 09.00.05.343 AM 18
06-OCT-15 09.00.05.458 AM 18
06-OCT-15 10.00.09.288 AM 52
06-OCT-15 10.00.09.389 AM 52
06-OCT-15 11.00.03.984 AM 76
..
07-OCT-15 11.00.27.014 AM 105
07-OCT-15 11.00.27.242 AM 105
07-OCT-15 12.00.36.772 PM 71
07-OCT-15 12.00.36.951 PM 71
07-OCT-15 01.00.01.717 PM 37
..
08-OCT-15 09.00.32.016 AM 65
08-OCT-15 09.00.32.334 AM 65
08-OCT-15 10.00.02.879 AM 200
08-OCT-15 10.00.03.046 AM 200
08-OCT-15 11.00.20.101 AM 224
08-OCT-15 11.00.20.391 AM 224
08-OCT-15 12.00.14.853 PM 230
08-OCT-15 12.00.15.071 PM 230
08-OCT-15 01.00.21.342 PM 78
08-OCT-15 01.00.21.694 PM 78
..
08-OCT-15 09.00.14.070 PM 1
08-OCT-15 10.00.18.266 PM 1
08-OCT-15 10.00.18.413 PM 1
问题时间段
08-OCT-15 10.00.02.879 AM 200
08-OCT-15 10.00.03.046 AM 200
08-OCT-15 11.00.20.101 AM 224
08-OCT-15 11.00.20.391 AM 224
08-OCT-15 12.00.14.853 PM 230
08-OCT-15 12.00.15.071 PM 230
根据sql_id查看对应不同的执行计划(plan_hash_value)
---select sql_id,plan_hash_value,snap_id from dba_hist_sqlstat where sql_id='&:sql_id' and snap_id between and order by snap_id;
start $ORACLE_HOME/rdbms/admin/awrsqrpt.sql
使用sta优化建议
创建优化建议任务
variable sts_task varchar2(64);
exec:sts_task:=dbms_sqltune.create_tuning_task(task_name=>'sts_tune_tune1',sql_id=>'9dbq3dpu2mfjh')
执行优化建议
exec dbms_sqltune.execute_tuning_task('sts_tune_tune1');
查看优化报告
select dbms_sqltune.report_tuning_task('sts_tune_tune1') from dual;
---task_name=>'sts_tune_tune1',
接收优化建议
exec dbms_sqltune.accept_sql_profile(task_name=>'sts_tune_tune1',replace=> true)