【问题标题】:Deadlock when creating a materialized view创建物化视图时出现死锁
【发布时间】:2016-09-16 07:19:57
【问题描述】:

我正在尝试在 oracle 中创建一个物化视图(使用 sql 开发人员)。

我在一张小桌子上测试过,一切正常。

现在我在一张非常大的桌子上做这件事,经过几个小时的精心设计,我收到以下错误: "ORA-04020: 尝试锁定时检测到死锁"

有办法避免吗?还是因为桌子太大而不能做很多事情?

【问题讨论】:

标签: oracle deadlock materialized-views


【解决方案1】:

您的数据库中的其他内容有一个锁定的对象,您的查询需要该对象才能被构建。

要找出尝试的对象;

SELECT vo.object_id, obj.object_name, vo.oracle_username, vo.os_user_name, vo.session_id
  FROM v$locked_object vo
       INNER JOIN all_objects obj
       ON vo.object_id = obj.object_id

查找您的物化视图将尝试使用的对象,您应该看到哪个用户锁定了该对象。

找到用户并要求他们提交或回滚他们正在做的任何事情。

【讨论】:

  • 感谢您的提示。这是否意味着在 oracle 尝试创建 MV 的所有时间里,没有人可以在源表上工作?这可能是个大问题……
  • 好吧,我假设如果有人在我的桌子上进行选择,它不会锁定它,但如果他更新了桌子上的某些行,它会锁定它。然后我遇到了一个大问题,因为创建 MV 需要几个小时,并且在那个时候肯定有人会在某个时候锁定表。有什么我可以做的吗?
猜你喜欢
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
  • 2020-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
相关资源
最近更新 更多