Linux查看存储过程快照,通过存储过程自动生成AWR报告

本文介绍了一个Oracle数据库的存储过程,用于自动生成AWR报告。该过程可以根据指定的时间间隔抓取快照并生成HTML格式的报告文件,支持通过shell脚本和crontab定时任务调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下是存储过程内容:

CREATE OR REPLACE PROCEDURE sp_auto_awrreport(reporttime varchar2 default null,

rpt_interval number default 2)

AS

----用途:自动生成AWR报告

----创建人:cavlin

----创建日期:20130210

----reporttime 报告结束时间

----rpt_interval 报告间隔 1:30分钟,2:60分钟

start_snap number;

end_snap number;

start_time varchar2(14);

end_time varchar2(14);

awr_file utl_file.file_type;

n_dbid  number;

BEGIN

if reporttime is null then

---查询最大的快照id

select max(snap_id) into end_snap from dba_hist_snapshot;

start_snap:=end_snap-rpt_interval;

else

---取输入时间对应的snap_id

select snap_id

into end_snap

from dba_hist_snapshot

where to_char(end_interval_time, 'yyyymmddhh24mi') = reporttime

and instance_number = 1;

start_snap:=end_snap-rpt_interval;

end if;

---格式化快照时间

select dbid,to_char(end_interval_time-rpt_interval/48, 'yyyymmddhh24mi'),to_char(end_interval_time, 'yyyymmddhh24mi')

into n_dbid,start_time,end_time

from dba_hist_snapshot

where snap_id = end_snap and instance_number=1;

---实例1

awr_file:=utl_file.fopen('DIR_AWRREPORT','AWR_NODE1_'||start_time||'_'||end_time||'.html', 'a',32767);

for awr_info in (select output from table(dbms_workload_repository.awr_report_html(n_dbid,1,start_snap,end_snap,0))) loop

UTL_FILE.put_line(awr_file,awr_info.output);

end loop;

utl_file.fclose(awr_file);

---实例2

awr_file:=utl_file.fopen('DIR_AWRREPORT','AWR_NODE2_'||start_time||'_'||end_time||'.html', 'a',32767);

for awr_info in (select output from table(dbms_workload_repository.awr_report_html(n_dbid,2,start_snap,end_snap,0))) loop

UTL_FILE.put_line(awr_file,awr_info.output);

end loop;

utl_file.fclose(awr_file);

END sp_auto_awrreport;

可以直接在数据库中调用,也可以通过shell调用:

cat  /opt/cron/autoawr.sh

#!/bin/bash

sqlplus -s / as sysdba << EOF

exec sp_auto_awrreport;

exit

EOF

find /opt/awrreport/  -mtime +7 -name "*.html" -exec rm -f {} \;

通过crontab调用:

$ crontab -l

5 22 * * * sh /opt/cron/autoawr.sh

这样每天22点05分就会在/opt/awrreport目录自动生成21:00--22:00的awr报告了。

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值