sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Oracle锁表查询和解锁方法 查看执行的 sql 和执行的机器用户信息https://blog.csdn.net/qq_38819293/article/details/86526696

我们这里一般用的PL/SQL,总是无意间把表锁住,所以我今天就整理了一下简单的解锁和查询锁表的方法;

一、首先PL/SQL要以管理员的账号(system/admin等)登录,管理员的账号和密码根据个人设置而来,连接为一般选择Normal,也可选择SYSDBA;

二、相关SQL语句

  1. --以下几个为相关表
  2. SELECT*FROMv$lock;
  3. SELECT*FROMv$sqlarea;
  4. SELECT*FROMv$session;
  5. SELECT*FROMv$process;
  6. SELECT*FROMv$locked_object;
  7. SELECT*FROMall_objects;
  8. SELECT*FROMv$session_wait;


--查看被锁表信息

 select sess.sid,sess.serial#, lo.oracle_username,lo.os_user_name, ao.object_name,lo.locked_mode  from v$locked_object lo,dba_objects ao,v$session sess where ao.object_id=lo.object_id and lo.session_id=sess.sid;

--杀掉锁表进程

alter system kill session '68,51';--分别为SID和SERIAL#号

--查看数据库引起锁表的SQL语句 

  1. SELECT A.USERNAME,
  2.        A.MACHINE,
  3.        A.PROGRAM,
  4.        A.SID,
  5.        A.SERIAL#,
  6.        A.STATUS,
  7.        C.PIECE,
  8.        C.SQL_TEXT
  9.   FROM V$SESSION A, V$SQLTEXT C
  10.  WHERE A.SID IN (SELECT DISTINCT T2.SID
  11.                    FROM V$LOCKED_OBJECT T1, V$SESSION T2
  12.                   WHERE T1.SESSION_ID = T2.SID)
  13.    AND A.SQL_ADDRESS = C.ADDRESS(+)
  14.  ORDER BY C.PIECE;

posted on 2022-03-29 14:45  sunny123456  阅读(616)  评论(0编辑  收藏  举报