首页 > 代码库 > 解决锁表问题

解决锁表问题

在数据共享的时代,当多个用户同时操作同一资源是,很容易发生锁表现象。同一时刻,多个用户操作同一资源时,如果不及时commit,很容易发生锁表现象。

解决办法:

1)通过sys用户连接pl/sql development查询:

SQL>select t2.username, t2.sid, t2.serial#, t2.logon_time

from v$locked_object t1, v$session t2

where t1.session_id = t2.sid

order by t2.logon_time;

结果如下:

clip_image002

2)根据上面的结果SID执行下面的语句查找具体的锁表语句:

SQL>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;

结果如下:该结果即是产生锁表的语句,因为其忘记提交而产生。

clip_image004

3)记录2)中的语句,并且杀死会话,如果会话有必要,在执行一次即可。

SQL>alter system kill session ‘125,7‘;

解决锁表问题