`
sibyl_pisces
  • 浏览: 147701 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

PL/SQL中记录被另一个用户锁住的原因及处理方法

 
阅读更多

 

被锁的原因就是有人在你之前修改记录,此时oracle会通过事务锁锁住这个记录,而且这个修改记录的人还没有提交或回滚记录,接下来你又试图修改同一条记录,你就会被这个事务锁所阻塞。

 

处理方法很简单,可以有以下两种方法:

1. 找到在你之前修改记录的那个人,让他在他的修改记录的会话里做一下

    commit或rollback

 

2.用sysdba身份登录数据库,执行下面的SQL语句所查出来的命令:

 

  select Distinct 'alter system kill session '||chr(39)||b.sid||','||b.serial#||chr(39)||';'

   As cmd,b.username,b.logon_time 

   from v$locked_object a,v$session b

   where a.session_id=b.sid

   order by b.logon_time

 

执行cmd字段显示的命令即可。

回答人的补充   2011-04-11 14:14

注意之前的SQL查出来的是持有锁的所有会话,也可以加一句,查出锁定指定对象的会话

select Distinct 'alter system kill session '||chr(39)||b.sid||','||b.serial#||chr(39)||';'

As cmd,b.username,b.logon_time

from v$locked_object a,v$session b

where a.session_id=b.sid

AND a.object_id =

(select object_id from dba_objects

 where object_name = 'table_name' 

and owner = 'xxx'  and rownum = 1)

order by b.logon_time

 

table_name为这条记录所在的表,xxx为表的所有者(即这个表是属于哪个数据库用户的,如scott或是其他)。

 

 

http://wenwen.soso.com/z/q279366883.htm

 

分享到:
评论

相关推荐

    PLSQL中记录被另一个用户锁住的原因及处理方法.txt

    ### PLSQL中记录被另一个用户锁住的原因及处理方法 #### 背景与概念 在数据库管理系统(DBMS)中,多个用户或应用程序可能同时访问相同的数据资源。为了确保数据的一致性和完整性,数据库系统通常会采用锁机制来...

    oracle执行update语句时卡住问题分析及解决办法

    这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关闭连接,oracle就会将这条提交的记录锁住。由于我的java程序...

    普元启动服务失败的解决方法.pdf

    其次,EOS启动调试服务时无响应,可能是因为定时任务的表被锁住。此时,可以在PL/SQL Developer中执行SQL查询来解锁相关会话。执行如下SQL语句: ```sql select 'alter system kill session '''||b.SESSION_ID||','|...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。  系统预定义角色 预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下面我们就简单介绍些系统角色:  CONNECT...

    1.ocp1Z0-052.188答案解析 - 有目录

    - 如果需要避免锁住索引,可以选择在线重建索引(`ALTER INDEX ... REBUILD ONLINE`),这种方法可以在不影响用户的情况下减少碎片化。 #### 4. 您的测试数据库正在以NOARCHIVELOG模式运行。关于可以对数据库执行的...

Global site tag (gtag.js) - Google Analytics