首页 数据库 mysql教程 通过案例学调优之--AWRBaseLine管理

通过案例学调优之--AWRBaseLine管理

Jun 07, 2016 pm 02:53 PM
案例 管理 通过

通过案例学调优之--AWR BaseLine管理 BaseLine Baseline 是指一个特定时间段内的性能数据,保留这些数据是为了在性能问题产生时与其他类似的工作负载时间段进行比较。Baseline 中包含的快照将从自动 AWR 清理进程中排除,并无限期的保留。 在 Oracle Databas

通过案例学调优之--AWR BaseLine管理

BaseLine

     Baseline 是指一个特定时间段内的性能数据,保留这些数据是为了在性能问题产生时与其他类似的工作负载时间段进行比较。Baseline 中包含的快照将从自动 AWR 清理进程中排除,并无限期的保留。

在 Oracle Database 中存在多种类型的 baseline:

     Fixed Baseline:fixed baseline 表示的是您指定的一个固定的、连续的时间段。在创建 fixed baseline 之前,请认真考虑您选作 baseline 的时间段,因为该 baseline 应该代表系统处于良好的性能下运行。您可以在将来将该 baseline 与在性能较差的时间段捕获的其他 baseline 或 snapshot 进行比较分析。 

     Moving Window Baseline表示的是 AWR 保留期内存在的所有 AWR 数据。在使用自适应阈值时,它非常有用,因为数据库可以使用整个 AWR 保留期内的 AWR 数据来计算指标值。

     Oracle Database 会自动维护系统定义的 moving window baseline。系统定义的 moving window baseline 的默认窗口大小就是当前的 AWR 保留期,即默认为 8 天。如果您打算使用自适应阈值,请考虑使用更长的移动窗口——如30天,以便精确地计算阈值。您可以重新调整 moving window baseline,将移动窗口的大小调整为小于或等于 AWR 的保留天数。因此,要增加移动窗口的大小,必须要先增加相应的 AWR 保留期限。

     Baseline Template:您可以使用 baseline template 创建将来某个连续时间段的 baseline。Oracle 中有两种 baseline 模板:single 和 repeating

     利用 single baseline template,您可以为将来某个单独的连续时间段创建 baseline。该技术在某些情况下非常有用。例如,如果您想捕获下周计划的系统测试期间的 AWR 数据,您可以创建一个 single baseline template 来自动捕获测试发生的时间段的统计数据。

     利用 repeating baseline template ,可以根据重复的时间计划创建和删除 baseline。当您希望 Oracle Database 自动持续地捕获连续时间段的统计数据时,这非常有用。例如,您可能需要在长达一个月内捕获每周一早上的 AWR 数据。在这种情况下,您可以创建一个 repeating baseline template ,以在每周一自动创建 baseline,在指定的过期期限内自动删除过时的 baseline。

案例:

1、创建基线

Fixed Baseline:fixed baseline 表示的是您指定的一个固定的、连续的时间段。

根据snap_id创建:
DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(
   start_snap_id    IN  NUMBER,
   end_snap_id      IN  NUMBER,
   baseline_name    IN  VARCHAR2,
   dbid             IN  NUMBER DEFAULT NULL,
   expiration       IN  NUMBER DEFAULT NULL);

根据时间创建: 
DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(
   start_time       IN  DATE,
   end_time         IN  DATE,
   baseline_name    IN  VARCHAR2,
   dbid             IN  NUMBER DEFAULT NULL,
   expiration       IN  NUMBER DEFAULT NULL);
   
查看snapshot:
14:25:31 SYS@ test1 >select snap_id,BEGIN_INTERVAL_TIME,dbid from dba_hist_snapshot;

   SNAP_ID BEGIN_INTERVAL_TIME                                                               DBID
---------- --------------------------------------------------------------------------- ----------
       435 04-NOV-14 11.00.52.880 AM                                                   1195893416
       436 04-NOV-14 12.00.07.338 PM                                                   1195893416
       437 04-NOV-14 01.00.22.331 PM                                                   1195893416
       432 04-NOV-14 12.00.04.575 AM                                                   1195893416
       434 04-NOV-14 09.52.45.512 AM                                                   1195893416
       428 31-OCT-14 02.58.47.186 PM                                                   1195893416
       429 31-OCT-14 04.00.51.633 PM                                                   1195893416
       430 03-NOV-14 10.19.24.000 AM                                                   1195893416
       433 04-NOV-14 09.41.40.000 AM                                                   1195893416
       426 31-OCT-14 11.25.58.000 AM                                                   1195893416
       427 31-OCT-14 02.47.40.000 PM                                                   1195893416
       431 03-NOV-14 10.30.31.348 AM                                                   1195893416

12 rows selected.

创建Baseline:
14:27:46 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id=>435,end_snap_id=>436,baseline_name=>'work_bs1',dbid=>1195893416,expiration=>30);
PL/SQL procedure successfully completed.

--435 是起始的 snapshot 序列号,436 是结束 snapshot 序列号。expiration => 30 表示该 baseline 将在30天后自动删除,expiration =>null表示,永不过期
--创建 baseline 时,系统会自动分配一个唯一的 baseline ID 给新建的 baseline。可以通过 DBA_HIST_BASELINE 视图查看。

查看Baseline:
14:31:10 SYS@ test1 >col baseline_name for a40
14:31:30 SYS@ test1 >select dbid,baseline_id,baseline_name,EXPIRATION,CREATION_TIME from dba_hist_baseline
      DBID BASELINE_ID BASELINE_NAME                            EXPIRATION CREATION_TIME
---------- ----------- ---------------------------------------- ---------- -------------------
1195893416           1 work_bs1                                         30 2014-11-04 14:29:08
1195893416           0 SYSTEM_MOVING_WINDOW                                2013-06-23 12:43:59

重命名Baseline:
14:31:30 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.RENAME_BASELINE (old_baseline_name => 'work_bs1', new_baseline_name => 'work_bl1', dbid => 1195893416);
PL/SQL procedure successfully completed.

14:35:46 SYS@ test1 >select dbid,baseline_id,baseline_name,EXPIRATION,CREATION_TIME from dba_hist_baseline;
      DBID BASELINE_ID BASELINE_NAME                            EXPIRATION CREATION_TIME
---------- ----------- ---------------------------------------- ---------- -------------------
1195893416           1 work_bl1                                         30 2014-11-04 14:29:08
1195893416           0 SYSTEM_MOVING_WINDOW                                2013-06-23 12:43:59

删除Baseline:
14:35:54 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE (baseline_name => 'work_bl1',cascade => FALSE, dbid => 1195893416);
PL/SQL procedure successfully completed.

14:38:24 SYS@ test1 >select dbid,baseline_id,baseline_name,EXPIRATION,CREATION_TIME from dba_hist_baseline;
      DBID BASELINE_ID BASELINE_NAME                            EXPIRATION CREATION_TIME
---------- ----------- ---------------------------------------- ---------- -------------------
1195893416           0 SYSTEM_MOVING_WINDOW                                2013-06-23 12:43:59
--cascade 参数设置为 FALSE,指定只删除。将此参数设置为 TRUE 指定删除与该 baseline 相关联的所有快照。
登录后复制

移动窗口(Moving Window)基线

Oracle 11g引入了移动窗口(Moving Window)基线的概念,用于计算阀值的度量,窗口(window)是AWR数据在保存期限内的一个视图,窗口大小与AWR默认的保留期限8天匹配,但它可以设置为这个值的子集,在增大窗口大小前,首先要增大AWR保留期限的大小。

查询DBA_HOST_WR_CONTROL视图的RETENTION列,可以返回当前的AWR保留期限。

14:45:42 SYS@ test1 >SELECT retention FROM dba_hist_wr_control;
RETENTION
---------------------------------------------------------------------------
+00008 00:00:00.0
登录后复制

使用存储过程MODIFY_SNAPSHOT_SETTINGS可以修改保留期限,指定RETENTION参数,单位分钟。


14:48:12 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings(retention=>43200);
--Minutes(=30 Days)
PL/SQL procedure successfully completed.

14:48:33 SYS@ test1 >SELECT retention FROM dba_hist_wr_control;
RETENTION
---------------------------------------------------------------------------
+00030 00:00:00.0
登录后复制

查询DBA_HIST_BASELINE视图可以返回当前的移动窗口大小。

14:48:44 SYS@ test1 >SELECT moving_window_size
14:50:30   2  FROM   dba_hist_baseline
14:50:30   3  WHERE  baseline_type = 'MOVING_WINDOW';
MOVING_WINDOW_SIZE
------------------
                 8
登录后复制

使用存储过程MODIFY_BASELINE_WINDOW_SIZE可以修改移动窗口基线,它接受WINDOW_SIZE参数,单位为天。

14:50:45 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.modify_baseline_window_size(window_size =>30);
PL/SQL procedure successfully completed.

14:53:25 SYS@ test1 >SELECT moving_window_size FROM   dba_hist_baseline WHERE  baseline_type = 'MOVING_WINDOW';
MOVING_WINDOW_SIZE
------------------
                30
Oracle建议在使用适当的阀值时,窗口大小应大于或等于30天。(应该小于或等于snapshot的retention)
登录后复制

基线模板

基线模板允许你定义可能在将来要捕获的基线,CREATE_BASELINE_TEMPLATE存储过程定义单一基线或重复基线的捕获,创建单一基线模板与创建基于时间的基线类似,除了将来的时间外。

15:02:44 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.create_baseline_template(
start_time=>TO_DATE('09-NOV-2014 00:00', 'DD-MON-YYYY HH24:MI'),
end_time=>TO_DATE('12-NOV-2014 05:00', 'DD-MON-YYYY HH24:MI'),
baseline_name =>'09_11_14_BS1',
template_name =>'09_11_14_TP1',
expiration=> 10
);
PL/SQL procedure successfully completed.

15:05:19 SYS@ test1 >col REPEAT_INTERVAL for a10
15:05:34 SYS@ test1 >select DBID,TEMPLATE_ID,TEMPLATE_NAME,TEMPLATE_TYPE,DURATION,EXPIRATION,REPEAT_INTERVAL from dba_hist_baseline_template
      DBID TEMPLATE_ID TEMPLATE_NAME                  TEMPLATE_   DURATION EXPIRATION REPEAT_INT
---------- ----------- ------------------------------ --------- ---------- ---------- ----------
1195893416           1 09_11_14_TP1                   SINGLE                       10
登录后复制

重复基线模板稍微有点不同,因为它需要调度信息,START_TIME和END_TIME参数分别在模板激活和释放时定义,DAY_OF_WEEK,HOUR_IN_DAY和DURATION定义产生基线的日期,时间和持续时间,因为模板会产生多个基线,基线名是以BASELINE_NAME_PREFIX开始的,下面的基线模板例子将在未来6个月内运行,每周星期一00:00至05:00收集基线。

15:05:35 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.create_baseline_template(
day_of_week=>'MONDAY',
hour_in_day=>0,duration=>5,
start_time=>SYSDATE,
end_time=>ADD_MONTHS(SYSDATE, 6),
baseline_name_prefix =>'monday_morning_bl',
template_name=>'monday_morning_tp',
expiration=> NULL
);
PL/SQL procedure successfully completed.

15:09:20 SYS@ test1 > select DBID,TEMPLATE_ID,TEMPLATE_NAME,TEMPLATE_TYPE,DURATION,EXPIRATION,REPEAT_INTERVAL from dba_hist_baseline_template;
      DBID TEMPLATE_ID TEMPLATE_NAME                  TEMPLATE_   DURATION EXPIRATION REPEAT_INT
---------- ----------- ------------------------------ --------- ---------- ---------- ----------
1195893416           1 09_11_14_TP1                   SINGLE                       10
1195893416           2 monday_morning_tp              REPEATING          5            FREQ=WEEKL
                                                                                      Y;INTERVAL
                                                                                      =1;BYDAY=M
                                                                                      ON;BYHOUR=
                                                                                      0;BYMINUTE
                                                                                      =0;BYSECON
                                                                                      D=0
                                                                          
15:12:14 SYS@ test1 >col BASELINE_NAME_PREFIX for a20
15:12:33 SYS@ test1 >r
  1  SELECT template_name,
  2         template_type,
  3         baseline_name_prefix,
  4         start_time,
  5         end_time,
  6         day_of_week,
  7         hour_in_day,
  8         duration,
  9         expiration
 10* FROM   dba_hist_baseline_template

TEMPLATE_NAME        TEMPLATE_ BASELINE_NAME_PREFIX START_TIME          END_TIME            DAY_OF_WE HOUR_IN_DAY
-------------------- --------- -------------------- ------------------- ------------------- --------- -----------
  DURATION EXPIRATION
---------- ----------
09_11_14_TP1         SINGLE    09_11_14_BS1         2014-11-09 00:00:00 2014-11-12 05:00:00
                   10

monday_morning_tp    REPEATING monday_morning_bl    2014-11-04 15:09:20 2015-05-04 15:09:20 MONDAY         0
         5
注意BASELINE_NAME_PREFIX列可能保留了基线前缀或完整的基线名,主要依赖于捕获基线的类型.
登录后复制

DROP_BASELINE_TEMPLATE存储过程删除基线模板

15:17:46 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.drop_baseline_template (template_name =>'09_11_14_TP1');
PL/SQL procedure successfully completed.

15:18:26 SYS@ test1 >exec DBMS_WORKLOAD_REPOSITORY.drop_baseline_template (template_name => 'monday_morning_tp');
PL/SQL procedure successfully completed.

15:18:52 SYS@ test1 >select DBID,TEMPLATE_ID,TEMPLATE_NAME,TEMPLATE_TYPE,DURATION,EXPIRATION,REPEAT_INTERVAL from dba_hist_baseline_template;
no rows selected
登录后复制

基线视图
DBA_HIST_BASELINE:显示有关系统中所获取的基线的信息。对于每个基线,该视图显示完整的时间范围,以及该基线是否为默认基线。其它信息包括创建日期、上一次统计信息计算的时间和基线类型。
DBA_HIST_BASELINE_DETAILS:显示可用来确定给定基线有效性的信息,如基线时段期间是否存在关闭操作及基线时段中由快照数据覆盖的百分比。
DBA_HIST_BASELINE_TEMPLATE:保存了基线模板。该视图提供了 MMON 所需的信息,用以确定何时根据模板创建基线,以及何时应删除基线。
DBA_HIST_BASELINE_METADATA:显示基线的元数据信息,包括名称、类型、创建时间、模板和失效时间。
如果要在过去的某个时段创建基线,则使用 CREATE_BASELINE 过程;如果时段有任何部分处于未来,则使用CREATE_BASELINE_TEMPLATE 过程。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何利用Redis实现分布式事务管理 如何利用Redis实现分布式事务管理 Nov 07, 2023 pm 12:07 PM

如何利用Redis实现分布式事务管理引言:随着互联网的快速发展,分布式系统的使用越来越广泛。在分布式系统中,事务管理是一项重要的挑战。传统的事务管理方式在分布式系统中难以实现,并且效率低下。而利用Redis的特性,我们可以轻松地实现分布式事务管理,提高系统的性能和可靠性。一、Redis简介Redis是一种基于内存的数据存储系统,具有高效的读写性能和丰富的数据

如何实现Java中的学生成绩管理功能? 如何实现Java中的学生成绩管理功能? Nov 04, 2023 pm 12:00 PM

如何实现Java中的学生成绩管理功能?在现代教育系统中,学生成绩管理是一个非常重要的任务。通过对学生成绩的管理,学校能够更好地监测学生的学习进展、了解他们的弱点和优势,并根据这些信息做出更有针对性的教学计划。在这篇文章中,我们将讨论如何使用Java编程语言来实现学生成绩管理功能。首先,我们需要确定学生成绩的数据结构。通常,学生成绩可以被表示为一个包含学生信息

Laravel扩展包管理:轻松集成第三方代码和功能 Laravel扩展包管理:轻松集成第三方代码和功能 Aug 25, 2023 pm 04:07 PM

Laravel扩展包管理:轻松集成第三方代码和功能引言:在Laravel开发中,我们经常使用第三方代码和功能来提高项目的效率和稳定性。而Laravel扩展包管理系统允许我们轻松地集成这些第三方代码和功能,使得我们的开发工作更加便捷和高效。本文将介绍Laravel扩展包管理的基本概念和使用方法,并通过一些实际的代码示例来帮助读者更好地理解和应用。什么是Lara

如何在麒麟操作系统上进行网络服务器的设置和管理? 如何在麒麟操作系统上进行网络服务器的设置和管理? Aug 04, 2023 pm 09:25 PM

如何在麒麟操作系统上进行网络服务器的设置和管理?麒麟操作系统是中国自主开发的一种基于Linux的操作系统。它具有开源、安全、稳定等特点,在国内得到了广泛的应用。本文将介绍如何在麒麟操作系统上进行网络服务器的设置和管理,帮助读者更好地搭建和管理自己的网络服务器。一、安装相关软件在开始设置和管理网络服务器之前,我们需要先安装一些必要的软件。在麒麟操作系统上,可以

win10右键菜单管理打不开怎么办 win10右键菜单管理打不开怎么办 Jan 04, 2024 pm 07:07 PM

我们在使用win10系统的时候,使用鼠标去右键桌面或者右键菜单的时候,发现菜单等都打不开,无法正常的去使用电脑了,这时候就需要恢复系统来解决问题。win10右键菜单管理打不开:1、首先打开我们的控制面板,然后点击。2、然后点击安全和维护下的。3、再点击右侧的来恢复系统即可。4、如果还是无法使用,是看是否是鼠标本身出了问题。5、如果确定鼠标没有问题的话,按下+,输入。6、执行完毕后,重启电脑即可。

如何在麒麟操作系统上进行硬盘空间的管理和清理? 如何在麒麟操作系统上进行硬盘空间的管理和清理? Aug 04, 2023 am 09:49 AM

如何在麒麟操作系统上进行硬盘空间的管理和清理?麒麟操作系统是一个基于Linux的操作系统,相比其他操作系统,麒麟提供了更多的自由度和可定制性。在长期的使用过程中,我们经常会遇到硬盘空间不足的问题,这时候就需要进行硬盘空间的管理和清理。本文将介绍如何在麒麟操作系统上进行硬盘空间的管理和清理,包括查看硬盘空间使用情况、删除不必要的文件以及使用磁盘清理工具。首先,

如何使用Hyperf框架进行缓存管理 如何使用Hyperf框架进行缓存管理 Oct 21, 2023 am 08:36 AM

如何使用Hyperf框架进行缓存管理缓存是提高应用性能的重要手段之一,而现代框架为我们提供了更加便捷的缓存管理工具。本文将介绍如何使用Hyperf框架进行缓存管理,并提供具体的代码示例。Hyperf框架是一款基于Swoole拓展开发的高性能框架,内置了丰富的组件和工具,其中包括强大的缓存管理功能。Hyperf框架支持多种缓存驱动,如Redis、Memcach

学习使用pipenv:创建和管理虚拟环境 学习使用pipenv:创建和管理虚拟环境 Jan 16, 2024 am 09:34 AM

pipenv教程:创建和管理虚拟环境,需要具体代码示例介绍:随着Python的流行,项目开发数量也在不断增加。为了有效地管理项目中所使用的Python包,虚拟环境成为了必不可少的工具。在本文中,我们将介绍如何使用pipenv来创建和管理虚拟环境,并提供实际的代码示例。什么是pipenv?pipenv是Python社区广泛使用的一种虚拟环境管理工具。它整合了p

See all articles