【发布时间】:2013-10-08 14:30:28
【问题描述】:
我想删除一个空的分区,但我知道每当您执行像 DROP 这样的分区 DDL 语句时,oracle 会将所有索引设置为不可用,因此,我应该在语句中添加UPDATE GLOBAL INDEXES,尽管它看起来没有必要。
然后我想出了this post,它说它不会将其标记为不可用,所以我决定对其进行测试。问题是我在两个 oracle 版本中对其进行了测试,但效果不同!
有两个实例:
- DBa(
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production) - DBb(
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production)
在 DBa 中,它将它们标记为无效,而在 DBb 中,它包含与其他 db(用 exp/imp 克隆)相同的数据,它成功删除而不将它们标记为不可用。
是否可以明确告诉 Oracle 您希望保持索引可用,因为分区中没有数据(不重建索引)?
【问题讨论】:
-
如果您发现差异,这可能取决于您的统计数据是何时建立的。我使用 11.2,并且在截断(或删除)分区时总是看到标记为 UNUSABLE 的索引。现在,如果您要截断 Oracle 知道为空的空分区(您在它为空后构建统计信息),那么也许 Oracle 足够聪明,知道您的 truncate 语句不会影响任何内容,并且只是将索引保留为 VALID。只是猜测
标签: oracle oracle11g database-partitioning drop-table