Oracle锁表

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

二、相关SQL语句:

(1)以下几个为相关表

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;

(2)查看被锁表信息

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;
image.png

(3)杀掉锁表进程

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

(4)查看数据库引起锁表的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;

你可能感兴趣的:(Oracle锁表)