Automatic Workload Repository(自动负载信息库,AWR)

1.自动负载信息库的概述

自动负载信息库(AWR)收集、处理和维护性能统计信息,用于问题检测和自行调优。这些数据存储在内容和数据库中,这些捕获的属性可以显示在报表和视图上。

AWR收集和处理的统计信息包括:

  • 对象统计
  • 时间模型统计
  • 系统和会话统计
  • 获取会话历史统计

自动工作负载信息库默认是启用的,由STATISTICS_LEVEL初始化话参数控制。该STATISTICS_LEVEL初始化参数应该设置为TYPICAL或ALL ,启用AWR统计收集。默认这是为 TYPICAL。该STATISTICS_LEVEL参数设置为BASIC禁用许多Oracle数据库功能,包括AWR,不推荐使用。如果STATISTICS_LEVEL 参数设置为BASIC,你仍然可以通过DBMS_WORKLOAD_REPOSITORY包手动捕获AWR统计。但是,由于在内存中许多系统的统计数据是被禁用,例如段统计和内存顾问信息,这些快照捕获的统计数据可能是不完全的。

自动负载信息库包括以下内容:

  • 快照
  • 基线
  • 自适应阀值
  • 空间消耗

1.1快照

快照是ADDM用于性能比较的指定期间的一组历史数据。默认情况下,Oracle数据库每个小时自动产生一次快照,并保留8天负载统计信息。你也可以手动创建快照,但通常是没有必要的。在快照间隔产生的数据,通过自动数据库诊断器进行分析。

AWR比较不同快照之间的差异来确定捕获影响系统负载的SQL语句,逐渐减少被捕获的SQL语句。

1.2基线

基线包含来自指定期间保存性能数据,当出现性能问题时,用于与其他相似的负载期间进行比较。快照中包含的基线自动为WAR清除进程排除,并永久保留。

有以下这种基线类型:

  • 固定基线
  • 移动窗口基线
  • 模板基线

1.3子适应阀值

启用自适应阀值,你可以监控和检测性能问题,同时可以最大限度地减少管理开销。自适应阀值可以针对已些系统指标自动设置警告和严重警告阀值。

 

1.4空间消耗

自动负载信息库的空间消耗有以下几个因素:

  • 系统中活动时间的会话数
  • 快照间隔
  • 历史数据的保留期

 

2.管理自动负载信息库

如何管理自动负载信息库包含以下几个方面:

  • 管理快照
  • 管理基线
  • 管理基线模板
  • 传输自动负载信息库数据
  • 使用自动负载信息库视图
  • 生成自动负载信息库报表
  • 生成自动负载信息库比较期间报表
  • 生成活动会话历史表表
  • 使用活动会话历史表表

2.1管理快照

默认情况下,Oracle数据库每个小时产生一次快照,并在负载信息库中保留8天。必要时,可以通过DBMS_WORKLOAD_REPOSITORY过程手动创建,删除和修改快照。要调用该过程,用户必须要有DBA的权限。

管理快照的主要界面是Oracle企业管理器。只要有可能,应该使用Oracle企业管理器来管理快照。如果Oracle企业管理器不可用,则可以使用DBMS_WORKLOAD_REPOSITORY包管理快照。

2.1.1创建快照

如果你想捕获不是系统自动生成的快照,可以通过CREATE_SNAPSHOT过程手动创建快照。例如:

BEGIN
  DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
END;

 

2.1.2删除快照

你可以使用DROP_SNAPSHOT_RANGE删除一个范围内的快照,查看快照ID列表以及数据库ID,检查DBA_HIST_SNAPSHOT视图。你可以删除以下范围的快照:

BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE (low_snap_id => 22,
                           high_snap_id => 32, dbid => 3310949047);
END;

 

2.1.3修改快照设置

你可以调用间隔,保留期和捕获指定数据库ID的顶层SQL。但要注意这可能会影响Oracle诊断工具的使用。

INTERVAL 设置快照自动生成的频率,以分钟为单位。RETENTION 设置负载信息库保留的期限,以分钟为单位。TOPNSQL 设置刷新最高的SQL。使用MODIFY_SNAPSHOT_SETTINGS 过程调整设置。如下:

BEGIN
  DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( retention => 43200,
                 interval => 30, topnsql => 100, dbid => 3310949047);
END;

在这个例子中,保留期限被指定为43200分中(30天),每个快照之间的间隔被指定为30分钟。你可以查询DBA_HIST_WR_CONTROL 视图查看数据库实例的当前设置。

 

2.2管理基线

管理基线的主要界面是Oracle企业管理器。只要有可能,应该使用Oracle企业管理器来管理基线。如果Oracle企业管理器不可用,则可以使用DBMS_WORKLOAD_REPOSITORY包管理快照。

2.2.1创建基线

如果使用已存在的一个快照范围创建基线。

  1. 检阅DBA_HIST_SNAPSHOT视图中已存在的快照,以确定你想要使用的快照范围。
  2. 使用CREATE_BASELINE过程来创建期望快照范围基线。

BEGIN
    DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (start_snap_id => 270,
                   end_snap_id => 280, baseline_name => 'peak baseline',
                   dbid => 3310949047, expiration => 30);
END;

 

2.2.2删除期限

如果删除一个已存在的基线:

  1. 检阅DBA_HIST_SNAPSHOT视图中已存在的基线,以确定你想要删除的基线。
  2. 使用DROP_BASELINE 过程删除期望的基线。

BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE (baseline_name => 'peak baseline',
                  cascade => FALSE, dbid => 3310949047);
END;

 

2.2.3重名基线

如何重名基线:

  1. 检阅DBA_HIST_SNAPSHOT视图中已存在的基线,以确定你想要重名的基线。
  2. 使用DROP_BASELINE 过程删除期望的基线。

BEGIN
    DBMS_WORKLOAD_REPOSITORY.RENAME_BASELINE (
                   old_baseline_name => 'peak baseline',
                   new_baseline_name => 'peak mondays',
                   dbid => 3310949047);
END;

2.2.4显示基线度量

如何显示在一个时间段中捕获的基线度量阀值。

  1. 检阅DBA_HIST_SNAPSHOT视图中已存在的基线,以确定你想要显示的基线的度量信息。
  2. 使用SELECT_BASELINE_METRICS函数显示期望的度量信息。

BEGIN
    DBMS_WORKLOAD_REPOSITORY.SELECT_BASELINE_METRICS (
                   baseline_name => 'peak baseline',
                   dbid => 3310949047,
                   instance_num => '1');
END;

 

2.2.4修改移动窗口基线的默认窗口大小

使用MODIFY_BASELINE_WINDOW_SIZE过程修改移动窗口的默认大小。

BEGIN
    DBMS_WORKLOAD_REPOSITORY.MODIFY_BASELINE_WINDOW_SIZE (
                   window_size => 30,
                   dbid => 3310949047);
END;

 

2.3管理基线模板

这个功能中你可以使用基线模板自动创建基线来捕获指定时间段。

2.3.1创建单个基线模板

使用CREATE_BASELINE_TEMPLATE过程创建单个基线模板:

BEGIN
    DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
                   start_time => '2007-04-02 17:00:00 PST',
                   end_time => '2007-04-02 20:00:00 PST',
                   baseline_name => 'baseline_070402',
                   template_name => 'template_070402', expiration => 30,
                   dbid => 3310949047);
END;

2.3.2创建多个基线模板

使用CREATE_BASELINE_TEMPLATE过程创建多个基线模板:

BEGIN
    DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
                   day_of_week => 'monday', hour_in_day => 17,
                   duration => 3, expiration => 30,
                   start_time => '2007-04-02 17:00:00 PST',
                   end_time => '2007-12-31 20:00:00 PST',
                   baseline_name_prefix => 'baseline_2007_mondays_',
                   template_name => 'template_2007_mondays',
                   dbid => 3310949047);
END;

 

2.3.3删除基线模板

如何删除一个已存在的基线模板。

  1. 检阅DBA_HIST_SNAPSHOT视图中已存在的基线,以确定你想要删除的基线模板。

  2. 使用DROP_BASELINE_TEMPLATE删除期望的基线模板。

BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE_TEMPLATE (
                   template_name => 'template_2007_mondays',
                   dbid => 3310949047);
END;

 

2.4传输自动负载信息库数据

Oracle数据允许系统之间传递AWR数据,你想使用单独的系统来执行AWR数据分析的情况下非常有用。传输AWR数据,你必须先从原系统数据库上提取AWR快照数据,然后在加载到目标系统数据库上。

2.4.1提取数据

该awrextr.sql脚本从数据库中提取一个快照范围的AWR数据到数据备份导出文件中。一旦被创建,这个备份文件可以被传输到另一个系统,可以加载所提取的数据。要运行awrextr.sql这个脚本,必须以SYS用户连接到数据库。

提取AWR数据:

1.在SQL提示符下,输入

@$ORACLE_HOME/rdbms/admin/awrextr.sql

显示AWR模式下的数据库列表

2.指定将要提取AWR数据的数据库

Enter value for db_id: 1377863381

3.指定你要列出快照ID的天数

Enter value for num_days: 2

4.指定开始和结束快照ID,定义的AWR数据的快照范围。

Enter value for begin_snap: 30
Enter value for end_snap: 40

5.目录对象列表

目录对象指导出备份文件存储的目录

Enter value for directory_name: DATA_PUMP_DIR

6.指定导出文件名称的前缀(自动附件.dmp后缀)

Enter value for file_name: awrdata_30_40

 

2.4.2加载数据

一旦导出备份文件爱你被传输到目标系统,则可以使用awrload.sql脚本加载提取的AWR数据。该awrload.sql脚本首先会创建一个暂存模式,并将快照数据从导出备份文件传输到数据库中。然后将数据库从暂存模式传输到AWR相应的表中。要运行awrload.sql脚本,必须使用SYS用户连接数据库。

加载数据:

1.在SQL提示符下,输入:

@$ORACLE_HOME/rdbms/admin/awrload.sql

2.指定导出本备份文件放置目录的目录对象

Enter value for directory_name: DATA_PUMP_DIR

3.指定导出备份文件名称的前缀(自动附件.dmp后缀)

Enter value for file_name: awrdata_30_40

4.指定加载AWR数据的暂存模式

Enter value for schema_name: AWR_STAGE

5.指定暂存模式的默认表空间

Enter value for default_tablespace: SYSAUX

6.指定暂存模式的临时表空间

Enter value for temporary_tablespace: TEMP

7.一个名为AWR_STAGE的模式将被创建,并加载AWR数据。AWR数据被加载到AWR_STAGE模式之后,数据将被转移到SYS模式下的AWR表中。

Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Completed 113 CONSTRAINT objects in 11 seconds
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Completed 1 REF_CONSTRAINT objects in 1 seconds
Job "SYS"."SYS_IMPORT_FULL_03" successfully completed at 09:29:30
... Dropping AWR_STAGE user
End of AWR Load

 

2.5使用自动负载信息库视图

通常情况下,使用Oracle企业管理器或AWR表报查看AWR数据。然而,你也可以使用以下的视图查看统计信息:

  • V$ACTIVE_SESSION_HISTORY

  • V$METRICGROUP视图,提供度量数据跟踪系统性能

  • DBA_HIST视图

DBA_HIST视图显示数据库中保存的历史数据,包括以下几个视图组:

DBA_HIST_ACTIVE_SESS_HISTORY 限制最近活动系统的内存活动会话内容的历史信息

DBA_HIST_BASELINE 显示系统中捕获的基线信息

DBA_HIST_BASELINE_DETAILS 显示基线的详细信息

DBA_HIST_BASELINE_TEMPLATE 显示用于生成基线的基线模板信息

DBA_HIST_DATABASE_INSTANCE 显示数据库环境信息

DBA_HIST_SNAPSHOT 显示系统中的快照信息

DBA_HIST_SQL_PLAN 显示SQL执行计划

DBA_HIST_WR_CONTROL 显示AWR控制的设置信息

 

2.6生成自动负载信息库报告

一个AWR报告显示两个快照(或两个时间点)之间的捕获数据,AWR报告分为多部分。HTML报告包含快速浏览章节的导航链接。该报告内容包含选定范围快照的系统负载概括。

 

2.6.1生成快照范围的AWR报告

awrrpt.sql脚本生成一个HTML或文本格式的快照范围统计报告。

生成快照范围的AWR报告:

1.在SQL提示符下,输入

@$ORACLE_HOME/rdbms/admin/awrrpt.sql

2.指定HTML或文本报告

Enter value for report_type: html(可以输入html/text

3.指定你要列出快照ID的天数

Enter value for num_days: 2

4.指定负载信息库报告的开始和结束快照ID

Enter value for begin_snap: 30
Enter value for end_snap: 40

5.输入报告名称,或者使用默认报告名称

Enter value for report_name:
Using the report name awrrpt_1_150_160

默认存储在SQLPLUS的当前目录中。如果想要存储在其他位置,则需要指定报告的绝对路径,

例如:

Enter value for report_name: D:\Chicle Data\awrrpt_1_150_160.html

 

2.6.2生成指定实例快照范围的AWR报告

该awrrpti.sql脚本生成一个HTML或文本报告,显示指定数据库和实例的快照ID范围的统计信息。在输入快照范围ID之前,需要先指定数据库和实例。

生成指定实例快照范围的AWR报告:

1.在SQL提示符下,输入

@$ORACLE_HOME/rdbms/admin/awrrpti.sql

2.指定HTML或文本报表

Enter value for report_type: text

显示可用的数据库标识符和实例编号。

Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   DB Id    Inst Num DB Name      Instance     Host
----------- -------- ------------ ------------ ------------
 3309173529        1 MAIN         main         examp1690
 3309173529        1 TINT251      tint251      samp251

3.输入数据库标识符(dbid)和实例编号(inst_num)

Enter value for dbid: 3309173529
Using 3309173529 for database Id
Enter value for inst_num: 1

4.指定你要列出快照ID的天数

Enter value for num_days: 2

5.指定负载信息库报告的开始和结束快照ID

Enter value for begin_snap: 150
Enter value for end_snap: 160

6.输入报告名称,或者使用默认报告名称

Enter value for report_name:
Using the report name awrrpt_1_150_160

 

2.6.3生成SQL语句的AWR报告

该awrsqrpt.sql脚本生成一个HTML或文本报告,显示指定SQL语句的快照ID范围的统计信息。运行此报告,检查和调试SQL语句的性能。

生成SQL语句的AWR报告:

1.在SQL提示符下,输入

@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql

2.指定HTML或文本报表

Enter value for report_type: html

3.指定你要列出快照ID的天数

Enter value for num_days: 1

4.指定负载信息库报告的开始和结束快照ID

Enter value for begin_snap: 146
Enter value for end_snap: 147

5.指定SQL语句的ID

Enter value for sql_id: 2b064ybzkwf1y

6.输入报告名称,或者使用默认报告名称

Enter value for report_name:
Using the report name awrrpt_1_146_147.html

 

2.6.4其他AWR报告 

类似的AWR报告还有好几个,生成的步骤也差不多,这里就不做详细的介绍:

生成指定实例的SQL语句的AWR报告:

@$ORACLE_HOME/rdbms/admin/awrsqrpi.sql

生成比较期间的AWR报告:

@$ORACLE_HOME/rdbms/admin/awrddrpt.sql

生成指定实例比较期间的AWR报告:

@$ORACLE_HOME/rdbms/admin/awrddrpi.sql

生成活动会话历史(ASH)的AWR报告:

@$ORACLE_HOME/rdbms/admin/ashrpt.sql

生成指定实例的活动会话历史(ASH)的AWR报告:

@$ORACLE_HOME/rdbms/admin/ashrpti.sql 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值