oracle用dbms_workload_repository取AWR报告方法

我们可以使用awrrpt.sql脚本在服务器端生成AWR报告,这里我们说说如何使用DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML生成AWR报告,可以在服务器和客户端使用。

取AWR方法

1、根据取AWR报告的时间范围,查出快照ID;

SELECT *
  FROM DBA_HIST_SNAPSHOT T
 WHERE T.END_INTERVAL_TIME >=
       TO_DATE('2017-10-09 09:00:00', 'yyyy-MM-dd hh24:mi:ss')
   AND T.END_INTERVAL_TIME <=
       TO_DATE('2017-10-09 10:01:00', 'yyyy-MM-dd hh24:mi:ss')
 ORDER BY SNAP_ID;

查询结果如下:
这里写图片描述
从截图中可以看出oracle是15min生成一次快照

2、利用第一步的END_INTERVAL_TIME,SNAP_ID,DBID,INSTANCE_NUMBER生成报告

SELECT *
  FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(1700577032,
                                                      1,
                                                      38247,
                                                      38251,
                                                      0));
或者:
SELECT DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(1700577032,
                                                      1,
                                                      38247,
                                                      38251,
                                                      0) FROM dual;    

3、把结果粘贴到一个txt中,比如a.txt保存退出。然后改此文件后缀为html,比如a.html. 最后用浏览器打开a.html即可 ,如果需要生成txt格式的报告,则用DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT这个函数即可
报告截图:
oracle用dbms_workload_repository取AWR报告方法_第1张图片

生成对比的AWR报告

1、同样的,根据取AWR报告的时间范围,查出快照ID
2、利用下面的函数取出报告,导出即可

SELECT DBMS_WORKLOAD_REPOSITORY.AWR_DIFF_REPORT_HTML(1700577032,
                                                     1,
                                                     38247,
                                                     38251,
                                                     1700577032,
                                                     1,
                                                     38151,
                                                     38155)
  FROM DUAL;

报告截图:
oracle用dbms_workload_repository取AWR报告方法_第2张图片

相关函数

--生成html格式的awr报告
FUNCTION AWR_REPORT_HTML(L_DBID IN NUMBER,      --database ID number
                         L_INST_NUM IN NUMBER,  --instance number
                         L_BID IN NUMBER,       --开始的快照ID,在dba_hist_snapshot里找
                         L_EID IN NUMBER,       --结束的快照ID,在dba_hist_snapshot里找
                         L_OPTIONS IN NUMBER DEFAULT 0)
 RETURN AWRRPT_HTML_TYPE_TABLE
  PIPELINED;

--生成txt格式的awr报告
FUNCTION AWR_REPORT_TEXT(L_DBID IN NUMBER,      --database ID number                         
                         L_INST_NUM IN NUMBER,  --instance number                                      
                         L_BID IN NUMBER,       --开始的快照ID,在dba_hist_snapshot里找
                         L_EID IN NUMBER,       --结束的快照ID,在dba_hist_snapshot里找
                         L_OPTIONS IN NUMBER DEFAULT 0)
 RETURN AWRRPT_TEXT_TYPE_TABLE
  PIPELINED;

--生成对比的awr报告
FUNCTION AWR_DIFF_REPORT_HTML(DBID1     IN NUMBER,
                              INST_NUM1 IN NUMBER,
                              BID1      IN NUMBER,
                              EID1      IN NUMBER,
                              DBID2     IN NUMBER,
                              INST_NUM2 IN NUMBER,
                              BID2      IN NUMBER,
                              EID2      IN NUMBER)
  RETURN AWRRPT_HTML_TYPE_TABLE
  PIPELINED;

你可能感兴趣的:(Oracle数据库,SQL优化,ASM)