博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过案例学调优之--AWR BaseLine管理
阅读量:5914 次
发布时间:2019-06-19

本文共 9880 字,大约阅读时间需要 32 分钟。

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 表示的是您指定的一个固定的、连续的时间段。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
根据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保留期限。

1
2
3
4
14
:
45
:
42 
SYS@ test1 >SELECT retention FROM dba_hist_wr_control;
RETENTION
---------------------------------------------------------------------------
+
00008 
00
:
00
:
00.0

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

1
2
3
4
5
6
7
8
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视图可以返回当前的移动窗口大小。

1
2
3
4
5
6
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参数,单位为天。

1
2
3
4
5
6
7
8
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存储过程定义单一基线或重复基线的捕获,创建单一基线模板与创建基于时间的基线类似,除了将来的时间外。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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收集基线。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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存储过程删除基线模板

1
2
3
4
5
6
7
8
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 过程。

本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1571746,如需转载请自行联系原作者
你可能感兴趣的文章
JAVA_内部类
查看>>
jxl 导入excel
查看>>
Mysql之performance Schema
查看>>
虚拟机linux上网问题
查看>>
XMLHttpRequest - 原始AJAX初步
查看>>
laravel/lumen 单元测试
查看>>
csu2161: 漫漫上学路(Hash+最短路)
查看>>
重复引用错误:duplicate symbols for architecture x86_64
查看>>
计算机图形学 课设
查看>>
ucenter1.5通讯过程分析(转载)
查看>>
js和html5实现画板
查看>>
浏览器中可以访问,但是git命令、go get命令使用时却无法连接
查看>>
Apache Spark源码走读之7 -- Standalone部署方式分析
查看>>
如何避免重构带来的危险
查看>>
有序的双链表
查看>>
MSSQLServer的备份与还原
查看>>
Eclipse导入的项目中发现包的形式变成了文件夹的形式,需要将文件夹的形式变成包...
查看>>
使用MySQL yum源安装MySQL
查看>>
iOS8中使用CoreLocation定位
查看>>
mvn package时设置了maven.test.skip=true依旧执行单元测试
查看>>