如何授权AWR报告生成_GRANT SELECT ANY DICTIONARY诊断权限

生成AWR报告需要SELECT ANY DICTIONARY权限,因为awrrpt.sql脚本依赖DBA_HIST_、WRH_等数据字典视图,而这些视图仅对SYS或拥有该权限的用户开放;普通DBA角色不包含此权限,导致ORA-00942等错误。为什么生成AWR报告需要 SELECT ANY DICTIONARY?因为 awrrpt.sql 脚本在后台大量依赖 dba_hist_*、wrh_\* 等数据字典视图(如 dba_hist_sqlstat、dba_hist_sysmetric_summary),而这些视图默认只对 sys 或拥有 select any dictionary 权限的用户开放。普通 dba 角色不自动包含该权限------这是很多人执行 @?/rdbms/admin/awrrpt 时突然报 ora-00942: table or view does not exist 的根本原因。如何安全授予诊断权限(非SYS用户)不要直接给应用账号或开发账号授权,应创建专用诊断账号并最小化授权:用 SYS 登录: sqlplus / as sysdba创建只读诊断用户(示例名 awr_reader):CREATE USER awr_reader IDENTIFIED BY "StrongPass123!" DEFAULT TABLESPACE users QUOTA 1M ON users;授予必要权限(仅限读取,不含修改/删除):GRANT CONNECT TO awr_reader;\GRANT SELECT ANY DICTIONARY TO awr_reader;\GRANT SELECT ON dba_hist_wr_control TO awr_reader;验证是否能查核心视图:SELECT snap_interval, retention FROM dba_hist_wr_control;(非SYS用户必须能查此视图才能运行 awrrpt.sql)常见错误现象与绕过陷阱授了 DBA 角色却仍失败?这是因为 DBA 角色默认不包含 SELECT ANY DICTIONARY(从 12c 起更严格)。典型报错包括:ORA-00942: table or view does not exist → 实际是查 WRHLATCH 等基表失败ORA-01031: insufficient privileges → 在调用 DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML 时触发脚本卡在"选择快照范围"步骤后无响应 → 很可能因权限不足导致内部查询超时注意:SELECT_CATALOG_ROLE 不足以替代 SELECT ANY DICTIONARY,它不覆盖 WRH_\* 和 WRI* 等 AWR 特有基表。 有道翻译AI助手 有道翻译提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译、网页翻译、文档翻译、PDF翻

相关推荐
带金箍的至尊宝几秒前
系统架构设计师笔记 05:第2章硬件与软件基础,冯诺依曼结构怎么考
数据库·笔记·系统架构
蟕初的梦想24 分钟前
Claude Haiku 5.5 效能实测与场景应用指南
数据库·人工智能·大模型
专注API从业者39 分钟前
告别复杂页面解析,OpenClaw 快速搭建电商商品监控与数据分析脚本
大数据·数据库·python·数据挖掘·数据分析
naturliche1 小时前
sgx支持数据库环境配置,编译,debug
数据库·编译·sgx
王立志_LEO1 小时前
HTTPX 完整用法总结
python
ggb喔1 小时前
52pojie 的图片工具:为什么无损转换后体积涨了 6 倍、照片方向还是歪的
图像处理·python·算法·计算机视觉·图形渲染·媒体
hnxaoli1 小时前
win10小程序(二十三)新建带时间文件夹
python
SelectDB1 小时前
Apache Doris x Fluss:面向湖流一体的统一查询与分析
大数据·数据库·数据分析
云贝贝贝1 小时前
Oracle 备份恢复实战:RMAN 备份、恢复与误删闪回
数据库
java1234_小锋1 小时前
【技术专题】Mysql8 数据库 - Mysql8 触发器
数据库·mysql·mysql8