我遇到了一些我无法理解的情况。 我已经为DB创建了补丁,它删除了约束(私钥),然后丢弃了绑定到约束的索引。它在测试环境中几次完美无缺。但是当我们最终在prod上运行时,它在第一个索引上崩溃了。重新创建测试数据库以便从生产中进行几次测试(但我不知道它是如何完成的)并且没有任何问题。我们测试的时候怎么可能没有发生错误?
答案 0 :(得分:0)
删除约束也可能会丢弃支持索引,这取决于首先创建约束和索引的方式,因此您的脚本应该检查它。
创建非唯一索引然后添加使用这些索引的主要和唯一约束更加健壮,这样您就可以删除约束而不会失去使用索引的好处。
此处记录了基于现有或系统生成的索引删除约束时的行为差异:http://docs.oracle.com/database/121/SQLRF/clauses002.htm#CJAGEBIG