我确实有一个很大的迁移过程,其中有一个场景,它试图在一个具有主键约束和唯一索引的表中插入一行。在插入之前禁用约束(使用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
答案 0 :(得分:2)
如果索引不是UNIQUE,则可以设置SKIP_UNUSABLE_INDEXES = true,它应该有效。 但是,在您的情况下,由于索引是唯一的,我不认为您可以这样做。
http://docs.oracle.com/cd/B28359_01/server.111/b28320/initparams229.htm
答案 1 :(得分:0)
为具有不可用主键的所有行创建代理键。