您的位置:首页 > 其它

用脚本自动生成AWR报告!

2013-11-18 15:03 465 查看
脚本转载自:http://www.oracle-base.com/dba/10g/generate_multiple_awr_reports.sql

-- -----------------------------------------------------------------------------------
-- File Name    : http://www.oracle-base.com/dba/10g/generate_multiple_awr_reports.sql -- Author       : DR Timothy S Hall
-- Description  : Generates AWR reports for all snapsots between the specified start and end point.
-- Requirements : Access to the v$ views, UTL_FILE and DBMS_WORKLOAD_REPOSITORY packages.
-- Call Syntax  : Create the directory with the appropriate path.
--                Adjust the start and end snapshots as required.
--                @generate_multiple_awr_reports.sql
-- Last Modified: 02/08/2007
-- -----------------------------------------------------------------------------------
CREATE OR REPLACE DIRECTORY awr_reports_dir AS '/tmp/';

DECLARE
-- Adjust before use.
l_snap_start       NUMBER := 1;
l_snap_end         NUMBER := 10;
l_dir              VARCHAR2(50) := 'AWR_REPORTS_DIR';

l_last_snap        NUMBER := NULL;
l_dbid             v$database.dbid%TYPE;
l_instance_number  v$instance.instance_number%TYPE;
l_file             UTL_FILE.file_type;
l_file_name        VARCHAR(50);

BEGIN
SELECT dbid
INTO   l_dbid
FROM   v$database;

SELECT instance_number
INTO   l_instance_number
FROM   v$instance;

FOR cur_snap IN (SELECT snap_id
FROM   dba_hist_snapshot
WHERE  instance_number = l_instance_number
AND    snap_id BETWEEN l_snap_start AND l_snap_end
ORDER BY snap_id)
LOOP
IF l_last_snap IS NOT NULL THEN
l_file := UTL_FILE.fopen(l_dir, 'awr_' || l_last_snap || '_' || cur_snap.snap_id || '.htm', 'w', 32767);

FOR cur_rep IN (SELECT output
FROM   TABLE(DBMS_WORKLOAD_REPOSITORY.awr_report_html(l_dbid, l_instance_number, l_last_snap, cur_snap.snap_id)))
LOOP
UTL_FILE.put_line(l_file, cur_rep.output);
END LOOP;
UTL_FILE.fclose(l_file);
END IF;
l_last_snap := cur_snap.snap_id;
END LOOP;

EXCEPTION
WHEN OTHERS THEN
IF UTL_FILE.is_open(l_file) THEN
UTL_FILE.fclose(l_file);
END IF;
RAISE;
END;
/


脚本需要修改一下snap_id,可以利用这个脚本来定时生成数据库AWR报告。

sys@ORCL> select snap_id,BEGIN_INTERVAL_TIME,END_INTERVAL_TIME from dba_hist_snapshot;

SNAP_ID BEGIN_INTERVAL_TIME                                                         END_INTERVAL_TIME
---------- --------------------------------------------------------------------------- ---------------------------------------------------------------------------
640 29-10月-13 04.31.28.000 下午                                                29-10月-13 04.42.39.936 下午
641 29-10月-13 04.42.39.936 下午                                                29-10月-13 05.00.46.050 下午
643 29-10月-13 05.30.05.878 下午                                                29-10月-13 06.00.33.355 下午
644 29-10月-13 06.00.33.355 下午                                                29-10月-13 06.30.58.569 下午
645 29-10月-13 06.30.58.569 下午                                                29-10月-13 07.00.40.386 下午
646 29-10月-13 07.00.40.386 下午                                                29-10月-13 07.30.56.970 下午
647 29-10月-13 07.30.56.970 下午                                                29-10月-13 08.00.09.230 下午
648 29-10月-13 08.00.09.230 下午                                                29-10月-13 08.30.26.101 下午
649 29-10月-13 08.30.26.101 下午                                                29-10月-13 09.00.42.668 下午
... ...
722 06-11月-13 08.00.49.765 下午                                                06-11月-13 08.30.04.755 下午
723 06-11月-13 08.30.04.755 下午                                                06-11月-13 09.00.14.621 下午
724 06-11月-13 09.00.14.621 下午                                                06-11月-13 09.30.26.473 下午
739 08-11月-13 03.28.00.283 下午                                                08-11月-13 04.00.09.595 下午
757 12-11月-13 03.06.31.000 下午                                                12-11月-13 03.17.47.553 下午

已选择119行。

sys@ORCL> @generate_multiple_awr_reports.sql

目录已创建。

PL/SQL 过程已成功完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: