ITPub博客

首页 > 数据库 > Oracle > 存储过程批量生成awr脚本

存储过程批量生成awr脚本

原创 Oracle 作者:mahanso 时间:2018-01-23 15:32:07 0 删除 编辑
DECLARE  
  
  l_snap_start       NUMBER := 40078;  
  l_snap_end         NUMBER := 40081;  
  l_dir              VARCHAR2(50) := 'AWRTEST';  
    
  l_last_snap        NUMBER := NULL;  
  l_dbid             NUMBER := 2778659381;  
  l_file             UTL_FILE.file_type;  
  l_file_name        VARCHAR(50);  
  cursor cur_inum is  SELECT instance_number FROM dba_hist_snapshot WHERE dbid = l_dbid GROUP BY instance_number ORDER BY instance_number;  
  
  
BEGIN  
  
  for l_instance_number in cur_inum loop   
    l_last_snap := NULL;  
    FOR cur_snap IN (SELECT snap_id  
                   FROM   dba_hist_snapshot  
                   WHERE  instance_number = l_instance_number.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_instance_number.instance_number||'_'|| l_last_snap || '_' || cur_snap.snap_id || '.html', 'w', 32767);  --40162
        
      FOR cur_rep IN (SELECT output  
                      FROM   TABLE(DBMS_WORKLOAD_REPOSITORY.awr_report_html(l_dbid, l_instance_number.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;  --40161
  END LOOP;  
  end loop;  
    
EXCEPTION  
  WHEN OTHERS THEN  
    IF UTL_FILE.is_open(l_file) THEN  
      UTL_FILE.fclose(l_file);  
    END IF;  
    RAISE;   
END;  

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

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-10-18

  • 博文量
    160
  • 访问量
    601042