Heim > Datenbank > MySQL-Tutorial > 一次Oracle行级锁导致的问题

一次Oracle行级锁导致的问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 15:53:39
Original
1261 Leute haben es durchsucht

我在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,最好用同一个用户执行,非常快的执行了。

本文永久更新链接地址

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage