关闭

PL/SQL删除锁表的进程

438人阅读 评论(0) 收藏 举报
分类:

步骤1:用以下SQL查看进程列表,判断出被锁定的表

SELECT dob.OBJECT_NAME Table_Name,lo.SESSION_ID||', '||vss.SERIAL# 删除号,  

lo.locked_mode,lo.SESSION_ID, vss.SERIAL#,vss.action Action,vss.osuser OSUSER, vss.LOGON_TIME,  

vss.process AP_PID, VPS.SPID DB_PID ,vss.*  

From v$locked_object lo, dba_objects dob, v$session vss, V$PROCESS VPS  

Where lo.OBJECT_ID = dob.OBJECT_ID  

and lo.SESSION_ID = vss.SID  

AND VSS.paddr = VPS.addr  

order by 2,3,DOB.object_name

或者

SELECT /*+ rule */ 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

--查找被锁表

步骤2 删除进程,如之前的“删除号”查找出的结果为“286, 2184”,则运行以下SQL

ALTER system kill session '286, 2184'  

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:272429次
    • 积分:4480
    • 等级:
    • 排名:第6610名
    • 原创:155篇
    • 转载:45篇
    • 译文:0篇
    • 评论:119条
    文章分类
    最新评论
    CSDN