搜过了,但是还是没有找出怎样select出发生死锁的表名。

解决方案 »

  1.   

    select substr(object_name,1,30),substr(os_user_name,1,20) from v$locked_object,user_objects
    where v$locked_object.object_id = user_objects.object_id光说不练之龙飞虎
      

  2.   

    set linesize 200
    col machine format a10
    col username format a10
    col objectname format a10
    col program  format a10
    select a.object_name objectname,b.session_id,c.serial#,c.program program,c.username username,c.command,c.machine machine,c.lockwait from all_objects a,v$locked_object b,v$session c where a.object_id =b.object_id and c.sid=b.session_id 
    /
      

  3.   

    工欲善其事 必先利其器--使用oracle客户端工具:方法1(Oracle Tool)
    开始菜单-》程序-》oracle-oraHome92->Enterprise Manager Console 
    选择独立登录  然后选择从本地配置文件登录。
    选择锁表的数据库 -》例程-》锁 找到被锁的表 中断会话即可方法二(PL/SQL)
    进入Tools -> Sessions 
    找到锁表的进程-》点击右键 kill掉方法三
    找到sid,serial#
    alter system kill session 'sid,serial#'
      

  4.   

    Select a.sid,a.serial#,a.username,a.status,a.program,b.name,a.osuser
    from v$session a,audit_actions b 
    where a.command=b.action
    And  username='&1';
    ------谁被锁住?
    Select a.sid,a.serial#,a.username,A.LOCKWAIT,a.status,a.program,b.name
    from v$session a,audit_actions b 
    where a.command=b.action
    AND LOCKWAIT IS NOT NULL;
    ------谁在锁表?
    Select a.sid,a.serial#,a.username,A.LOCKWAIT,a.status,a.program,b.name
    from v$session a,audit_actions b 
    where a.command=b.action
    AND STATUS='ACTIVE';Select sl.username, sl.sid, sl.serial#
      from v_$lock l1, v$session s1
     where exists (select * from v_$lock l2, v$session s2
                    where l2.sid=s2.sid and l2.id1=l1
                      and s2.lockwait=l2.kaddr
                      and request=0
                      and l1.sid=s1.sid) ;