故障修复步骤:1. 检查并确保DBMS_WORKLOAD_REPOSITORY包可用,执行SELECT * FROM DBA_HIST_SQLSTAT WHERE SQL_ID IS NOT NULL; 如果无结果,需导入工作负载数据。2. 使用DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT创建快照。3. 重试原查询。远程处理:通过Data Pump导出诊断数据,传输至支持环境分析。
来源1
ORA-30446: missing valid workload query. Cause: There is no valid workload query available for the requested time period. Action: Choose a different time period or create workload data before attempting to access workload objects.
来源2
要解决ORA-30446错误,首先验证AWR历史数据是否存在。运行以下查询检查:SELECT snap_id, begin_interval_time, end_interval_time FROM dba_hist_snapshot ORDER BY snap_id DESC; 如果没有足够的快照,等待自动捕获或手动创建。
来源3
在远程环境中,收集诊断包:exec DBMS_WORKLOAD_REPOSITORY.create_snapshot; 然后导出AWR报告:$ORACLE_HOME/bin/awrrpt.sql。发送报告文件给Oracle支持团队进行分析。
来源4
另一个常见原因是SQL调优集缺失。确保执行过SQL Tuning Advisor,并有有效的workload。修复命令:BEGIN DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'your_sql_id'); END; /
来源5
对于RAC环境,检查所有节点的AWR仓库同步。使用srvctl status database确认,然后在每个实例运行快照创建。
来源6
FAQ:
Q: ORA-30446何时出现?
A: 当AWR中缺少指定时间段的有效工作负载查询时。
Q: 如何快速创建工作负载?
A: 执行DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT。
Q: 远程修复需要什么工具?
A: Data Pump和AWR报告生成脚本。
Q: 错误是否影响数据库运行?
A: 不影响,仅调优功能受限。