有时可以使用Django

问题描述:

无法删除Oracle数据库中的行我有一个单元测试,其中包含的代码有时可以使用Django

Site.objects.get(name="UnitTest").delete() 

下面一行,这只是正常工作至今。但是,该声明目前悬而未决。它会永远坐在那里试图执行删除。如果我只是说

print Site.objects.get(name="UnitTest") 

然后它工作,所以我知道它可以检索该网站。没有其他程序连接到Oracle,所以它不像是有两个开发人员以某种方式相互踩踏。我假设某种表锁没有被释放。

因为没有关闭Oracle数据库并将其重新启动,我该如何释放该锁或任何阻止我的东西?我不想求助于数据库关闭,因为在将来可能会破坏其他一些开发人员。

编辑:贾斯汀建议我看看DBA_BLOCKERSDBA_WAITERS表。不幸的是,我根本不理解这些表格,我不确定我在找什么。因此,下面是与我相关的信息:

DBA_WAITERS表有182个锁定类型为“DML”的条目。 DBA_BLOCKERS表有14个条目,其会话ID都与我们的应用程序代码使用的用户名相对应。

由于这需要解决,我将重新启动Web服务器,但如果此问题重复出现,我仍然希望了解如何解决此问题。当谈到Oracle管理时,我是一个真正的新手,并且过去主要只是使用MySQL,所以我肯定超出了我的元素。

编辑#2:事实证明,尽管我认为,另一名程序员的确在与我同时访问数据库。那么未来发现这个最好的方法是什么?也许我应该关闭我的程序,然后查询DBA_WAITERSDBA_BLOCKERS表以确保它们是空的。

+0

DBA在哪里? – 2008-10-15 15:32:15

从单独的会话中,您可以查询DBA_BLOCKERS和DBA_WAITERS数据字典表并发布结果吗?这会告诉你,你的会话是否被其他会话锁定的锁定以及其他会话持有的锁定所阻塞。