Baseline相关知识点有哪些

71次阅读
没有评论

共计 7699 个字符,预计需要花费 20 分钟才能阅读完成。

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

单一 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);
/

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

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

重命名基线

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

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

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

基线模板

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

修改默认的 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);
/

其中要注意: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 相关知识点有哪些”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-18发表,共计7699字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)