码迷,mamicode.com
首页 > 数据库 > 详细

Oracle锁表的原因及解锁方法

时间:2015-12-28 18:28:18      阅读:375      评论:0      收藏:0      [点我收藏+]

标签:

整个系统突然挂掉,su 无法切换用户,修改用户最大进程数后可以登录,重启服务后系统仍不正常,
后发现为 plsql 上修改 T_XXX_XXXX 表时有事务未提交,因此排查原因为更改数据没有提交事务,数据库就将表锁住。
提交或者回滚事务后系统正常

产生的原因最大的可能就是更改数据没有提交事务,数据库就将表锁住!所以在更新时不要用select * from a for update这样的语句很容易锁表,可能用select *,t.rowid from t 这样的语句代替,这个也是数据库推荐使用的语句。

解锁的方法: 1、查看锁表进程:

SQL:select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID;

2、将锁住的进程杀掉

SQL:alter system kill session SID,serial#;

Oracle锁表的原因及解锁方法

标签:

原文地址:http://www.cnblogs.com/zealotpz/p/5083200.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!