本篇内容主要讲解“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 过程。
单一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相关知识点有哪些”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!