Oracle DB - 锁定取消更新查询

时间:2014-01-17 06:45:07

标签: oracle11g sql-update

如果我有一个非常长的运行UPDATE查询需要几个小时,而我恰好在它正在运行的中间取消。

我收到以下消息: “用户请求取消当前操作”

  1. Oracle会自动回滚交易吗?
  2. 如果取消查询,是否仍会获取数据库锁?如果是这样,如何解锁?
  3. 如何检查哪个Update查询正在锁定数据库?
  4. 感谢。

1 个答案:

答案 0 :(得分:2)

取决于。

假设您正在使用的任何客户端应用程序正确实现了查询超时,并且错误指示超出了超时,那么Oracle将在抛出错误时开始回滚事务。一旦事务完成回滚,锁将被释放。但请注意,它可以轻松地回滚查询运行所需的时间。所以在释放锁之前可能需要一段时间。

另一方面,如果客户端应用程序没有正确实现取消,客户端可能没有通知Oracle取消该交易,因此它将继续。根据Oracle配置以及客户端的确切操作,数据库可能会在一段时间后检测到应用程序没有响应并终止连接(通过上面讨论的相同回滚过程)。或者Oracle可能最终继续处理查询。

您可以通过查询dba_waitersdba_blockers来查看哪些会话持有锁定以及哪些会话等待锁定。