Oracle 19c:AUTO STATS作业超时,如何忽略指定表?
Oracle 19c自动统计信息作业超时:忽略特定表的多种方案
当自动统计信息作业处理特定表出现超时,可以让作业忽略这些表,且锁定表统计信息并非唯一解决方案,以下是几种可行方案:
1. 设置表的自动统计信息目标为OFF
通过DBMS_STATS包修改表属性,直接让自动作业跳过该表:
EXEC DBMS_STATS.SET_TABLE_PREFS('你的模式名', '目标表名', 'AUTO_STATISTICS_TARGET', 'OFF');
这种方式仅阻止自动作业收集该表的统计信息,你仍可手动执行DBMS_STATS.GATHER_TABLE_STATS更新统计信息,适合需要手动控制更新时机的场景。
2. 锁定表统计信息
这是常用方案之一,锁定后自动作业会直接跳过该表:
EXEC DBMS_STATS.LOCK_TABLE_STATS('你的模式名', '目标表名');
注意:锁定后手动收集统计信息也会被阻止,需先解锁才能更新:
EXEC DBMS_STATS.UNLOCK_TABLE_STATS('你的模式名', '目标表名');
该方案适合数据几乎无变化、无需频繁更新统计信息的表。
3. 调整表的统计信息收集参数
若仍希望自动作业处理该表,但要避免超时,可调整收集时的采样比例或选项以减少耗时:
- 设置更低的采样比例:
EXEC DBMS_STATS.SET_TABLE_PREFS('你的模式名', '目标表名', 'ESTIMATE_PERCENT', '5'); -- 使用5%的采样率
- 简化列统计信息收集:
EXEC DBMS_STATS.SET_TABLE_PREFS('你的模式名', '目标表名', 'METHOD_OPT', 'FOR ALL COLUMNS SIZE 1');
这种方式既保留自动收集能力,又通过优化参数降低收集时间,适合数据变化频繁但无需高精度统计信息的场景。
方案选择建议
- 若表数据稳定、无需更新统计信息:选择锁定表统计信息
- 若需手动控制统计信息更新、不想让自动作业干扰:选择设置AUTO_STATISTICS_TARGET为OFF
- 若仍需自动收集、但要解决超时问题:选择调整收集参数
内容的提问来源于stack exchange,提问作者Tomic
相关产品推荐
相关产品推荐

