一次oracle行级锁导致的问题

Posted null

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一次oracle行级锁导致的问题相关的知识,希望对你有一定的参考价值。

分析问题:我在plsql/developer是用的system用户连接的数据库,而在crt用  sqlplus / as  sysdba 连接数据库,是sys用户。现在在plsql/developer中update了一个字段,没有commit,就直接在CRT上update了另一个字段,导致后者等待,应为已经有了行级锁,

解决问题:

.1、 用dba权限的用户查看数据库都有哪些锁

select a.username,a.sid,a.serial#,a.logon_time
from v$locked_object b,v$session a
where b.session_id=a.sid order by a.logon_time;

.2、根据sid查看具体的sql语句,如果sql不重要,可以kill
 
select sql_text from v$session a,v$sqltext_with_newlines b
  where DECODE(a.sql_hash_value, 0, prev_hash_value, sql_hash_value)=b.hash_value
  and a.sid=&sid order by piece;
 
3、查看当前的 SID  serial# 

SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,
s.terminal, s.logon_time, l.type
FROM v$session s, v$lock l
WHERE s.sid = l.sid
AND s.username IS NOT NULL
ORDER BY sid;

3、kill该事务
alter system kill session ‘ISD,serial#‘;
然后再次执行update,最好用同一个用户执行,非常快的执行了

以上是关于一次oracle行级锁导致的问题的主要内容,如果未能解决你的问题,请参考以下文章

oracle大量的行级锁对数据库整体性能有影响吗?

转 MySQL中的行级锁,表级锁,页级锁

MySQL:表级锁行级锁共享锁排他锁乐观锁悲观锁

Mysql中的行级锁表级锁页级锁

MySQL中的行级锁,表级锁,页级锁

MySQL中的行级锁表级锁页级锁