我想删除一个空的分区,但我知道oracle将所有索引设置为不可用,无论何时执行分区DDL语句(如DROP),因此,我应该将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 (用exp/imp克隆),它会成功删除而不标记它们不可用。
是否可以明确地告诉Oracle要保持索引可用,因为在该分区中没有数据(无需重建索引)?
如果您看到不同之处,则可能取决于您的统计信息的构建时间。我使用11.2,并且在截断(或删除)分区时,我总是看到标记为UNUSABLE的索引。现在,如果你截断了一个Oracle知道为空的空分区(你在建立统计信息后是空的),那么PERHAPS Oracle足够聪明地知道你的truncate语句不会影响任何内容,并且简单地将索引保留为VALID。只是猜测虽然 – tbone