暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 本地分区索引重建问题

askTom 2018-10-06
684

问题描述

嗨,

我有一个巨大的分区表,有10亿行,由于某种原因,我们删除了索引,并在由于支持问题而重新创建索引时,我们发现我们有重复的行。

因此,我们在禁用模式下创建了索引,然后按分区重建了索引分区。现在,我们可以识别重复项,但不能删除它们,因为索引将是不可用的格式。然后,我们使用分区交换,并完成了该问题。

我在想在Oracle 12c中有一种方法,我们可以从本地索引分区不可用的分区中删除行。

还有一种快速的方法可以将非唯一索引更改为Oracle中的唯一索引。

问候!!

专家解答

Now we can identify the duplicates but cannot delete those as the index would be in unusable format


不可用的索引不禁止删除,例如

SQL> create table t as select * from all_Objects;

Table created.

SQL>
SQL> create index ix on t ( object_id );

Index created.

SQL>
SQL> alter index ix unusable;

Index altered.

SQL>
SQL> delete from t where object_id < 100;

98 rows deleted.

SQL>
SQL> commit;

Commit complete.


如果要强制执行唯一性,则不需要索引是唯一的-您可以在该索引的顶部添加一个约束

SQL>
SQL> alter index ix rebuild;

Index altered.

SQL>
SQL> alter table t add constraint uq unique ( object_id ) ;

Table altered.



「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论