第十四课
14、 数据库维护
预先和被动
查看预警历史记录
AWR:Automatic Workload Repository
BEGIN
dbms_workload_repository.create_snapshot();
END;
select * from dba_hist_snapshot;
BEGIN
dbms_workload_repository.modify_snapshot_settings(
retention => 14400,--分钟
interval => 120);--分钟
END;
AWR 基线是一个AWR 快照集。通常是在AWR 中标记和保留的某个重要时段的快照数据的集合。
通常是基于过去有代表性的时段建立快照集,以用于与当前系统行为进行比较。
BEGIN
dbms_workload_repository.create_baseline(
start_snap_id => 8,
end_snap_id => 10,
baseline_name => 'fx_baseline');
END;
statistics_level:typical|all|basic
ADDM: Automatic Database Diagnostic Monitor
ADDM 是一个基于服务器的专用软件,它每隔60 分钟复查一次数据库的性能。ADDM 的目标是提前检测出可能存在的系统瓶颈,并在系统性能明显降低之前提供建议的修复办法。
设置阈值:
服务器生成预警分为两种类型:阈值预警和非阈值预警。
有状态预警显示在DBA_OUTSTANDING_ALERTS 中,清空后会转到DBA_ALERT_HISTORY。无状态预警会直接转到历史记录表。
select * from dba_outstanding_alerts;
select * from dba_alert_history;
select * from dba_alert_history_detail;
RBO-rule base opt
CBO-Cost base
手动收集统计信息:
select t.num_rows from dba_tables t where t.table_name='T';
dbms_stats.gather_*_stats
dbms_stats.gather_table_stats
dbms_stats.gather_schema_stats
dbms_stats.gather_index_stats
dbms_stats.gather_database_stats
dbms_stats.gather_system_stats
--收集用户统计信息
BEGIN
dbms_stats.gather_schema_stats(ownname => '"OUZY"'
,options => 'GATHER AUTO');
END;
--收集表的统计信息
BEGIN
dbms_stats.gather_table_stats(ownname => 'OUZY'
,tabname => 'T'
,estimate_percent => dbms_stats.auto_sample_size
,cascade => dbms_stats.auto_cascade
,degree => NULL
,no_invalidate => dbms_stats.auto_invalidate
,granularity => 'AUTO'
,method_opt => 'FOR ALL COLUMNS SIZE AUTO');
END;
--删除表的统计信息
BEGIN
dbms_stats.delete_table_stats(ownname => 'OUZY', tabname => 'T');
END;
--删除用户的统计信息
BEGIN
dbms_stats.delete_schema_stats(ownname => '"OUZY"');
END;
BEGIN
dbms_stats.set_table_prefs('FX', 'T', 'STALE_PERCENT', '13');
END;
select * from dba_tab_stat_prefs;