3

我想删除一个空的分区,但我知道无论何时执行 DROP 之类的分区 DDL 语句,oracle 都会将所有索引设置为不可用,因此,我应该添加UPDATE GLOBAL INDEXES到该语句中,尽管它看起来没有必要。

然后我想出了这篇文章,它说它不会将其标记为不可用,所以我决定对其进行测试。问题是我在两个 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 您希望保持索引可用,因为分区中没有数据(不重建索引)?

4

3 回答 3

1

到目前为止,我无法找出为什么它在放置中被标记为无效,但在另一个中却没有,但如果有人遇到同样的问题,有话要说。

始终运行它,UPDATE GLOBAL INDEXES因为如果分区为空,则不会花费任何时间来执行删除,并确保索引不会被标记为无效。因此,没有理由希望 oracle 不会标记它们

于 2013-10-17T12:11:44.177 回答
0

也许你可以在下面尝试,这在下跌期间保持指数有效性。ALTER TABLE t1 DROP PARTITION p5 UPDATE GLOBAL INDEXES;

于 2013-10-08T14:49:44.073 回答
0

是的..在分区表上创建索引时使用本地索引

于 2018-04-15T22:46:44.927 回答