Oracle AWR - 使用SQL获取AWR报告

Oracle AWR - 使用SQL获取AWR报告

Email:liqiang3@sugon.com

目录

Oracle AWR - 使用SQL获取AWR报告

1 DBMS_WORKLOAD_REPOSITORY包

2 AWR_REPORT_HTML:获取html格式的AWR报告

3 AWR_REPORT_TEXT:获取txt格式的AWR报告

4 补充一:只生成指定SQL的AWR报告

5 补充二:客户端获取statspack报告


1 DBMS_WORKLOAD_REPOSITORY包

我们经常使用awrrpt.sql脚本在服务器端生成AWR report。

除此之外我们还可以使用,DBMS_WORKLOAD_REPOSITORY包下的AWR_REPORT_HTML和AWR_REPORT_TEXT存储过程,从任意Oracle数据库终端(服务器和客户端均可),查询得到AWR报告源码,格式分别为html和txt文本。将查询结果保存便可获得AWR报告。

  • dbms_workload_repository.awr_report_html存储过程:
dbms_workload_repository.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)
  • dbms_workload_repository.awr_report_text存储过程:
dbms_workload_repository.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)

2 AWR_REPORT_HTML:获取html格式的AWR报告

第一步:确定开始和结束快照ID

根据需要,找到性能异常时段,开始和结束时间对应的SNAP_ID,如2859到2860。此外还需记录DBID和INSTANCE_NUMBER,以作为存储过程的参数。

第二步:查询获取报告源码

SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_html(1897011967,1,2859,2860,0));

第三步:将查询结果保存为html文件

创建一个文本文件,插入查询结果,文件名后缀使用html。

将*.html文件打开,即可看到所需的AWR报告。

 

3 AWR_REPORT_TEXT:获取txt格式的AWR报告

AWR_REPORT_TEXT的功能和使用方法类似,不过生成的是txt格式的报告。

第一步:确定开始和结束快照ID

SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_html(1897011967,1,2859,2860,0));

第二步:查询获取报告源码

SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_text(1897011967,1,2859,2860,0));

第三步:将查询结果保存为txt文件

 

4 补充一:只生成指定SQL的AWR报告

我们可以指定SQL_ID,生成该SQL特定的html报告或txt报告。

  FUNCTION awr_sql_report_text
  (l_dbid     IN NUMBER,  
   l_inst_num IN NUMBER,
   l_bid      IN NUMBER,     -- Begin Snap Id
   l_eid      IN NUMBER,     -- End Snapshot Id
   l_sqlid    IN VARCHAR2,   -- SQL ID
   l_options  IN NUMBER DEFAULT 0)
  RETURN awrsqrpt_text_type_table PIPELINED;
 
  FUNCTION awr_sql_report_html
  (l_dbid     IN NUMBER,
   l_inst_num IN NUMBER,
   l_bid      IN NUMBER,
   l_eid      IN NUMBER,
   l_sqlid    IN VARCHAR2,
   l_options  IN NUMBER DEFAULT 0)
  RETURN awrrpt_html_type_table PIPELINED;

5 补充二:客户端获取statspack报告

将数据库服务器上,${ORACLE_HOME}\rdbms\admin 下statspack相关的sp*.sql文件拷贝到客户端,在客户端调用spreport.sql,即可在客户端获取数据库statspack报告。


版权声明:本文为whereiwillgo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。