Oracle 使用SQL生成AWR报告

大神打扰一下,Oracle 使用SQL生成AWR报告
最新回答
地球另一端的梦

2026-10-31 11:48:00

使用SQL生成AWR报告的方法提供了一种方便快捷的解决方案,特别是在无法直接访问数据库服务器的情况下。为了生成报告,用户需要确保拥有dbms_workload_repository包的权限,且数据库系统必须具备快照记录功能。

首先,需获取数据库和快照的基本信息,以便后续操作。使用SQL语句执行以下查询:

select dbid from v$database; 用于获取数据库ID,将结果用于后续步骤。

select * from dba_hist_snapshot order by snap_id desc; 用于列出所有历史快照,便于选取需要分析的快照范围。

生成AWR报告的步骤如下:

1. 通过SQL生成文本AWR报告,适用于需要直接处理报告数据的场景。使用以下查询:

select output from table(dbms_workload_repository.awr_report_text(l_dbid => 1642013397, l_bid => 1150, l_eid => 1151, l_inst_num => 1));

注意:将1642013397替换为数据库ID,1150和1151分别表示开始和结束快照ID,1表示集群节点。

2. 生成HTML格式的AWR报告,其结构更清晰,易于在浏览器中查看和分析,使用如下查询:

select output from table(dbms_workload_repository.awr_report_html(l_dbid => 1642013397, l_bid => 1150, l_eid => 1151, l_inst_num => 1));

在生成HTML报告后,可以通过浏览器直接打开,以直观的方式查看报告内容。