正德厚生,臻于至善

Oracle整体性能工具获取

如把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.查看物理读最高的对象
赞(0) 打赏
未经允许不得转载:徐万新之路 » Oracle整体性能工具获取

评论 抢沙发

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫

微信扫一扫

登录

找回密码

注册