管理基线
基线是由多个连续的快照组成的。基线有两种。
固定基线 (fixed baseline): 由静态的开始快照ID和静态的结束快照ID 限定的一组连续快照。可以根据需要创建多个基线。
移动窗口基线(moving window baseline):指定时间内(特别是以天为单位)的一组连续快照并且以最近的快照作为结束。每个数据库都有一个移动窗口基线作为数据引擎的自适应阈值(更多信息请参考Performance Tuning Guide手册)。这种基线是从11.1版本之后才有的。
1.管理固定基线
dbms_workload_repository包提供了多个命名为create_baseline的函数和存储过程用来创建基线。虽然它们在两个方面有所区别,但都实现同样的基本功能。首先,基线的起始和结束可以指定两个ID或两个时间(后者只有在11.1版本之后才可用)。其次,函数会返回新创建的基线ID。注意所有的子程序都需要参数指定基线的名称,同时也可使用可选参数指定基线在多少天后自动删除(默认值为NULL,指定没有过期的基线)。例如,以下调用展示了如何创建名为TEST的基线并指定基线于30天后过期:
begin
dbms_workload_repository.create_baseline(start_snap_id => 125,
end_snap_id => 126,
baseline_name => 'TEST',
expiration => 30);
end;
/
保存在AWR中的快照可以通过dba_hist_baseline视图查看,在12.1多租户环境下,可以通过cdb_hist_baseline视图查看:
select start_snap_id, start_snap_time, end_snap_id, end_snap_time
from dba_hist_baseline
where baseline_name = 'TEST'
and baseline_type = 'STATIC';
dbms_workload_repository包提供了select_baseline_metric函数用来显示基线(同样也对移动窗口基线适用)相关的度量值。以下查询展示了如何显示TEST基线相关的度量值:
select metric_name, metric_unit, minimum, average, maximum
from table(dbms_workload_repository.select_baseline_metric('TEST'))
order by metric_name;
dbms_workload_repository包提供了rename_baseline过程来对基线重命名。该过程需要参数指定旧命名与新命名。例如,以下调用显示如何将TEST基线改名为TEST1:
dbms_workload_repository.rename_baseline(
old_baseline_name=>'TEST',
new_baseline_name=>'TEST1'
);
最后,可以使用dbms_workload_repository包下的drop_baseline过程来删除基线。该过程需要指定参数基线名,以及指定是否删除与基线相关的快照(默认情况下不删除)的可选参数。例如,以下调用展示了如何删除TEST1基线及其相关的快照:
dbms_workload_repository.drop_baseline(
baseline_name =>'TEST1',
cascade =>TRUE
);
2.管理移动窗口基线
移动窗口基线没有太多需要管理的内容。实际上,我们仅可以调用dbms_workload_repository包下的modify_baseline_window_size过程来修改窗口大小。参数需要指定新窗口大小的天数。比如,以下调用展示了如何将窗口大小设置为30天:
dbms_workload_repository.modify_baseline_window_size(window_size=>30);
调用modify_ baseline_ window_ size过程唯一需要满足的要求是,新的窗口大小不能大于使用快照的保存期。如果没有满足要求,数据库引擎会抛出如下异常:ORA-13541: system moving window baseline size greater than retention。
可以使用以下查询来显示当前窗口大小(注意,从11.1版本开始这些值为默认值):
select baseline_name,moving_window_size from dba_hist baseline where baseline_type ='MOVING WINDOW';