Oracle 23ai 中 AWR 报告仍可用但默认禁用,需确认 Diagnostic Pack 授权、STATISTICS_LEVEL=TYPICAL/ALL,并检查 AWR 快照是否启用;新增 AI Model Activity 和 Vector Search Load 模块,专用于分析向量化负载。

Oracle 23ai 中 AWR 报告仍可用,但默认不启用 —— 必须确认 Diagnostic Pack 授权且 STATISTICS_LEVEL 设为 TYPICAL 或 ALL,否则 awrrpt.sql 会报错或返回空内容。
为什么 awrrpt.sql 执行后没反应或报错 ORA-13516
这是最常踩的坑:Oracle 23ai 默认关闭 AWR(尤其在云服务或 Express Edition 部署中),即使数据库版本支持,也需显式启用。错误现象包括:
ORA-13516: AWR operation failed: Invalid operation for the current database edition- 执行
@?/rdbms/admin/awrrpt.sql后直接退出,无交互提示 - 查询
dba_hist_snapshot返回零行
验证与修复步骤:
- 检查授权:
SELECT * FROM v$option WHERE parameter = 'Diagnostic Pack';—— 必须返回TRUE - 检查参数:
SHOW PARAMETER statistics_level—— 若为BASIC,需用ALTER SYSTEM SET statistics_level = TYPICAL SCOPE=BOTH; - 确认快照控制:
SELECT * FROM dba_hist_wr_control;—— 若retention为 0,说明 AWR 被禁用,需先启用再运行DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT
生成报告时选错快照 ID 导致数据“看起来正常但毫无诊断价值”
23ai 中快照仍按时间粒度采集,但默认间隔可能被继承自模板或云平台策略(例如某些 OCI 实例设为 30 分钟而非传统 60 分钟)。直接用 SELECT snap_id, begin_interval_time FROM dba_hist_snapshot ORDER BY snap_id DESC 查到的 ID,未必覆盖你关心的业务时段。
实操建议:
- 不要只看最近 5 个快照;加条件过滤:
WHERE begin_interval_time BETWEEN SYSDATE - 1/24 AND SYSDATE(查最近 1 小时) - 对比两个快照时,确保它们属于同一数据库启动周期(查
startup_time列),避免跨重启导致的指标归零干扰 - 高峰期问题要抓「问题发生前 5 分钟」和「问题发生后 5 分钟」两个快照,而不是笼统选“高峰开始”和“高峰结束”
- 若需精确到秒级范围,改用 PL/SQL 调用:
DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML并传入l_bid/l_eid(快照 ID)或使用 OEM 的 Custom 时间范围功能
解读时忽略 23ai 新增的 AI 相关指标模块
Oracle 23ai 的 AWR 报告在原有结构基础上新增了 AI Model Activity 和 Vector Search Load 两个独立章节(位于 SQL Statistics 之后、Instance Efficiency 之前),它们不会出现在旧版报告中。
关键点:
-
AI Model Activity统计调用DBMS_VECTOR、UTL_TEXT.EMBED等向量化操作的执行次数、CPU/IO 消耗,高值意味着向量计算成为瓶颈 -
Vector Search Load显示近似最近邻(ANN)查询的延迟分布(P50/P95/P99)、缓存命中率,若Cache Hit %低于 70%,需检查VECTOR_CACHE_SIZE配置 - 这些模块仅在启用
VECTOR功能且有实际调用时才显示;若为空,不代表没开启 AI 能力,而是当时无相关负载 - OEM 图形界面中该部分默认折叠,需手动展开;命令行
awrrpt.sql生成的 HTML 报告中会自动包含,但 TEXT 格式完全不输出
AWR 在 23ai 中不是“能用就行”,它把 AI 负载当成了第一类公民;漏看 AI Model Activity 这一节,等于在分析一辆电动车时只查发动机转速表。


















