Chinaunix首页 | 论坛 | 博客
  • 博客访问: 772562
  • 博文数量: 180
  • 博客积分: 4447
  • 博客等级: 上校
  • 技术积分: 1582
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-03 14:51
文章分类

全部博文(180)

文章存档

2014年(6)

2013年(8)

2011年(125)

2009年(35)

2008年(1)

2007年(5)

分类: Oracle

2011-01-13 14:10:00

  1. 【SQL语句】--ORACLE锁表查询(转)
  2. 2009-11-02 22:19

  3. SELECT /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username User_name,
  4. o.owner,o.object_name,o.object_type,s.sid,s.serial#
  5. FROM v$locked_object l,dba_objects o,v$session s
  6. WHERE l.object_id=o.object_id
  7. AND l.session_id=s.sid
  8. ORDER BY o.object_id,xidusn DESC
  9. //
  10. 如果发生了锁等待,我们可能更想知道是谁锁了表而引起谁的等待
  11. 以上的语句可以查询到谁锁了表,而谁在等待。
  12. 以上查询结果是一个树状结构,如果有子节点,则表示有等待发生。
  13. 如果想知道锁用了哪个回滚段,还可以关联到V$rollname,其中xidusn就是回滚段的USN


  14. 找出谁锁定的记录,kill掉就行了。

  15. alter system kill session '133,3506' ;

  16. 我写的脚本,有点慢,将就着用吧
  17. --kill session语句
  18. alter system kill session'50,492';

  19. --以下几个为相关表
  20. SELECT * FROM v$lock;
  21. SELECT * FROM v$sqlarea;
  22. SELECT * FROM v$session;
  23. SELECT * FROM v$process ;
  24. SELECT * FROM v$locked_object;
  25. SELECT * FROM all_objects;
  26. SELECT * FROM v$session_wait;


  27. --1.查出锁定object的session的信息以及被锁定的object名
  28. SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username,
  29.        l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time
  30.     FROM v$locked_object l, all_objects o, v$session s
  31.    WHERE l.object_id = o.object_id
  32.      AND l.session_id = s.sid
  33. ORDER BY sid, s.serial# ;

  34. --2.查出锁定表的session的sid, serial#,os_user_name, machine name, terminal和执行的语句
  35. --比上面那段多出sql_text和action
  36. SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#,
  37.        l.os_user_name,s.machine, s.terminal,a.sql_text, a.action
  38.      FROM v$sqlarea a,v$session s, v$locked_object l
  39.     WHERE l.session_id = s.sid
  40.       AND s.prev_sql_addr = a.address
  41. ORDER BY sid, s.serial#;
  42.      
  43. --3.查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode
  44. SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,
  45.        s.terminal, s.logon_time, l.type
  46.     FROM v$session s, v$lock l
  47.    WHERE s.sid = l.sid
  48.      AND s.username IS NOT NULL
  49. ORDER BY sid;
阅读(3525) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~