Home > Database > Mysql Tutorial > 一次Oracle行级锁导致的问题

一次Oracle行级锁导致的问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-07 15:53:39
Original
1258 people have browsed it

我在plsql/developer是用的system用户连接的数据库,而在crt用 sqlplus / as sysdba 连接数据库,是sys用户。现在在plsql/deve

发现问题:今天开发同事让给修改一行数据的某几个字段,非常之简单的操作,确因为对Oracle锁机制的理解不到位导致问题。

我同时用plsql/developer 和CRT两种工具都连接上了数据库,然后打算在plsql/developer上update一个字段,,在CRT上update一个字段(我也不知道当时是怎么想的,哈哈)然后就莫名其妙的夯住了。。。。。由于自己经验和学识不足,还傻傻的等待中,还以为是数据量太大呢,原来是锁的原因,

分析问题:我在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、kill该事务
alter system kill session '339,13545';
然后再次执行update,最好用同一个用户执行,非常快的执行了。

本文永久更新链接地址

Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template