使用shell定制addm脚本(r3笔记第88天)

作者: admin 分类: 公众号存档            0 次浏览 发布时间: 2014-12-18 21:41

公众号:杨建荣的学习笔记 · 作者:r3笔记第88天 · 发布:2014-12-18 21:41:17 · 原文链接

在10g开始推出的addm对于工作中的调优能够提供很多的帮助,而且建议也更加客观和全面。但是使用addmrpt.sql的时候还是有些慢,
可以使用如下的脚本来定制addm,能够根据快照生成指定的addm报告。
脚本的内容如下:
相比于定制awr,ash要略微有一些难度。对于addm目前只提供了文本格式的内容,所以格式的处理上没什么特别的地方,不用考虑html格式的兼容性。
TASK_NAME=`sqlplus -silent $DB_CONN_STR@$SH_DB_SID <<END
set pagesize 0 feedback off verify off heading on echo off
select ‘ADDM_TASK_’||i.instance_name||’_’||$1||’_’||$2 from v\\$database d,
v\\$instance i;
exit;
END`

if [ -z “$TASK_NAME” ]; then
echo “no addm task exists, please check again”
exit 0
else
echo ‘*******************************************’
echo ” $TASK_NAME ”
echo ‘*******************************************’
fi

sqlplus -silent $DB_CONN_STR@$SH_DB_SID <<END
declare
task_name varchar2(200);
begin
task_name:=’$TASK_NAME’;
dbms_output.put_line(task_name);
dbms_advisor.create_task(‘ADDM’,task_name);
dbms_advisor.set_task_parameter(task_name, ‘START_SNAPSHOT’, $1);
dbms_advisor.set_task_parameter(task_name, ‘END_SNAPSHOT’, $2);
–dbms_advisor.set_task_parameter(task_name, ‘INSTANCE’, :inst_num);
–dbms_advisor.set_task_parameter(task_name, ‘DB_ID’, :dbid);
dbms_advisor.execute_task(task_name);
end;
/

prompt
prompt Generating the ADDM report for this analysis …
prompt
prompt

set long 1000000 pagesize 0 longchunksize 1000
column get_clob format a80
select dbms_advisor.get_task_report(‘$TASK_NAME’, ‘TEXT’, ‘TYPICAL’)
from sys.dual;
END

addm相比于awr,ash需要在数据库中创建一个task,使用dbms_advisor包来实现。
如果在备份库只读的情况下执行addm,就会报错。
begin
*
ERROR at line 1:
ORA-16000: database open for read-only access
ORA-06512: at “SYS.PRVT_ADVISOR”, line 4869
ORA-06512: at “SYS.DBMS_ADVISOR”, line 103
ORA-06512: at line 12

可以这样执行脚本
ksh genaddmrpt.sh 14807 14808
*******************************************
ADDM_TASK_PETCUS1_14807_14808
*******************************************
PL/SQL procedure successfully completed.
Generating the ADDM report for this analysis …
ADDM Report for Task ‘ADDM_TASK_XXXXX_14807_14808’
—————————————————-
Analysis Period
—————
AWR snapshot range from 14807 to 14808.
Time period starts at 18-DEC-14 03.00.52 PM
Time period ends at 18-DEC-14 04.00.54 PM

Analysis Target
—————
Database ‘XXXXX’ with DB ID 1242335645.
Database version 11.2.0.2.0.
Analysis was requested for all instances, but ADDM analyzed instance xxxx,
numbered 1 and hosted at xxxxx.
See the “Additional Information” section for more information on the requested
instances.

。。。。

admin

杨建荣,《Oracle DBA工作笔记》《MySQL DBA工作笔记》作者,dbaplus社群发起人之一,腾讯云TVP,现任竞技世界系统部经理,拥有十多年数据库开发和运维经验,目前专注于开源技术、运维自动化和性能调优

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注