/***************************************************************/
--1.设置addm参数
--查看可用参数(可能不全)
SELECT adp.parameter_name,
adp.parameter_value,
adp.parameter_type,
adp.description
from dba_advisor_def_parameters adp
WHERE adp.advisor_name = 'ADDM'
ORDER BY 1;
--设置接口
BEGIN
dbms_advisor.set_default_task_parameter(advisor_name =>,
parameter =>,
value =>);
END;
/
/***************************************************************/
--2.使用addm分析系统瓶颈
--运行分析
DECLARE
v_task_name VARCHAR2(300) := 'addm_test_task';
BEGIN
dbms_addm.analyze_db(task_name => v_task_name,
begin_snapshot => 150, --snap_id begin
end_snapshot => 151); --snap_id end
END;
/
11g新特性:另外还有 dbms_addm.analyze_inst dbms_addm.analyze_partial两个接口
分别针对单个实例和部分实例(RAC)进行局部分析,而analyze_db是全局分析。
--得到报告
SELECT dbms_addm.get_report(task_name => 'addm_test_task') rpt FROM dual;
/***************************************************************/
--3.使用addm指示
--addm可用指示列表
SELECT *
FROM dba_advisor_finding_names afn
WHERE afn.advisor_name = 'ADDM';
--配置指示后运行addm
DECLARE
v_task_name VARCHAR2(300) := 'addm_test_task3';
BEGIN
dbms_addm.insert_finding_directive(task_name => NULL,
dir_name => 'addm_dir1',
finding_name => 'CPU 占用率',
min_active_sessions => 5,
min_perc_impact => 10);
dbms_addm.analyze_db(task_name => v_task_name,
begin_snapshot => 150,
end_snapshot => 151);
END;
/
--删除指示
BEGIN
dbms_addm.delete_finding_directive(task_name => NULL,
dir_name => 'addm_dir1');
END;
/
PS:一些视图
--实际运行addm时发现的问题
SELECT * FROM dba_advisor_findings;
--addm每次运行后,实例级信息
SELECT * from dba_addm_instances;
--addm任务指示集(预配置)
SELECT * FROM dba_addm_task_directives;
--任务执行信息(系统及手动)
SELECT * from dba_addm_tasks;
/***************************************************************/
--4.总结
人为巡检时最好参考下addm给出的一些建议,毕竟oracle称她为顾问,你
有时发现不了的问题,可能她会给出一些问题出来;而且对于分析时间跨度
比较大的性能问题,addm有时不失是一种较好的方式。
阅读(1492) | 评论(0) | 转发(0) |