一、自动工作负载库(Automatic Workload Repository,AWR)
自动工作负载库(Automatic Workload Repository,AWR)是在Oracle公司提供的一个工具。AWR来可以自动收集、处理、并保存性能统计结果,这种统计数据存放在内存中并随后存储在数据库中,这些数据既能在报告中显示也可以通过视图查询。可以协助我们找出Oracle的性能瓶颈。
AWR收集和处理的统计数据包括:
- 对象统计,用于确定数据库段(表、索引…)的访问情况
- 基于时间的统计:数据库活动统计,这些统计参数通过V$SYS_TIME_MODEL和V_SESS_TIME_MODEL 查询;
- 系统统计:基于系统和会话的统计,这些统计数据可以通过V$SYSSTAT和V$SESSTAT 查询。
- SQL统计:系统中造成高的负载的SQL,这些SQL使用了长的执行时间和CPU时间;
- 激活会话历史(ASH)统计:激活会话信息的历史记录,记录了最近的会话活动历史
AWR将每小时自动抓取一次性能统计数据,并将抓取的性能快照记录在工作载荷记录的代理表中。AWR快照也可以人工创,只是通常不必要这样做。快照抓取后,抓取的结果将由自动数据库诊断监视器( ADDM )分析。
在AWR抓取SQL信息时,AWR将比较以前抓取的SQL语句对性能的影响,并据此有目的的捕捉SQL语句,因此这样的做法减少了需要捕捉的SQL语句。
自动工作负载库(AWR)快照将存储在数据库中,这需要存储空间,其存储空间占用取决于下面的几个因素:
- 当前连接Oralce的激活会话的数目,数目越多,则AWR信息越多;
- AWR快照抓取间隔,默认一小时抓取一次。抓取频率增加,则存储空间占用越多。
- 历史数据的保持期限。显然,保留时间越长,空间占用越多。
缺省的快照捕捉间隔为每小时一次,记录在数据库中保存7天。调整自动工作负载库(AWR) 的快照间隔和保持时期,则其空间占用将降低。但当减少保持期时,例如自动数据库诊断监视器(ADDM)、SQL调节顾问、重做顾问、段顾问等。
为了统计结果尽可能客观、尽可能反映真正的业务载荷分布情况,我们最好将AWR保持期延伸到业务系统运行的一个完整周期。例如,如果业务系统的作业特点是周一到周五作业务,周六、日进行报表操作,则7天是你完整的一个工作周期。同理,你的工作周期可能是一个月,一个季度。由于存储介质的造价在目前的数据库系统环境中已经算是很小的一部分,因此,AWR统计的存储代价并不很高,以存储至少一个业务周期为宜。
1、AWR的启用
默认情况下Oralce启用数据库统计收集功能,可使用
SQL> show parameter statistics_level
NAME TYPE VALUE
statistics_level string TYPICAL
如果statistics_level的值为TYPICAL或者ALL,表示启用AWR; 如果statistics_level的值为BASIC,表示禁用AWR
2、查看当前的AWR保存策略
select * from dba_hist_wr_control; DBID,SNAP_INTERVAL,RETENTION,TOPNSQL 860524039,+00 01:00:00.000000,+07 00:00:00.000000,DEFAULT
以上结果表示,每小时产生一个SNAPSHOT,保留7天
调整AWR产生snapshot的频率和保留策略,如:如将收集间隔时间改为30 分钟一次。并且保留5天时间(注:单位都是为分钟):
dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);
3、手工创建一个快照
exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
4、查看快照
select * from sys.wrh$_active_session_history
5、产生AWR报告
AWR报告其实就是一张数据库健康体检表,它显示了数据库健康的各项指标需要sysdba权限
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
生成AWR的全过程: