delete语句执行不下去,删除不了数据,解决方法

来源:互联网 发布:多普达s1软件下载 编辑:程序博客网 时间:2024/04/20 00:22

    通过v$locked_object 和 v$session查看下你不能删除数据的表是否被其它session锁住了
如果锁住了,你肯定就不能删除,只能等待那个session事务提交或回滚你才能做
找到那个sid,然后kill掉

 --首先查看有哪些锁:

select/*+ rule */ s.username, decode(l.type,'TM','TABLE LOCK','TX','ROW LOCK',null) lock_level, o.owner, o.object_name, o.object_type, s.sid,s.serial#, s.terminal, s.machine, s.program, s.osuserfrom v$session s,v$lock l,dba_objects owhere l.sid = s.sidand l.id1= o.object_id(+)and s.username isnot null

--如果发生了锁等待,看是谁锁了表而引起谁的等待--以下的语句可以查询到谁锁了表,而谁在等待。 如果有子节点,则表示有等待发生:

select/*+ rule */ lpad('',decode(l.xidusn ,0,3,0))||l.oracle_usernameuser_name, o.owner, o.object_name, o.object_type, s.sid, s.serial#from v$locked_object l,dba_objects o,v$session swhere l.object_id=o.object_idand l.session_id=s.sidorderby o.object_id,xidusndesc

--找到引起等待的session,杀掉该session:

 alter systemkill session'sid,serial#';

原创粉丝点击