无法使用索引的奇怪行为 - oracle

时间:2012-12-13 12:57:46

标签: oracle indexing

我确实有一个很大的迁移过程,其中有一个场景,它试图在一个具有主键约束和唯一索引的表中插入一行。在插入之前禁用约束(使用SQL开发人员检查)并且索引标记为不可用(使用SQL developr再次检查它)。但是当插入它给出错误时仍然是

01502. 00000 -  "index '%s.%s' or partition of such index is in unusable state"

所以我想尝试从SQL开发人员手动执行查询,结果仍然相同。我甚至明确地尝试设置会话(和系统)跳过像这样的

的不可用索引
BEGIN
EXECUTE IMMEDIATE 'ALTER SESSION SET SKIP_UNUSABLE_INDEXES = TRUE';
single row insert line
END;

但仍然是同样的错误。我的理解是,如果禁用约束;索引不可用,我们跳过我们应该能够插入的不可用索引。这是对的吗?我在这里错过了一些非常微不足道的东西吗?任何建议/帮助表示赞赏。

PS:Oracle 11.2.0.1.0

2 个答案:

答案 0 :(得分:2)

如果索引不是UNIQUE,则可以设置SKIP_UNUSABLE_INDEXES = true,它应该有效。 但是,在您的情况下,由于索引是唯一的,我不认为您可以这样做。

http://docs.oracle.com/cd/B28359_01/server.111/b28320/initparams229.htm

答案 1 :(得分:0)

为具有不可用主键的所有行创建代理键。