问题描述
嗨,
我有一个巨大的分区表,有10亿行,由于某种原因,我们删除了索引,并在由于支持问题而重新创建索引时,我们发现我们有重复的行。
因此,我们在禁用模式下创建了索引,然后按分区重建了索引分区。现在,我们可以识别重复项,但不能删除它们,因为索引将是不可用的格式。然后,我们使用分区交换,并完成了该问题。
我在想在Oracle 12c中有一种方法,我们可以从本地索引分区不可用的分区中删除行。
还有一种快速的方法可以将非唯一索引更改为Oracle中的唯一索引。
问候!!
我有一个巨大的分区表,有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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




