AWR报告格式由文件扩展名决定:输入.report.html生成HTML(含样式和交互),.txt生成纯文本(无样式、适合管道处理),不带扩展名默认HTML;HTML依赖内联JS/CSS,需用Chrome/Edge打开;TXT与HTML底层逻辑一致但精度、截断等有差异。
awr report 命令里怎么选 HTML 还是 TXT
默认生成的是 html,不是 txt —— 这点很多人误以为两个格式靠后缀或开关控制,其实全看 awr report 脚本启动时的交互选项。进脚本后第一问就是“type the name of the report file”,你输 report.html 就出 html,输 report.txt 就出纯文本。
关键在输入文件名时带不带扩展名、带哪个扩展名。Oracle 不校验内容,只按后缀决定输出格式。
- 输入
awrrpt_1_1234_1235.html→ 生成 HTML 报告(含折叠面板、跳转链接、CSS 样式) - 输入
awrrpt_1_1234_1235.txt→ 生成纯文本报告(固定宽度、无样式、适合 grep 或管道处理) - 输入不带扩展名(如
myreport)→ 默认生成.html
HTML 报告打不开或样式错乱怎么办
HTML 报告依赖本地 awrhtml.css 和内联 JS,但 Oracle 不自动打包这些资源 —— 它只生成一个 HTML 文件,所有样式和脚本都硬编码在里面。所以只要没报错,打开就该能看;如果显示为白页、表格错位、按钮失效,基本是浏览器兼容性或缓存问题。
- Chrome / Edge 最稳,Firefox 某些版本会因 CSP 策略拦截内联脚本(表现为“Generate Report”按钮点不动)
- 别用 Safari 打开本地
file://协议的 AWR HTML —— 它默认禁用本地 JS 执行 - 清空浏览器缓存再试,尤其之前打开过老版本报告(CSS 类名可能冲突)
- 不要手动修改 HTML 文件里的
<script>或<style>块 —— 下次重跑报告会被覆盖
TXT 报告里关键指标为什么和 HTML 对不上
TXT 报告不是 HTML 的简单“去样式版”,它是独立渲染路径:HTML 用 PL/SQL 包 DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML,TXT 用 DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT。两者底层 SQL 和聚合逻辑一致,但浮点精度、单位缩写、列宽截断规则不同。
- CPU 使用率在 TXT 里可能显示为
12.34,HTML 里是12.3(四舍五入位数不同) - 等待事件名称在 TXT 中可能被截断(如
db file sequential read→db file sequen...),HTML 保持完整 - TXT 不显示“Top SQL with Metrics”里的执行计划摘要,这部分在 HTML 里有折叠面板,TXT 直接省略
- 如果发现某条 SQL 的 Elapsed Time 差异超过 5%,先检查是否跨了快照边界(
begin_snap/end_snap输入错误)
用 awrpti.sql 自动生成报告时如何指定格式
awrpti.sql 是 Oracle 提供的非交互式脚本,但它本身不支持直接传参选格式 —— 它只是封装了 awrrpt.sql 的调用逻辑。真正起作用的是你调用时的环境变量和脚本内部判断。
立即学习“前端免费学习笔记(深入)”;
- 必须提前设置
AWR_FORMAT环境变量:DEFINE AWR_FORMAT = 'HTML'或DEFINE AWR_FORMAT = 'TEXT' - 这个变量要在
@?/rdbms/admin/awrpti.sql执行前定义,否则默认走 HTML - 脚本里没有
IF AWR_FORMAT = 'TEXT'这类分支,它靠变量控制后续调用的包名(AWR_REPORT_HTMLvsAWR_REPORT_TEXT) - 别指望在 SQL*Plus 里用
SET AWR_FORMAT TEXT—— 这个变量只对awrpti.sql有效,且必须用DEFINE
最易忽略的一点:HTML 报告里的“Instance Top Activity”图表数据是 JS 渲染的,原始值藏在 HTML 注释里;而 TXT 完全没这层,想比对就得自己从 DBA_HIST_ACTIVE_SESS_HISTORY 里捞原始采样 —— 别光盯着报告表面数字。


















