我想在oracle中创建一个物化视图(使用sql开发人员)。创建物化视图时出现死锁
我已经在一张小桌子上测试过了,一切正常。
我现在做它一个非常大的表,和阐述我得到以下错误的一些小时之后: “ORA-04020:死锁检测,同时试图锁定”
有没有办法避免它?或者因为桌子太大而不能做很多事情?
我想在oracle中创建一个物化视图(使用sql开发人员)。创建物化视图时出现死锁
我已经在一张小桌子上测试过了,一切正常。
我现在做它一个非常大的表,和阐述我得到以下错误的一些小时之后: “ORA-04020:死锁检测,同时试图锁定”
有没有办法避免它?或者因为桌子太大而不能做很多事情?
你的数据库中的其他东西有一个对象被锁定,你的查询需要被构建。
要找出哪个对象尝试;
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的所有时候,没有人可以在源表上工作?这可能是一个大问题... – Maik
这将取决于对桌子做什么。 – BriteSponge
嗯,我认为如果有人在我的桌子上做了一个选择,它不会锁定它,但是如果他更新桌子上的某一行而不是它。然后我有一个很大的问题,因为创建MV需要几个小时,在那个时候有人肯定会锁定桌子。有什么我可以做的吗? – Maik
查询会帮助从查询执行日志 – aviad
一些统计信息抱歉,但我不是很有经验......什么是查询执行日志?我在哪里可以找到它? – Maik
http://www.toadworld.com/platforms/oracle/w/wiki/376.tracing-sql-statement-execution也使用excution计划https://docs.oracle.com/database/121/TGSQL/tgsql_genplan。 htm#TGSQL95114 – aviad