awr导出导入可完整迁移性能快照等数据,不依赖源库在线或远程直连,生成自包含.dmp文件,支持跨版本对比分析及隔离环境报告生成。
因为awr导出导入能完整迁移特定时间段的性能快照、sql执行计划、等待事件和系统统计量,不依赖源库在线状态,也不需要远程直连生产环境。
导出后数据可脱离原库独立分析
AWR导出生成的是自包含的awrdat_*.dmp文件,里面打包了WRH$_*和WRM$*表的历史数据。导入到测试库后,你就能用@?/rdbms/admin/awrrpt.sql或@?/rdbms/admin/awrddrpt.sql生成和生产环境完全一致的HTML/TEXT报告——哪怕源库已重启、归档被清理、甚至实例已下线。
避免远程直连高风险操作
很多生产库禁止DBA从外部IP直连,尤其不能用sysdba权限远程登录。导出导入绕过了这个限制:只需在本地有权限的机器上运行awrextr.sql,把.dmp文件拷走;分析人员在隔离环境里用awrload.sql导入即可。整个过程不触碰生产库网络策略,也不引入额外连接负载。
支持跨版本/跨平台对比诊断
比如某SQL在11g生产库突然变慢,但测试库是12c。你可以把11g的AWR数据导出,导入到12c测试库(需满足版本兼容性,如11.2.0.4+可导入到12.1+),再用awrddrpt.sql做“两个时间点”或“两个数据库”的差异报告。这种对比必须依赖导出的数据,而不是实时查询DBA_HIST_*视图。
常见踩坑点:文件名后缀和目录权限
导入时awrload.sql提示ORA-39001: 参数值无效,大概率是因为你输入了带.dmp的完整文件名(如E:\DBwork\awrdat_1737.dmp)。脚本内部会自动加.dmp,所以你只输E:\DBwork\awrdat_1737就行。
另一个高频问题是目录对象权限没给够:create directory dump_awr as 'E:\DBwork'之后,必须显式执行grant read,write on directory dump_awr to system——注意不是dump_dir,名字要和create时一致;且system用户必须有ADMINISTER DATABASE TRIGGER等额外权限才能完成导入。
真正容易被忽略的是:导入后的AWR数据默认归属AWR_STAGE用户,而这个用户在目标库中可能不存在或未解锁。报错ORA-20106: AWR tables do not exist for the 'AWR_STAGE' user时,得先确认该用户是否存在、是否被锁定、默认表空间是否在线。











