美文网首页我爱编程
Oracle 数据库AWR(Automatic Workload

Oracle 数据库AWR(Automatic Workload

作者: garyond | 来源:发表于2018-01-15 14:27 被阅读107次

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

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

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

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

    自动工作负载信息库默认是启用的,由STATISTICS_LEVEL初始化参数控制。

    • STATISTICS_LEVEL初始化参数应该设置为TYPICALALL ,启用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清除进程排除,并永久保留。

    有以下这种基线类型:

    • 固定基线(Baselined)
    • 移动窗口基线
    • 模板基线

    1.3 子适应阀值

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

    1.4 空间消耗

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

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

    2. 管理自动负载信息库(AWR)

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

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

    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 EM Manager)。只要有可能,应该使用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
    
    1. 指定导出本备份文件放置目录的目录对象
    Enter value for directory_name: DATA_PUMP_DIR
    
    1. 指定导出备份文件名称的前缀(自动附件.dmp后缀)
    Enter value for file_name: awrdata_30_40
    
    1. 指定加载AWR数据的暂存模式
    Enter value for schema_name: AWR_STAGE
    
    1. 指定暂存模式的默认表空间
    Enter value for default_tablespace: SYSAUX
    
    1. 指定暂存模式的临时表空间
    Enter value for temporary_tablespace: TEMP
    
    1. 一个名为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
    
    1. 指定HTML或文本报告
    Enter value for report_type: html(可以输入html/text)
    
    1. 指定你要列出快照ID的天数
    Enter value for num_days: 2
    
    1. 指定负载信息库报告的开始和结束快照ID
    Enter value for begin_snap: 30
    Enter value for end_snap: 40
    
    1. 输入报告名称,或者使用默认报告名称
    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
    
    1. 输入数据库标识符(dbid)和实例编号(inst_num)
    Enter value for dbid: 3309173529
    Using 3309173529 for database Id
    Enter value for inst_num: 1
    
    1. 指定你要列出快照ID的天数
    Enter value for num_days: 2
    
    1. 指定负载信息库报告的开始和结束快照ID
    Enter value for begin_snap: 150
    Enter value for end_snap: 160
    
    1. 输入报告名称,或者使用默认报告名称
    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
    
    1. 指定HTML或文本报表
    Enter value for report_type: html
    
    1. 指定你要列出快照ID的天数
    Enter value for num_days: 1
    
    1. 指定负载信息库报告的开始和结束快照ID
    Enter value for begin_snap: 146
    Enter value for end_snap: 147
    
    1. 指定SQL语句的ID
    Enter value for sql_id: 2b064ybzkwf1y
    
    1. 输入报告名称,或者使用默认报告名称
    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
    

    相关文章

      网友评论

        本文标题:Oracle 数据库AWR(Automatic Workload

        本文链接:https://www.haomeiwen.com/subject/yxoroxtx.html