前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Oracle AWR管理与维护

Oracle AWR管理与维护

作者头像
Leshami
发布于 2018-08-08 09:56:33
发布于 2018-08-08 09:56:33
97400
代码可运行
举报
文章被收录于专栏:乐沙弥的世界乐沙弥的世界
运行总次数:0
代码可运行

  AWR是Automatic Workload Repository的简称,中文叫着自动工作量资料档案库。对于AWR的管理,主要是针对快照和基线的管理而言。比如设定快照的间隔,删除快照,设定快照的保留时间。那对于基线而言则是基线的创建,删除,自动创建等。本文主要描述这2部分的内容。

一、快照管理

  默认情况下,Oracle数据库每小时生成一次快照,并在工作负载库中保留8天的统计信息。必要时,你可以使用dbms_workload_repository程序手动创建,删除或者修改快照等。可以使用OEM以及dbms_workload_repository包管理快照。

1. 手动创建快照

  使用以下过程手工创建快照,创建完成后可在数据字典DBA_HIST_SNAPSHOT查看所有快照相关信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BEGIN
  DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
END;
/

SELECT   snap_id,
         dbid,
         begin_interval_time,
         end_interval_time
FROM     dba_hist_snapshot
ORDER BY end_interval_time DESC;

   SNAP_ID       DBID BEGIN_INTERVAL_TIME          END_INTERVAL_TIME
---------- ---------- ---------------------------- --------------------------
       164   41924548 14-APR-17 09.38.19.467 AM    14-APR-17 10.51.21.886 AM
       163   41924548 14-APR-17 09.00.10.470 AM    14-APR-17 09.38.19.467 AM
       162   41924548 14-APR-17 08.00.07.242 AM    14-APR-17 09.00.10.470 AM
       161   41924548 14-APR-17 07.00.04.120 AM    14-APR-17 08.00.07.242 AM

2. 删除快照

  以下过程将删除snap_id从162到164的快照。在未指定41924548时,使用当前缺省的数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE (low_snap_id => 162,
                           high_snap_id => 164, dbid => 41924548);
END;
/

3. 修改快照的保留间隔

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--查看当前的保留策略,如下,为缺省值,采集间隔为1小时,保留8SQL> select * from dba_hist_wr_control;

      DBID SNAP_INTERVAL        RETENTION          TOPNSQL
---------- -------------------- ------------------ ----------
  41924548 +00000 01:00:00.0    +00008 00:00:00.0  DEFAULT

--下面将其修改为保留5天,采集间隔为30分钟,topnsql为50BEGIN
  DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( retention => 10*24*60,
                 interval => 30, topnsql => 50, dbid => 41924548);
END;
/

--查看修改后的结果
SQL> select * from dba_hist_wr_control;

      DBID SNAP_INTERVAL        RETENTION          TOPNSQL
---------- -------------------- ------------------ ----------
  41924548 +00000 00:30:00.0    +00010 00:00:00.0  50

二、基线管理

  AWR基线可以手工创建和删除,也可以自动创建和删除。对于自动创建基线则是首先要创建基线样本才能实现自动创建基线。主要描述如下。

1. 创建基线

  基线的创建依赖于快照,因此在创建之前应该得到所需时间范围的snap_id,可以通过查询数据字典DBA_HIST_SNAPSHOT获得,同时在基线创建完成后可以从数据字典DBA_HIST_BASELINE查询基线相关信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BEGIN
    DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (start_snap_id => 160,
                   end_snap_id => 161, baseline_name => 'peak_baseline',
                   dbid => 41924548, expiration => 10);
END;
/

SQL> SELECT baseline_id,
  2         baseline_name,
  3         baseline_type,
  4         expiration,
  5         creation_time
  6  FROM   dba_hist_baseline;

BASELINE_ID BASELINE_NAME           BASELINE_TYPE EXPIRATION CREATION_
----------- ----------------------- ------------- ---------- ---------
          1 peak_baseline           STATIC                10 14-APR-17
          0 SYSTEM_MOVING_WINDOW    MOVING_WINDOW            07-APR-17

--基于特定时间创建基线,如下示例
BEGIN
   DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (
      start_time      => TO_DATE ('2017-04-14 6:00:00', 'yyyy-mm-dd hh24:mi:ss'),
      end_time        => TO_DATE ('2017-04-14 8:00:00', 'yyyy-mm-dd hh24:mi:ss'),
      baseline_name   => 'peak_baseline2',
      expiration      => 10);
END;
/

  在上面的示例中,创建了一个范围为160-161的,名字为peak_baseline的基线,保留时间为10天。在超过10天后,该基线会被删除,相应的快照也被删除。如果为指定失效期,则该基线以及相应的快照被永久保留。

2. 删除基线

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE (baseline_name => 'peak_baseline',
                  cascade => FALSE, dbid => 41924548);
END;
/

  在上面的示例中将删除名为peak_baseline的基线,同时指定了cascade为false,也就是说在删除基线的同时,不删除相应的快照。

3. 基线重命名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BEGIN
    DBMS_WORKLOAD_REPOSITORY.RENAME_BASELINE (
                   old_baseline_name => 'peak_baseline',
                   new_baseline_name => 'peak_mondays',
                   dbid => 41924548);
END;
/

--验证结果
SQL> SELECT baseline_id,
  2         baseline_name,
  3         baseline_type,
  4         expiration,
  5         creation_time
  6  FROM   dba_hist_baseline;

BASELINE_ID BASELINE_NAME           BASELINE_TYPE EXPIRATION CREATION_
----------- ----------------------- ------------- ---------- ---------
          1 peak_mondays            STATIC                10 14-APR-17
          0 SYSTEM_MOVING_WINDOW    MOVING_WINDOW            07-APR-17

  在上面的示例中,将基线的名称由peak_baseline修改成peak_mondays。

4. 修改缺省移动窗口基线保留值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--查看缺省的window_size
SELECT baseline_name, baseline_type, moving_window_size
FROM   dba_hist_baseline
WHERE  baseline_name = 'SYSTEM_MOVING_WINDOW';

BASELINE_NAME            BASELINE_TYPE MOVING_WINDOW_SIZE
------------------------ ------------- ------------------
SYSTEM_MOVING_WINDOW     MOVING_WINDOW                  8

BEGIN
    DBMS_WORKLOAD_REPOSITORY.MODIFY_BASELINE_WINDOW_SIZE (
                   window_size => 7,
                   dbid => 41924548);
END;
/

--window_size为天,只能够小于等于当前快照保留时间,否则报错,如下:

ERROR at line 1:
ORA-13541: system moving window baseline size (864000)
greater than retention (691200)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 686
ORA-06512: at line 2

5. 管理基线样本

  • 创建单个基线模板
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BEGIN
   DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
      start_time      => TO_DATE ('2017-04-14 17:00:00', 'yyyy-mm-dd hh24:mi:ss'),
      end_time        => TO_DATE ('2017-04-14 19:00:00', 'yyyy-mm-dd hh24:mi:ss'),
      baseline_name   => 'baseline_140414',
      template_name   => 'template_140414',
      expiration      => 10,
      dbid            => 41924548);
END;
/

--如果创建基线样本时间小于当前时间,则收到如下错误
ERROR at line 1:
ORA-13537: invalid input for create baseline template (end_time, end_time is less than SYSDATE)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 768
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 818
ORA-06512: at line 2

  在上面的示例中,我们创建了一个单一的基线样本,并且指定了相应的时间范围,基线的名称及保留期限等。那么在这个时间范围内的相应的快照会被保留,同时这个基线可以用于后续在发现性能问题的时候进行比对。

  • 创建重复基线样本

  重复的基线样本指的是在将来某个特定的时间范围内,Oracle会参照这个设定的样本自动为我们创建基线。比如,可以创建一个重复的基线样本,使得在2017年每周一9:00-11:00自动生成基线。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

BEGIN
   DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
      day_of_week            => 'monday',
      hour_in_day            => 9,
      duration               => 2,
      expiration             => 30,
      start_time             => '2017-04-14 09:00:00',
      end_time               => '2017-12-31 11:00:00',
      baseline_name_prefix   => 'baseline_2017_mondays_',
      template_name          => 'template_2017_mondays',
      dbid                   => 41924548);
END;
/

-- Author     : Leshami
-- Blog       : http://blog.csdn.net/leshami
-- QQ(Weixin) : 645746311

--查看已经创建的基线样本
SQL> select t.template_name,
  2       t.template_type,
  3       t.start_time,
  4       t.end_time,
  5       t.day_of_week,
  6       t.hour_in_day,
  7       t.duration
  8  from dba_hist_baseline_template t;

TEMPLATE_NAME         TEMPLATE_ START_TIME          END_TIME            DAY_OF_WE HOUR_IN_DAY DURATION
--------------------- --------- ------------------- ------------------- --------- ----------- --------
template_140414       SINGLE    2017-04-14 17:00:00 2017-04-14 19:00:00
template_2017_mondays REPEATING 2017-04-14 09:00:00 2017-12-31 11:00:00 MONDAY             17        3

  在上面的示例中我们创建了一个重复从2017年4月14日起的每周一(day_of_week)会自动生成一个基线,其开始时间为9点(hour_in_day),其持续时间为2小时(duration),有效期为30天(expiration),整个基线的起止时间范围为:2017-04-14 09:00:00至2017-12-31 11:00:00,同时也指定了基线样本的名称以及基线前缀名称。

  • 基线样本的删除
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE_TEMPLATE (
                   template_name => 'template_140414',
                   dbid => 41924548);
END;
/

  在上面的示例中我们删除之前创建的基线样本,通过指定样本名称即可。

三、AWR空间占用

  AWR快照的数据全部填充在SYSAUX表空间。因此如果要保留的快照越久,意味着需要占用的SYSAUX空间越大。同时可以通过awrinfo.sql查看各个对象占用SYSAUX的详细信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> @?/rdbms/admin/awrinfo.sql

This script will report general AWR information
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Specify the Report File Name
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrinfo.txt.  To use this name,
press <return> to continue, otherwise enter an alternative.

Enter value for report_name:

Using the report name awrinfo.txt
No errors.                 -- Author : Leshami
No errors.                 -- Blog   : http://blog.csdn.net/leshami
~~~~~~~~~~~~~~~            -- QQ     : 645746311 
AWR INFO Report
~~~~~~~~~~~~~~~

Report generated at
19:48:53 on Apr 14, 2017 ( Friday ) in Timezone +08:00


Warning: Non Default AWR Setting!
--------------------------------------------------------------------------------
Snapshot interval is 60 minutes and Retention is 8 days


       DB_ID DB Name HOST_PLATFORM           INST STARTUP_TIME      LAST_ASH_SID PAR
------------ ------- ----------------------- ---- ----------------- ------------ ---
* 41924548   ORA11G  ydq - Linux x86 64-bit     1 15:18:26 (04/07)        617410 NO

########################################################
(I) AWR Snapshots Information
########################################################

*****************************************************
(1a) SYSAUX usage - Schema breakdown (dba_segments)
*****************************************************
|
| Total SYSAUX size                        617.4 MB ( 2% of 32,768.0 MB MAX with AUTOEXTEND ON )
|
| Schema  SYS          occupies            206.6 MB (  33.5% )
| Schema  XDB          occupies            157.7 MB (  25.5% )
| Schema  APEX_030200  occupies             85.4 MB (  13.8% )
| Schema  MDSYS        occupies             73.9 MB (  12.0% )

## 四、生成AWR报告

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--单实例下生成AWR报告
SQL> @?/rdbms/admin/awrrpt.sql

--RAC环境下生成AWR报告
SQL> @$ORACLE_HOME/rdbms/admin/awrgrpt.sql

--指定数据库实例生成AWR报告
SQL> @$ORACLE_HOME/rdbms/admin/awrrpti.sql

--生成SQL语句AWR报告
SQL> @$ORACLE_HOME/rdbms/admin/awrsqrpt.sql

--指定实例生成SQL语句AWR报告
SQL> @$ORACLE_HOME/rdbms/admin/awrsqrpi.sql

--生成比较的AWR报告
SQL> @$ORACLE_HOME/rdbms/admin/awrddrpt.sql

--RAC环境下生成比较的AWR报告
@$ORACLE_HOME/rdbms/admin/awrgdrpt.sql

五、AWR相关的重要视图和数据字典

v$active_session_history : 显示活跃的数据库会话的活动,每秒采样一次

v$metric和v$metric_history:

   提供度量数据来跟踪系统性能。视图被组织成好几个组,这些组定义在v$metricgroup视图中

DBA_HIST_ACTIVE_SESS_HISTORY

   展示内存中活动会话历史信息

DBA_HIST_BASELINE    展示捕获的基线的信息

DBA_HIST_BASELINE_DETAILS

  展示特定基线的明细信息

DBA_HIST_BASELINE_TEMPLATE

   基线模板相关信息

DBA_HIST_DATABASE_INSTANCE

  数据库环境

DBA_HIST_DB_CACHE_ADVICE

   根据历史数据预测在不同的cache size下的物理读

DBA_HIST_DISPATCHER

   每个snapshot下调度进程的信息

DBA_HIST_DYN_REMASTER_STATS

   动态remastering进程的统计信息

DBA_HIST_IOSTAT_DETAIL    按未见类型和功能来统计的历史I/O信息

DBA_HIST_SHARED_SERVER_SUMMARY

   共享服务器的统计信息

DBA_HIST_SNAPSHOT

   快照信息

DBA_HIST_SQL_PLAN

   执行计划

DBA_HIST_WR_CONTROL

   AWR控制信息

六、更多参考

Oracle AWR特性描述 Linux/Unix shell 自动发送AWR report Linux/Unix shell 自动发送AWR report(二)


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年04月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Oracle基础教程之AWR固定基线
前言:可以创建AWR基线来为数据库建立已保存的工作负载视图,以便以后用来与其他AWR快照进行比较。
星哥玩云
2022/08/16
3600
探究AWR 第一篇
statspack相比awr算是比较通用,而且免费,可以在标准版,企业版中使用,awr是新企业版本中才有的,算是statspack的一个升级版,而且代码不公开。但是实现的功能和数据的采集要更丰富。 awr算是dba工作的必备工具。自己总结了一下,大概由以下几个方面来说明一下。 1.snapshot的管理 2.基线的管理 3.所需空间开销和设置 4.awr数据的迁移 5.生成awr相关的报告 6.awr相关的视图和基表 1.snapshot的管理 先来看看snapshot,这是列出近几天的snapshot
jeanron100
2018/03/13
7040
AWR的基本知识
自从Oracle 10g开始支持AWR以后,相比于Statspack,除了有更多新的内容可供参考,HTML保存格式也是为查看文档提供了很多便利。
bisal
2019/01/29
8660
Oracle SQL调优系列之AWRDD报告简介
我写的SQL调优专栏:https://blog.csdn.net/u014427391/article/category/8679315
SmileNicky
2022/05/07
5120
Oracle SQL调优系列之AWRDD报告简介
一个执行计划异常变更的案例 - 外传之AWR
之前的几篇文章: 《一个执行计划异常变更的案例 - 前传》 《一个执行计划异常变更的案例 - 外传之绑定变量窥探》 《一个执行计划异常变更的案例 - 外传之查看绑定变量值的几种方法》 《一个执行计划异常变更的案例 - 外传之rolling invalidation》 《一个执行计划异常变更的案例 - 外传之聚簇因子(Clustering Factor)》 《一个执行计划异常变更的案例 - 外传之查询执行计划的几种方法》
bisal
2019/01/29
6680
Oracle AWRDD报告生成和性能分析
我写的SQL调优专栏:https://blog.csdn.net/u014427391/article/category/8679315
SmileNicky
2019/05/06
7130
Oracle AWRDD报告生成和性能分析
Oracle AWR报告生成和性能分析
对于SQL调优,局部SQL,我们可以直接使用执行计划等直接调优,而对于整个系统来说?这时候就可以用Oracle系统自带的报告对系统进行整体分析了,Oracle提供好几种性能分析的报告,比如AWR、ASH、ADDM等等 这篇博客主要介绍AWR
SmileNicky
2019/05/07
2.1K0
Oracle AWR报告生成和性能分析
Orace ADDM报告和性能分析
我写的SQL调优专栏:https://blog.csdn.net/u014427391/article/category/8679315
SmileNicky
2019/05/06
6410
Orace ADDM报告和性能分析
Orace SQL调优系列之ADDM报告简介
我写的SQL调优专栏:https://blog.csdn.net/u014427391/article/category/8679315
SmileNicky
2022/05/07
8160
Orace SQL调优系列之ADDM报告简介
Oracle-AWR性能报告解读
请访问 Oracle-AWR管理包 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS
小小工匠
2021/08/16
5470
Oraccle SQL调优系列之ASH简介
我写的SQL调优专栏:https://blog.csdn.net/u014427391/article/category/8679315
SmileNicky
2022/05/07
1.1K0
Oraccle SQL调优系列之ASH简介
【Oracle】-【AWR/Stackpack】-AWR(Stackpack)执行权限
Oracle 9i执行Stackpack(10g是AWR),当前是一个普通账户,没有DBA权限。
bisal
2019/01/29
9800
禁用与卸载Oracle AWR特性
    AWR需要禁用?这么好的东东。缺省的情况下,AWR是可以使用的,需要耗用一定的sysaux表空间。但涉及到有关AWR相关的调试包(需要license)会访问AWR视图或者awr异常又不想更新patch,甚至没有patch可用的情况下,我们可以禁用AWR以及卸载AWR,本文演示了如果禁用AWR功能以及卸载awr相关的数据字典。
Leshami
2018/08/13
7820
Oracle SQL调优系列之AWRSQRPT报告简介
我写的SQL调优专栏:https://blog.csdn.net/u014427391/article/category/8679315
SmileNicky
2022/05/07
7800
Oracle SQL调优系列之AWRSQRPT报告简介
【诊断方法】AWR 快照(snapshot)无法获取
AWR是ORACLE数据库重要的诊断工具,但是有时可能遇到AWR快照无法获取的问题,影响性能监测。本文介绍如何诊断和解决这类问题。
SQLplusDB
2020/03/26
2.2K0
使用shell定制awr脚本(r3笔记第32天)
大家在做性能问题诊断的时候,awr是不可或缺的工具,使用?/rdbms/admin/awrrpt.sql可能大家使用的多了,可能有时候感觉输入参数还是有些太繁琐了。一边复制,一边得到一个快照列表查看,
jeanron100
2018/03/14
6040
【DB笔试面试820】在Oracle中,如何获取AWR报告?
Oracle可以生成两种类型的AWR报告:文本格式和html格式。其中,html格式的报告界面更加友好。有针对整个数据库的AWR报告,有针对某个实例的AWR报告(在集群环境),也有针对单条SQL语句的AWR报告。可以通过运行Oracle自带的SQL脚本产生AWR报告,只是产生不同的AWR报告,需要运行不同的脚本。
AiDBA宝典
2020/06/17
8570
Oracle AWR 阙值影响历史执行计划
      最近有网友提到为什么在dba_hist_sql_plan中无法查看到sql语句的历史执行计划,对于这个问题是由于缺省情况下,Oracle 设定的阙值并非捕获所有的sql语句,所以无法看到某些sql历史执行计划乃正常现象。在Oracle 9i的时候,我们可以通过设定不同的快照level获得不同程度的详细信息。也可以单独配置收集sql的阙值,如指定sql的执行次数,磁盘读的次数,解析调用的数量等。所有超出这个设置的sql语句都收集到snapshot之中。Oracle 10g,11g也有相应的设置。下面来描述这个问题。
Leshami
2018/08/14
6810
Oracle-使用awrrpt.sql生成AWR报告
Oracle Database 10g 提供了一个新的工具:(AWR:Automatic Workload Repository) .
小小工匠
2021/08/16
1.6K0
DBA命令速查4:AWR报告相关命令
可以通过AWR脚本awrsqrpt.sql 和awrsqrpi.sql,来取得历史SQL 报告。
SQLplusDB
2022/08/22
5200
相关推荐
Oracle基础教程之AWR固定基线
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验