我不是一个DBA,但我有一个数据库的问题,它一直在锁定表,并因此造成一个大混乱。我从oracle dba那里得到了一些信息,如果有人能帮我找到问题的关键,或者告诉我需要做什么,我会在这里输入更多信息:
我有一份来自甲骨文的大报告,但我不明白95%的数据。
最佳答案
这看起来像常规行级锁定。一行一次只能由一个用户修改。数据字典包含有关谁被阻止以及谁正在执行阻止的信息:
--Who's blocking who?
select
blocked_sql.sql_id blocked_sql_id
,blocked_sql.sql_text blocked_sql_text
,blocked_session.username blocked_username
,blocking_sql.sql_id blocking_sql_id
,blocking_sql.sql_text blocking_sql_text
,blocking_session.username blocking_username
from gv$sql blocked_sql
join gv$session blocked_session
on blocked_sql.sql_id = blocked_session.sql_id
and blocked_sql.users_executing > 0
join gv$session blocking_session
on blocked_session.final_blocking_session = blocking_session.sid
and blocked_session.final_blocking_instance = blocking_session.inst_id
left join gv$sql blocking_sql
on blocking_session.sql_id = blocking_sql.sql_id;
如果您了解系统,通常更容易关注“谁”在执行阻塞,而不是“什么”被阻塞。上面的查询只返回几个公共列,但是这些表中还有许多其他列可能有助于标识进程。
关于database - oracle表锁定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25978471/