温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Baseline相关知识点有哪些

发布时间:2021-12-07 11:38:08 来源:亿速云 阅读:120 作者:iii 栏目:数据库

本篇内容主要讲解“Baseline相关知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Baseline相关知识点有哪些”吧!

在 Oracle Database 11g 中,AWR基线提供了定义动态和未来基线的强大功能,并在很大程度上简化了创建和管理性能数据(以便比较)的过程。

Oracle Database 11g 默认具备一个系统定义的Moving Window Baseline,该基线对应于 AWR 保留期中的所有 AWR 数据。仅可存在一个Moving Window Baseline。系统定义的Moving Window Baseline认大小为当前的AWR保留期,即默认为八天。

如果要增大Moving Window Baseline,首先需要相应增大AWR保留期。AWR保留期和系统定义的Moving Window Baseline的大小是两个独立的参数。但是AWR保留期必须大于或等于系统定义的Moving Window Baseline的大小。

Oracle Database 11g 提供了收集两种基线的功能:静态基线和Moving Window Baseline。 静态基线可以是单一的,也可以是重复的。单一 AWR 基线是在单一时段内收集的。重复基线是在重复的时段(例如,六月份的每个星期一)内收集的。

在 Oracle Database 11g 中,如果 STATISTICS_LEVEL=TYPICAL 或 ALL,则默认启用基线。

基线视图

  • DBA_HIST_BASELINE:显示有关系统中所获取的基线的信息。对于每个基线,该视图显示完整的时间范围,以及该基线是否为默认基线。其它信息包括创建日期、上一次统计信息计算的时间和基线类型。

  • DBA_HIST_BASELINE_DETAILS:显示可用来确定给定基线有效性的信息,如基线时段期间是否存在关闭操作及基线时段中由快照数据覆盖的百分比。

  • DBA_HIST_BASELINE_TEMPLATE:保存了基线模板。该视图提供了 MMON 所需的信息,用以确定何时根据模板创建基线,以及何时应删除基线。

  • DBA_HIST_BASELINE_METADATA:显示基线的元数据信息,包括名称、类型、创建时间、模板和失效时间。

如果要在过去的某个时段创建基线,则使用 CREATE_BASELINE 过程;如果时段有任何部分处于未来,则使用 CREATE_BASELINE_TEMPLATE 过程。

Baseline相关知识点有哪些

单一AWR基线

CREATE_BASELINE

语法:

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_snap_id    IN  NUMBER,
   end_snap_id      IN  NUMBER,
   baseline_name    IN  VARCHAR2,
   dbid             IN  NUMBER DEFAULT NULL,
   expiration       IN  NUMBER DEFAULT NULL)
 RETURN NUMBER;

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);

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);
 RETURN NUMBER;

示例:

创建一个名为TEST39,从2013-05-25 10:00:00开始到2013-05-29 11:00:00结束的,且永远不会过期的baseline

BEGIN 
DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE ( 
  start_time  => '2013-05-25 10:00:00', 
  end_time   => '2013-05-29 11:00:00', 
  baseline_name  => 'TEST39', 
  expiration     => NULL ); 
END;

查看已经创建了哪些baseline

SQL> set line 1000
SQL> col TEMPLATE_NAME for a20
SQL> col BASELINE_NAME for a20
SQL> select DBID,BASELINE_ID,BASELINE_NAME,BASELINE_TYPE,EXPIRATION,TEMPLATE_NAME from dba_hist_baseline;

—————————————————————————————-

删除基线

先确定已存在的基线名称,比如是TEST3

BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE (baseline_name => 'TEST3',
                  cascade => FALSE, dbid => null);
END;
/

cascade参数选择FALSE,如果选择TRUE则会将删除基线相关的快照

—————————————————————————————-

重命名基线

查看已经存在的基线,然后重命名

BEGIN
    DBMS_WORKLOAD_REPOSITORY.RENAME_BASELINE (
                   old_baseline_name => 'TEST3', 
                   new_baseline_name => 'NTEST3', 
                   );
END;
/

============================================================

基线模板

CREATE_BASELINE_TEMPLATE

语法:

Specifies a template for generating a baseline for a single time period in the future.

DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE(
   start_time              IN DATE,
   end_time                IN DATE,
   baseline_name           IN VARCHAR2,
   template_name           IN VARCHAR2,
   expiration              IN NUMBER,
   dbid                    IN NUMBER DEFAULT NULL);
Specifies a template for creating and dropping baseline based on repeating time periods:

DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE(
   day_of_week             IN VARCHAR2,
   hour_in_day             IN NUMBER, 
   duration                IN NUMBER,
   start_time              IN DATE,
   end_time                IN DATE,
   baseline_name_prefix    IN VARCHAR2,
   template_name           IN VARCHAR2,
   expiration              IN NUMBER,
   dbid                    IN NUMBER DEFAULT NULL);

示例:

单一基线模板

先查询当前的时间:

SQL> select sysdate from dual;

SYSDATE
-------------------
2013-05-29 15:47:13

BASELINE_TEMPLATE是需要有任何部分包含未发生的时间才能用的。

为此,我们来特别证明下:

SQL> BEGIN 
  2  DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE ( 
  3    start_time  => '2013-05-25 10:00:00', 
  4    end_time   => '2013-05-29 15:00:00', 
  5    baseline_name  => 'FALL29', 
  6   template_name  => 'FALL29', 
  7    expiration     => NULL ); 
  8  END; 
  9  /
BEGIN
*
第 1 行出现错误:
ORA-13537: 为创建基线模板而输入的内容无效 (end_time, end_time is less than SYSDATE) ORA-06512: 在
"SYS.DBMS_WORKLOAD_REPOSITORY", line 768
ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSITORY", line 818
ORA-06512: 在 line 2

果然如此,验证之前说的过去的某时段必须要是使用CREATE_BASELINE,反之包含任何时段的未来则使用 CREATE_BASELINE_TEMPLATE 过程。

SQL> BEGIN 
  2  DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE ( 
  3    start_time  => '2013-05-25 10:00:00', 
  4    end_time   => '2013-05-29 16:00:00', 
  5    baseline_name  => 'FALL29', 
  6   template_name  => 'FALL29', 
  7    expiration     => NULL ); 
  8  END; 
  9  /

PL/SQL 过程已成功完成。

重复基线模板

创建名template_2013_mondays的基线模板:每周一(day_of_week)早上8点开始(hour_in_day)持续12个小时(duration)且将保留30天(expiration),开始于2013-05-25 10:00:00,结束于2013-05-30 17:00:00。

SQL> BEGIN
  2      DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
  3                     day_of_week => 'monday', hour_in_day => 8,
  4                     duration => 12, expiration => 30,
  5    start_time  => '2013-05-25 10:00:00', 
  6    end_time   => '2013-05-30 17:00:00', 
  7                     baseline_name_prefix => 'baseline_2013_mondays_', 
  8                     template_name => 'template_2013_mondays',
  9                     dbid => NULL);
 10  END;
 11  /

PL/SQL 过程已成功完成。

查询有哪些基线模板

SQL> col REPEAT_INTERVAL for a60
SQL> 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_INTERVAL
---------- ----------- -------------------- --------- ---------- ---------- ------------------------------------------------------------
2197530720           2 FALL08               SINGLE
2197530720           3 FALL09               SINGLE
2197530720           4 FALL19               SINGLE
2197530720           5 FALL29               SINGLE
2197530720           6 template_2013_monday REPEATING         12         30 FREQ=WEEKLY;INTERVAL=1;BYDAY=MON;BYHOUR=8;BYMINUTE=0;BYSECON
                       s                                                    D=0

————————————————————————————-

删除基线模板

查询已存在的基线模板,确定需要删除的基线名称,比如template_2013_monday

BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE_TEMPLATE (
                   template_name => 'template_2013_mondays',
                   dbid => null);
END;
/

修改默认的Moving Window Baselin的大小

在11gR2中AWR默认的配置是保留期为8天,快照每小时生成一次。

SQL> col SNAP_INTERVAL for a20
SQL> col RETENTION for a20
SQL> select * from dba_hist_wr_control;

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

现在想要改变AWR配置满足系统的需求

SQL> BEGIN
  2    DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( retention => 7200, 
  3                   interval => 30, topnsql => 100);
  4  END;
  5  /
BEGIN
*
第 1 行出现错误:
ORA-13541: 系统移动窗口基线大小 (691200) 大于保留时间 (345600) ORA-06512: 在
"SYS.DBMS_WORKLOAD_REPOSITORY", line 174
ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSITORY", line 222
ORA-06512: 在 line 2

出现ORA-13541: system moving window baseline size (691200) greater than retention (518400)错误,根据错误提示,系统移动窗口基线(Moving Window Baseline)是691200,即是8天。也就是说修改AWR保留期的值,跟此数值有关系,必须要大于此数值。

查看当前Moving Window Baseline的值

SQL> col BASELINE_NAME for a30
SQL> select dbid, baseline_name, baseline_type, moving_window_size from dba_hist_baseline;

      DBID BASELINE_NAME                  BASELINE_TYPE MOVING_WINDOW_SIZE
---------- ------------------------------ ------------- ------------------
2197530720 SYSTEM_MOVING_WINDOW           MOVING_WINDOW                  8

既然知道了原因,解决就很方便了,Modifying the Window Size of the Default Moving Window Baseline

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

其中要注意:window size必须设置为一个小于或等于AWR设置的保留值。

In this example, the optional dbid parameter specifies the database identifier is 3310949047. If you do not specify a value for dbid, then the local database identifier is used as the default value.

检查当前Moving Window Baseline的值,看是否修改的如你所愿

SQL> select dbid, baseline_name, baseline_type, moving_window_size from dba_hist_baseline;

      DBID BASELINE_NAME                  BASELINE_TYPE MOVING_WINDOW_SIZE
---------- ------------------------------ ------------- ------------------
2197530720 SYSTEM_MOVING_WINDOW           MOVING_WINDOW                  5

继续之前的修改

SQL> BEGIN
  2    DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( retention => 7200, 
  3                   interval => 30, topnsql => 100);
  4  END;
  5  /

PL/SQL 过程已成功完成。

修改完后查看当前AWR配置

SQL> select * from dba_hist_wr_control;

      DBID SNAP_INTERVAL        RETENTION            TOPNSQL
---------- -------------------- -------------------- ----------
2197530720 +00000 00:30:00.0    +00005 00:00:00.0           100

到此问题已解决。

到此,相信大家对“Baseline相关知识点有哪些”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI