首页 > 解决方案 > 无法并行运行收集统计信息?

问题描述

我们的数据库有一个包含数百万行的巨大表。我们需要收集其统计信息以改进优化器的基于成本的计划。为了更快地收集它,我们尝试对表使用并行性,将 table pref 'DEGREE' 设置为

DBMS_STATS.AUTO_DEGREE

此外,更改会话以启用并行 dml。但是当我们运行以下命令时,gather 并没有并行运行,而是在一个会话中完成。

dbms_stats.gather_table_stats(i_owner,i_table_name,estimate_percent => dbms_stats.auto_sample_size,no_invalidate => FALSE ,cascade => TRUE);

一些在线搜索建议删除 estimate_percent 参数,但没有帮助。有谁知道为什么它不并行运行?

相同的逻辑应用于另一个模式,但在那里一切正常。是否有任何特权可以让它发挥作用?用户已经拥有对 dbms_stat 的执行权限。

编辑:表有 1 个位图和 2 个普通索引。我读到不能并行收集位图索引,这可能是原因吗?即使是,它有2个正常索引,它们不应该并行收集吗?

标签: oraclestatisticsoracle19c

解决方案


推荐阅读