----------------------------------
--常用:锁表查询相关
----------------------------------
-- 同时可用如下命令来kill掉当前锁表的项:;
--alter system kill session 'sid, serial#';

--如果发生了锁等待,我们可能更想知道是谁锁了表而引起谁的等待 
--如果想知道锁用了哪个回滚段,还可以关联到V$rollname,其中xidusn就是回滚段的USN 
--以下几个为相关表
SELECT * FROM v$lock;
SELECT * FROM v$sqlarea;
SELECT * FROM v$session;
SELECT * FROM v$process;      
SELECT * FROM v$locked_object;  
SELECT * FROM all_objects;  
SELECT * FROM v$session_wait;

--以下的SQL语句列出当前数据库建立的会话情况: 
--注意,上例中SID为1到7(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。
select sid, serial#, username, program, machine, status from v$session;

--查看数据库引起锁表的SQL语句:
SELECT A.USERNAME,
       A.MACHINE,
       A.PROGRAM,
       A.SID,
       A.SERIAL#,
       A.STATUS,
       C.PIECE,
       C.SQL_TEXT
  FROM V$SESSION A, V$SQLTEXT C
 WHERE A.SID IN (SELECT DISTINCT T2.SID
                   FROM V$LOCKED_OBJECT T1, V$SESSION T2
                  WHERE T1.SESSION_ID = T2.SID)
   AND A.SQL_ADDRESS = C.ADDRESS(+)
 ORDER BY C.PIECE;

--查看数据库锁的情况必须要有DBA权限,可以使用一下SQL 语句:
SELECT t2.username, t2.sid, t2.serial#, t2.logon_time
  FROM v$locked_object t1, v$session t2
 WHERE t1.session_id = t2.sid
 ORDER BY t2.logon_time;

--查看被锁的表
SELECT P.SPID,
       A.SERIAL#,
       C.OBJECT_NAME,
       B.SESSION_ID,
       B.ORACLE_USERNAME,
       B.OS_USER_NAME
  FROM V$PROCESS P, V$SESSION A, V$LOCKED_OBJECT B, ALL_OBJECTS C
 WHERE P.ADDR = A.PADDR
   AND A.PROCESS = B.PROCESS
   AND C.OBJECT_ID = B.OBJECT_ID;

------------------------------
--1.查出锁定object的session的信息以及被锁定的object名
------------------------------
SELECT l.session_id sid,
       s.serial#,
       l.locked_mode,
       l.oracle_username,
       l.os_user_name,
       s.machine,
       s.terminal,
       o.object_name,
       s.logon_time
  FROM v$locked_object l, all_objects o, v$session s
 WHERE l.object_id = o.object_id
   AND l.session_id = s.sid
 ORDER BY sid, s.serial#;
------------------------------
--2.查出锁定表的session的sid, serial#,os_user_name, machine name, terminal和执行的语句
--比上面那段多出sql_text和action
------------------------------
SELECT l.session_id sid,
       s.serial#,
       l.locked_mode,
       l.oracle_username,
       s.user#,
       l.os_user_name,
       s.machine,
       s.terminal,
       s.PROGRAM,
       a.sql_text,
       a.SQL_ID,
       a.action
  FROM v$sqlarea a, v$session s, v$locked_object l
 WHERE l.session_id = s.sid
   AND s.SQL_ADDRESS = a.address
 ORDER BY sid, s.serial#;
------------------------------
--3.查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode 
------------------------------
  SELECT s.sid,
         s.serial#,
         s.username,
         s.schemaname,
         s.osuser,
         s.process,
         s.machine,
         s.terminal,
         s.logon_time,
         l.type
    FROM v$session s, v$lock l
   WHERE s.sid = l.sid
     AND s.username IS NOT NULL
   ORDER BY sid;

/*
SELECT A.OWNER, --OBJECT所属用户
       A.OBJECT_NAME, --OBJECT名称(表名)
       B.XIDUSN,
       B.XIDSLOT,
       B.XIDSQN,
       B.SESSION_ID, --锁表用户的session
       B.ORACLE_USERNAME, --锁表用户的Oracle用户名
       B.OS_USER_NAME, --锁表用户的操作系统登陆用户名
       B.PROCESS,
       B.LOCKED_MODE,       
       C.MACHINE, --锁表用户的计算机名称(例如:WORKGROUP\UserName)
       C.STATUS, --锁表状态
       C.SERVER,
       C.SID,
       C.SERIAL#,
       C.PROGRAM --锁表用户所用的数据库管理工具(例如:ob9.exe)
  FROM ALL_OBJECTS A, V$LOCKED_OBJECT B, SYS.GV_$SESSION C
 WHERE A.OBJECT_ID = B.OBJECT_ID
   AND B.PROCESS = C.PROCESS(+)
 ORDER BY 1, 2;

SELECT A.USERNAME,       
       A.MACHINE,      
       A.PROGRAM,       
       A.SID,       
       A.SERIAL#,       
       A.STATUS,       
       C.PIECE,       
       C.SQL_TEXT
  FROM V$SESSION A,       
       V$SQLTEXT C
 WHERE A.SID IN (SELECT DISTINCT T2.SID                 
                   FROM V$LOCKED_OBJECT T1,                        
                        V$SESSION T2                 
                  WHERE T1.SESSION_ID = T2.SID)      
   AND A.SQL_ADDRESS = C.ADDRESS(+)
 ORDER BY C.PIECE;

--
--最近遇到这样一个问题,操作一个表,发现被人锁定了,于是查询谁锁定的表,发现多人锁定,安全起见,不能全部kill,于是用一下语句判定,谁锁定,谁等待;
--
SELECT LPAD(' ', DECODE(L.XIDUSN, 0, 3, 0)) || L.ORACLE_USERNAME USER_NAME,
       O.OWNER,
       O.OBJECT_NAME,
       O.OBJECT_TYPE,
       S.SID,
       S.SERIAL#
  FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S
 WHERE L.OBJECT_ID = O.OBJECT_ID
   AND L.SESSION_ID = S.SID
 ORDER BY O.OBJECT_ID, XIDUSN DESC;
 */

Oracle 锁表查询大全相关推荐

  1. oracle 锁表查询和解表操作

    数据库操作语句的分类 DDL:数据库模式定义语言,关键字:create DML:数据操纵语言,关键字:Insert.delete.update DCL:数据库控制语言 ,关键字:grant.remov ...

  2. oracle锁表查询_专业解决 MySQL 查询速度慢与性能差

    Java识堂,一个高原创,高收藏,有干货的微信公众号,一起成长,一起进步,欢迎关注 什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS: QueriesPerSe ...

  3. oracle 锁表查询及解决、表字段查询

    在进行批量对DML操作时程序竟然中断了,不再往下执行.查询一下某张表被锁住了,因此不再往下执行了 如果怀疑表被锁了,或者事务未被正常关闭,在Oracle数据库中我们可以通过以下语句进行查询获取相关信息 ...

  4. Oracle 锁表查询

    --以下几个为相关表 SELECT * FROM v$lock; SELECT * FROM v$sqlarea; SELECT * FROM v$session; SELECT * FROM v$p ...

  5. 解决Oracle锁表问题

    文章目录 数据库操作语句的分类 oracle表在什么情况下会被锁住 Oracle锁表查询和解锁 通过第一步查出来的信息找到被锁的表之后执行如下语句解锁该表: 锁的模式 数据库操作语句的分类 DDL:数 ...

  6. oracle update 锁表还是锁行,for update造成的Oracle锁表与解锁

    我遇到的情况: 当使用select语句查询表时,后面跟着for update , select * from table for update 当修改表中数据,但是没有commit就关掉PL/SQL, ...

  7. oracle数据库锁表查询,解锁,kill缩表进程

    (1)锁表查询的代码形式如下: select count(*) from v$locked_object; select * from v$locked_object; (2)查看哪个表被锁 ---不 ...

  8. Oracle锁表 行级锁 表级锁 行级锁

    2019独角兽企业重金招聘Python工程师标准>>> Oracle锁表  行级锁  表级锁 ---- 行被排他锁定 ----在某行的锁被释放之前,其他用户不能修改此行       ...

  9. oracle锁表导致update,delete,insert出现无反应的问题

    java项目中遇到更新,删除等操作无反应的问题,但后台却不报错,也能正确打印sql语句.最终发现是oracle锁表导致的. 解决方法: 1.查询oracle数据库被锁的表 SELECT T1.ORAC ...

  10. oracle锁表怎么解决,Oracle锁表问题的简捷处理技巧

    在开发Oracle数据库时,我们常遇到频繁操作的Oracle数据表,会出现Oracle锁表.现在就针对这一问题,提下个人的解决Oracle锁表的技巧. 首先问题分析: (1)锁的分析 ORACLE里锁 ...

最新文章

  1. 干货丨机器学习必知的15大框架
  2. Android文本框EditText显示为多行
  3. spring 的权限控制:security
  4. python如何爬取网站所有目录_[python] 爬取网站所有的URL
  5. java追加txt文件_java怎么追加写入txt文件
  6. Python 学习笔记 - 协程
  7. 智能优化算法:足球联赛竞争算法-附代码
  8. per_cpu机制的详解
  9. SQL Server 由于一个或多个对象访问此列,ALTER TABLE DROP COLUMN xxx 失败问题解决
  10. 多人协同在线编辑文档软件使用体验
  11. CF1526C2 Potions (Hard Version) (贪心 + 线段树)
  12. 程序员必备编辑器软件
  13. 互联网晚报 |12/2星期五 | 天猫向ofo及戴威索要5亿借款;优衣库创始人称在中国开3K家店还不够;国美电器回应已被破产清算...
  14. Webpack 常用知识点总结
  15. python工作任务流flow实时框架:prefect
  16. VSLAM 相关知识点总结
  17. 程序员面试:一年内年薪22万涨到60万,你来不来?网友:评论炸锅了!
  18. 汽车基础软件赛道正在经历一轮洗牌
  19. 武汉大学计算机专业博士导师,武汉大学计算机学院博士生导师简介:袁志勇
  20. 活动制作服务器,制作微信投票活动需要做哪些准备

热门文章

  1. 关于html5小游戏的书,HTML5小游戏:書道 - 书法之境 道之升华
  2. 20190303-AJAX教程
  3. 女主学数学男主计算机,5本女主是高智商学霸大佬的现言,她十项全能,马甲无数,男主全程无条件宠妻...
  4. sqlite3 查询表结构信息
  5. Linux基础(三)
  6. 破解各类加密文件密码
  7. 欧拉环游和中国邮递员问题
  8. 数据可视化案例(七)——智慧园区
  9. 面向对象编程---掷骰子游戏
  10. 【网络流量识别】总结篇1:机器学习方法在网络流量识别的应用