Oracle AWR - 使用SQL获取AWR报告
Email:liqiang3@sugon.com
目录
2 AWR_REPORT_HTML:获取html格式的AWR报告
3 AWR_REPORT_TEXT:获取txt格式的AWR报告
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报告。