如把awr设置为10分钟收集一次、每次收集50条耗费资源的sql,并保留2天的收集数据,可以用如下方式修改
SQL> exec dbms_workload_repository.modify_snapshot_settings(2*24*60,10,50);
exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(topnsql=>50);
exec DBMS_WORKLOAD_REPOSITORY.AWR_SET_REPORT_THRESHOLDS(top_n_sql=>50, top_n_events=>10);
col SNAP_INTERVAL format a30
col RETENTION format a30
set linesize 150
select * from dba_hist_wr_control;
1.awr 关注数据库的整体性能报告 类似于体检报告
@?/rdbms/admin/awrrpt
select output from table(dbms_workload_repository.awr_report_html(v_dbid,v_instance_number,v_min_snap_id,v_max_snap_id));
关注的要点:load_profile、efficiency percentages、top 5 events、SQL Statistics、segment_statistics
2.ash ash关注数据库中的等待事件与哪些sql具体对应 类似于胃镜
@?/rdbms/admin/ashrpt
select output from table(dbms_workload_repository.ash_report_html(dbid,inst_num,l_btime,l_etime));
关注的要点:等待事件与sql的具体结合
3.addm Oracle给出的一些建议 类似于病历卡记录
@?/rdbms/admin/addmrpt
select dbms_advisor.get_task_report('ADDM_02','TEXT','ALL') from dual;
关注的要点:整体性的建议,局部sql建议
4.awrdd 针对不同时段的性能的一个比对报告 医生分析前后两次体检报告的动作
@?/rdbms/admin/awrddrpt
关注的要点:不同时期的load_profile、不同时期等待事件、不同时期TOP SQL
5.awrsq 具体某个sql的执行计划,可以保存多个执行计划 类似于活检
@?/rdbms/admin/awrsqrpt
关注的要点:Plan Statistics、Execution Plan
-----------------------------------------awr报告
exec dbms_workload_repository.create_snapshot();
col SNAP_INTERVAL for a20
col RETENTION for a20
select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
188752074 +00000 00:30:00.0 +00014 00:00:00.0 DEFAULT
表示采样间隔是30分钟
表示采样数据保留期限是14天
exec dbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>30*2*24*60);
exec dbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>30*2*24*14);
interval:将间隔设置为0时,oracle将禁止采用自动和手工快照的机制。
retention:(单位是min)最小值为1天最大值是100年,当保存时间设置为0时,oracle将永久地保存这个快照。
@?/rdbms/admin/awrrpt.sql
1.登录:sqlplus / as sysdba
2.快照:exec dbms_workload_repository.create_snapshot;
--生成不同形式的awr
1.生成单实例 AWR 报告:@$ORACLE_HOME/rdbms/admin/awrrpt.sql
2.生成 Oracle RAC AWR 报告:@$ORACLE_HOME/rdbms/admin/awrgrpt.sql
3.生成 RAC 环境中特定数据库实例的 AWR 报告:@$ORACLE_HOME/rdbms/admin/awrrpti.sql
4.生成 Oracle RAC 环境中多个数据库实例的 AWR 报告的方法:@$ORACLE_HOME/rdbms/admin/awrgrpti.sql
5.生成 SQL 语句的 AWR 报告:@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql
6.生成特定数据库实例上某个 SQL 语句的 AWR 报告:@$ORACLE_HOME/rdbms/admin/awrsqrpi.sql
--生成 AWR 时段对比报告
7.生成单实例 AWR 时段对比报告:@$ORACLE_HOME/rdbms/admin/awrddrpt.sql
9.生成 Oracle RAC AWR 时段对比报告:@$ORACLE_HOME/rdbms/admin/awrgdrpt.sql
9.生成特定数据库实例的 AWR 时段对比报告:@$ORACLE_HOME/rdbms/admin/awrddrpi.sql
10.生成 Oracle RAC 环境下特定(多个)数据库实例的 AWR 时段对比报告:@$ORACLE_HOME/rdbms/admin/awrgdrpi.sql
--AWR小技巧
手动执行一个快照:
Exec dbms_workload_repository.create_snapshot; (这个要背出来哦,用的时候去翻手册,丢脸哦 J!)
创建一个AWR基线
Exec DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id,end_snap_id ,baseline_name);
SQL> Exec DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id=>57051, end_snap_id=>57052, baseline_name=>'after_upgrade11204');
PL/SQL procedure successfully completed.
@?/rdbms/admin/awrddrpt AWR比对报告
@?/rdbms/admin/awrgrpt RAC 全局AWR
自动生成AWR HTML报告:
http://www.oracle-base.com/dba/10g/generate_multiple_awr_reports.sql
https://oracle-base.com/dba/scripts
--AWR导出脚本:
SQL> @?/rdbms/admin/awrextr.sql
--AWR导入脚本:
SQL> @?/rdbms/admin/awrload.sql
exec dbms_swrf_internal.unregister_database('dbid');
--可以手动创建AWR快照
exec dbms_workload_repository.create_snapshot;
--删除AWR快照
exec dbms_workload_repository.drop_snapshot_range(low_snap_id=>300,high_snap_id=>301);
--查看AWR所有快照
select SNAP_ID,INSTANCE_NUMBER,BEGIN_INTERVAL_TIME,END_INTERVAL_TIME,SNAP_LEVEL from dba_hist_snapshot order by 1;
--创建基线
exec dbms_workload_repository.create_baseline(start_snap_id => 309, end_snap_id => 314, baseline_name => 'EMO BASELINE');
--删除基线
exec dbms_workload_repository.drop_baseline(baseline_name=>'EMO BASELINE',Cascade=>FALSE);
注意:如果参数Cascade=>true,就会删除所有相关的快照。否则,AWR自动进程自动清除这些快照,默认是FALSE。
SELECT T.SNAP_ID
FROM SYS.WRH$_ACTIVE_SESSION_HISTORY T
GROUP BY T.SNAP_ID
ORDER BY T.SNAP_ID desc;
SELECT T.SNAP_ID
FROM SYS.WRH$_ACTIVE_SESSION_HISTORY T
GROUP BY T.SNAP_ID
ORDER BY T.SNAP_ID asc;
SELECT min(T.SNAP_ID),max(T.SNAP_ID) FROM SYS.WRH$_ACTIVE_SESSION_HISTORY T;
select dbid from v$database;
exec dbms_workload_repository.drop_snapshot_range(low_snap_id => 52670, high_snap_id => 53320, dbid => 188752074);
commit;
sqlplus /nolog
conn / as sysdba
TRUNCATE TABLE WRH$_SQLTEXT;
TRUNCATE TABLE WRH$_SQL_PLAN;
awrrpt.sql,最终是调用dbms_workload_repository.awr_report_text 或者 dbms_workload_repository.awr_report_html
define inst_num = 1;
define num_days = 3;
define inst_name = 'Instance';
define db_name = 'Database';
define dbid = 4;
define begin_snap = 10;
define end_snap = 11;
define report_type = 'text';
define report_name = /tmp/swrf_report_10_11.txt
@@?/rdbms/admin/awrrpti
一份AWR报告分析的思路
http://www.oraclemagician.com/white_papers/10awr.pdf
1.查看等待事件
2.查看sequential read指标
3.查看Top Elapsed Time Sql
4.查看DB Time
5.查看物理读的消耗部分
6.查看logical reads
7.查看commit频率
8.查看系统负载
9.查看热对象
10.查看物理读最高的对象
Oracle整体性能工具获取
未经允许不得转载:徐万新之路 » Oracle整体性能工具获取
最新评论
这个牛
放下欲望,男人从来不醉,充分且必要
勇气、责任、自信、创新,为天下先!
软件即数据,软件即服务,软件即管理,软件就是对人类各种社会活动的仿真和记录。软件很重要,但软件不可能凌驾于业务之上,尤其不可能高人一等。