某些表的操作无法完成

时间:2015-04-02 15:45:30

标签: oracle hibernate jpa oracle11g

我们有一个表TRANSMISSIONS(ID,NAME),表现得很有趣:

  • 在另一个引用TRANSMISSIONS.ID的表中添加外键的语句将无法完成
  • 向TRANSMISSIONS添加列的语句将无法完成
  • 禁用/删除唯一约束的语句将无法完成
  • 禁用/删除触发器的语句将无法完成

TRANSMISSION的主键是ID,NAME上还有一个唯一的约束 - 因此ID和NAME上都有索引。我们还有一个触发器,它使用序列为列ID创建值,因此INSERT语句不需要为ID提供值。

除了TRANSMISSIONS之外,还有两个表就像这样。对于其他表,上述陈述工作正常。

数据库在具有Hibernate的应用程序中使用,由于JPA配置不正确,我们在一段时间内为ID生成了高值。请注意,我们仅对“手动”INSERT语句使用触发器,并且Hibernate本身也使用序列生成ID值。

第一个想法是问题是由于高ID,但我们也遇到了从未有过如此高ID的表格的问题。

无论如何,我们怀疑索引可能会以某种方式碎片化并称为ALTER INDEX TRANSMISSIONS_PK SHRINK SPACE COMPACT,它已经通过但没有显示效果。

另外,我们想要调用ALTER TABLE TRANSMISSIONS SHRINK SPACE COMPACT,因为我们需要先调用ALTER TABLE TRANSMISSIONS ENABLE ROW MOVEMENT,它们从未完成。

我们有另一个数据库实例,它的表现不是那么有趣。所以我们认为在运行应用程序的过程中,数据库可能会以某种方式进入不一致的状态。

有人有什么建议可能已经失去控制/进入一个不一致的状态吗?

更多提示:

数据库中的任何对象都没有锁(根据v $ lock和v $ locked_object中的信息)

我们在SQL Developer中尝试了所有这些语句,并且还使用了SQLPlus(命令行工具)。

0 个答案:

没有答案