oracle

时间:2017-12-21 10:37:34

标签: database oracle oracle11g

我有一些带有分区(和suppartions)的oracle表。我的目标是,每当我创建一个新分区时,将所有统计信息从最新分区复制到新分区。

我找到了以下方法

  • dbms_stats.copy_table_stats
  • dbms_stats.get_table_stats,然后是dbms_stats.set_table_stats
  • dbms_stats.export_table_stats,然后是dbms_stats.import_table_stats

但是,我找不到这些方法之间的区别。

据我所知,copy_table_stats是最新添加的,如果我没有记错,它可以在10.2.0.4版本之后使用。 get / set和export / import方法需要一些统计操作才能工作(例如,在stats表中更新C2)。

我说错了吗?我没有找到记录的地方,每个方法如何处理suppartition,例如copy_table_stats我需要在覆盖分区统计信息后复制子分区统计信息。这对其他方法也是如此吗?

一般来说,这三种方法之间有什么显着差异吗?我应该考虑什么?它在某处记录了吗?

1 个答案:

答案 0 :(得分:1)

如果要重新设置和修改某些统计值,可能需要使用 get / set (可能还有dbms_stats.convert_raw_value)。

导出/导入非常有用,目标是在另一个实例或删除表上释放(应用)统计信息,然后重新创建并复制(某些)统计信息。在这种情况下,您需要辅助表来保存统计数据。

复制统计数据是实现目标的理想和典型方式。

<强>更新

要查找快速说明,只需在Google中输入关键字和“白皮书”

(我在下面找到了使用white paper dbms_stats copy_stats

的链接

Understanding Optimizer Statistics

以及所有最新的更改

Understanding Optimizer Statistics With Oracle Database 12c Release 2