AWR 说明
Oracle 10g之前对数据库做性能检测使用statspack工具。关于statspack的说明,
Oracle Database 10g 提供了一个新的工具:(AWR:Automatic Workload Repository)。Oracle 建议用户用这个取代 Statspack。AWR 实质上是一个 Oracle 的内置工具,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题。
与 Statspack 不同,快照由一个称为 MMON 的新的后台进程及其从进程自动地每小时采集一次。为了节省空间,采集的数据在 7 天后自动清除。快照频率和保留时间都可以由用户修改。它产生两种类型的输出:文本格式(类似于 Statspack 报表的文本格式但来自于 AWR 信息库)和默认的 HTML 格式(拥有到部分和子部分的所有超链接),从而提供了非常用户友好的报表。
AWR 使用几个表来存储采集的统计数据,所有的表都存储在新的名称为 SYSAUX 的特定表空间中的 SYS 模式下,并且以 WRM$_* 和 WRH$_* 的格式命名。前一种类型存储元数据信息(如检查的数据库和采集的快照),后一种类型保存实际采集的统计数据。H 代表“历史数据 (historical)”而 M 代表“元数据 (metadata)”。
在这些表上构建了几种带前缀 DBA_HIST_ 的视图,这些视图可以用来编写您自己的性能诊断工具。视图的名称直接与表相关;例如,视图 DBA_HIST_SYSMETRIC_SUMMARY 是在WRH$_SYSMETRIC_SUMMARY 表上构建的。
AWR主要指标:
SQL和优化器指标
OS指标
等待事件类型
时间指标
注意一点:
statistics_level 默认是typical,在10g中表监控是激活的,强烈建议在10g中此参数的值是typical。如果STATISTICS_LEVEL设置为basic,不仅不能监控表,而且将禁掉如下一些10g的新功能:
ASH(Active Session History)
ASSM(Automatic Shared Memory Management)
AWR(Automatic Workload Repository)
ADDM(Automatic Database Diagnostic Monitor)
SQL> show parameter statistics_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
statistics_level string TYPICAL
1、AWR报告管理
Oracle 10g 以后推出的,主要是用于DBA诊断数据性能的报告。简单来说就是一堆的历史数据的信息汇总
1)、Awr报告保留时间:10g 7天,11g 8天,默认快照间隔1个小时但是可以更改。
· 可以通过dbms_workload_repostitory.modify_snapshot_settings存储过程修改,Awr的核心就是dbms_workload_repostitory包。
· 例子:调整AWR产生snapshot的频率和保留策略,如:如将收集间隔时间改为30分钟一次。并保留5天时间(注:单位都是为分钟)
exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);
· 查看 AWR设置SELECT * FROM DBA_hist_wr_control
· 关闭AWR,把interval设为0则关闭自动捕捉快照
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>0);
· 手动执行一个快照:Exec dbms_workload_repository.create_snapshot();
· 查看快照:select * from sys.wrh$_active_session_history
· 查看AWR的快照ID
SELECT SNAP_ID,
to_char(BEGIN_INTERVAL_TIME,'yyyy-mm-dd hh24:mi:ss') BEGIN_INTERVAL_TIME,
to_char(STARTUP_TIME,'yyyy-mm-dd hh24:mi:ss') STARTUP_TIME
FROM dba_hist_snapshot ORDER BY 1;
· 手工删除指定范围的快照:dbms_workload_repository.drop_snapshot_range(low_snap_id =>54, high_snap_id =>60, dbid =>1333331987);
· 将AWR数据导出并迁移到其它数据库以便于以后分析
SQL> exec DBMS_SWRF_INTERNAL.AWR_EXTRACT(dmpfile => 'awr_data.dmp', mpdir => 'DIR_BDUMP', bid => 1003, eid => 1013);
· 迁移AWR数据文件到其他数据库
SQL> exec DBMS_SWRF_INTERNAL.AWR_LOAD(SCHNAME => 'AWR_TEST', dmpfile => 'awr_data.dmp', dmpdir => 'DIR_BDUMP');
· 把AWR数据转移到SYS模式中:
SQL> exec DBMS_SWRF_INTERNAL.MOVE_TO_AWR (SCHNAME => 'TEST');
2)、AWR报告数据信息存在sysaux表空间.
资源库repository
有三类表保存在SYSAUX表空间中
sys.wri$_ (internal)内部
sys.wrm$_ (metadata)元数据
sys.wrh$_ (history)历史
3)、单实例生成AWR: sql> @?/rdbms/admin/awrrpt
多实例(rac):sql> @?/rdbms/admin/awrrpti 多一个i
11g新特性:全局awr:sql> @?/rdbms/admin/awrgrpt 多一个g
Awr对比报告: sql> @?/rdbms/admin/awrddrpt 可以选择两个时间段生成AWR报告。
snap号不能跨越关机.
生成报告的目录:为你登录SQLPLUS时的目录。
用 sys之外的用户(SCOTT)创建 AWR 报告:
CONNECT / AS SYSDBA
GRANT ADVISOR TO SCOTT;
GRANT SELECT_CATALOG_ROLE TO SCOTT;
GRANT EXECUTE ON sys.dbms_workload_repository TO SCOTT;
4)AWR基线 所谓基线就是度量的指标的标准参考。
基线定义为一定范围内的快照,它可以用来与其他快照进行比较。也可以理解为指定需要保留的AWR SNAPSHOT,目的就是不会被AWR清除程序把这些快照清掉,当然你也可以先产生好awr report,然后保留下来,与后来产生的awr report对比
· 创建一个awr基线
Exec dbms_workload_respository.create_baseline(start_snapshot,end_snapshot,baseline_name);
exec dbms_workload_repository.create_baseline(start_snap_id=>642,end_snap_id=>648,baseline_name=>'EOM Baseline');
start_snapshot:开始的快照时
start_snapshot:开始的快照id
end_snapshot:结束的快照id
baseline_name:基线的名字
· 删除基线
exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => ' apply_interest_1', cascade => FALSE);
· 查看基线通过视图DBA_HIST_BASELINE select * from dba_hist_baseline
2、AWR数据来源
Awr数据信息存放地点:
DBA_ADIVSOR_*
DBA_HIST_*
DBA_FEATURE_*
DBA_HIGH_WATER_MARK_*
DBA_TAB_STATS_HISTORY 这只是一部分
3、AWR指标统计
· SQL,优化器指标
· OS指标
· 等待事件类型
· 时间指标
· SQL,优化器指标
上面的awr写的是花费cpu时间sql 排序,最上面的那个sql花费的cpu时间最多,可以考虑优化。
度量 metric
ASH ACTIVE SESSION HISTORY,以理解为ash的内容是awr内容的再一次数据挖掘 ,查询v$active_session_history
ADVISOR
数据库的特性使用情况
4、AWR进程
维护进程:mmon(manageeability monitor process),Mmon有很多子进程,也叫从属进程:m00x
SQL> select name,DESCRIPTION from v$bgprocess where name like 'MMON%';
NAME DESCRIPTION
----- ----------------------------------------------------------------
MMON Manageability Monitor Process
1:启动slave进程m00x去做awr快照
2:当某个度量阀指被超过时发出alert告警
3:为最近改变过sql对象捕获指标信息
sga 里面收集统计信息,通过mmon 进程做awr报告。同时sga的信息被v$性能视图抓取。awr快照的信息又反馈给dba_*一类的视图,进而反馈给外部客户端,比如em,sqlplus,sga的统计信息又可以反馈给内部客户端。比如addm。