生成awr报告

create or replace procedure j1_dw.generate_multiple_awr_reports (l_snap_start varchar2, --格式yyyyMMdd hh24:mi(如20130603 15:15)
                                                            l_snap_end   varchar2 --格式yyyyMMdd hh24:mi(如20130603 15:15)
                                                            ) is
-----------------------------------------------------------------
--生成awr报告
--在j1_ldm或j1_dw用户下执行
--在sys用户下执行
--grant select on v_$database to j1_ldm(或j1_dw);
--grant select on dba_hist_snapshot to j1_ldm(或j1_dw);
--GRANT EXECUTE ON dbms_workload_repository TO j1_ldm(或j1_dw);
--此过程用rac库的第一个节点跑,建立directory目录为/goldengate/awr(此目录为报告生成目录)
--输入参数格式yyyyMMdd hh24:mi(如20130603 15:15)
-----------------------------------------------------------------

  l_dir              VARCHAR2(50) := 'AWR_REPORTS_DIR';
  l_last_snap_1        NUMBER := NULL;
  l_dbid               v$database.dbid%TYPE;
  l_file_1             UTL_FILE.file_type;
  l_file_name          VARCHAR(50);
  l_last_snap_2        NUMBER := NULL;
  l_file_2             UTL_FILE.file_type;

BEGIN
  SELECT dbid
  INTO   l_dbid
  FROM   v$database;

  FOR cur_snap_1 IN (SELECT snap_id,to_char(begin_interval_time,'yyyyMMdd hh24:mi') start_time_1,
                            to_char(end_interval_time,'yyyyMMdd hh24:mi') end_time_1
                   FROM   dba_hist_snapshot
                   WHERE  instance_number = 1
                   AND    to_char(begin_interval_time,'yyyyMMdd hh24:mi') >= l_snap_start AND to_char(end_interval_time,'yyyyMMdd hh24:mi') <= l_snap_end
                   ORDER BY snap_id)
  LOOP
    IF l_last_snap_1 IS NOT NULL THEN
      l_file_1 := UTL_FILE.fopen(l_dir, 'awr_' || cur_snap_1.start_time_1 || '_' || cur_snap_1.end_time_1 || '_1.htm', 'w', 32767);

      FOR cur_rep_1 IN (SELECT output
                      FROM   TABLE(DBMS_WORKLOAD_REPOSITORY.awr_report_html(l_dbid, 1, l_last_snap_1, cur_snap_1.snap_id)))
      LOOP
        UTL_FILE.put_line(l_file_1, cur_rep_1.output);
      END LOOP;
      UTL_FILE.fclose(l_file_1);
    END IF;
    l_last_snap_1 := cur_snap_1.snap_id;
  END LOOP;

  FOR cur_snap_2 IN (SELECT snap_id,to_char(begin_interval_time,'yyyyMMdd hh24:mi') start_time_2,
                            to_char(end_interval_time,'yyyyMMdd hh24:mi') end_time_2
                   FROM   dba_hist_snapshot
                   WHERE  instance_number = 2
                   AND    to_char(begin_interval_time,'yyyyMMdd hh24:mi') >= l_snap_start AND to_char(end_interval_time,'yyyyMMdd hh24:mi') <= l_snap_end
                   ORDER BY snap_id)
  LOOP
    IF l_last_snap_2 IS NOT NULL THEN
      l_file_2 := UTL_FILE.fopen(l_dir, 'awr_' || cur_snap_2.start_time_2 || '_' || cur_snap_2.end_time_2 || '_2.htm', 'w', 32767);

      FOR cur_rep_2 IN (SELECT output
                      FROM   TABLE(DBMS_WORKLOAD_REPOSITORY.awr_report_html(l_dbid, 2, l_last_snap_2, cur_snap_2.snap_id)))
      LOOP
        UTL_FILE.put_line(l_file_2, cur_rep_2.output);
      END LOOP;
      UTL_FILE.fclose(l_file_2);
    END IF;
    l_last_snap_2 := cur_snap_2.snap_id;
  END LOOP;

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26613085/viewspace-1149174/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26613085/viewspace-1149174/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值