一 管理快照
默认情况下,Oracle数据库每小时产生一次快照,并把这些统计信息保存在负载信息库8天。可以使用OEM管理快照,也可以使用DBMS_WORKLOAD_REPOSITORY手动创建、删除和修改快照,调用此过程,需要DBA角色。
1、创建快照
可以使用下面的过程手动创建快照,如下:
BEGIN
dbms_workload_repository.create_snapshot();
END;
可以通过视图Dba_Hist_Snapshot查看快照信息。
2、删除快照
删除快照后,属于该快照区间的ASH信息也将会被清除,可以通过视图Dba_Hist_Ash_Snapshot查看ASH信息,删除快照如下:
BEGIN
dbms_workload_repository.drop_snapshot_range(low_snap_id => 6900,
high_snap_id => 6906);
END;
3、修改快照设置
可以通过调整快照产生的间隔、保留时间,并捕获指定数据库ID的快照生成的TOP SQL,需要注意的是,这种操作可能会影响数据库诊断工具的精确度。可以通过视图Dba_Hist_Wr_Control查看快照的设置信息。
INTERVAL设置影响数据库自动产生快照的频率,RETENTION设置影响数据库存储快照的时间,TOPNSQL设置影响TOP SQL的数量。可以通过如下过程修改快照设置:
BEGIN
dbms_workload_repository.modify_snapshot_settings(retention => 14400,
INTERVAL => 30,
topnsql => 100);
END;
二 管理基线
1、创建基线
创建基线需要利用快照信息,具体可查视图Dba_Hist_Snapshot,可从视图Dba_Hist_Baseline查看已经创建的基线,利用过程创建基线如下:
BEGIN
dbms_workload_repository.create_baseline(start_snap_id =>6922,
end_snap_id =>6930,
baseline_name =>'baseline_test',
expiration =>30);
END;
注:expiration不指定,则该基线永不过期,上例指定为30,则30天后会过期,并自动删除;
2、删除基线
BEGIN
dbms_workload_repository.drop_baseline(baseline_name => 'baseline_test',
cascade => TRUE);
END;
注:cascade 为FALSE,则只删除基线内容,若为TRUE,则删除基线的同时,会删除与其相关联的快照。
3、重命名基线