查看锁表进程
SELECT DISTINCT decode(s.inst_id, 1, 'DB1', 2, 'DB2') 数据库服务器, decode(s.BLOCKING_SESSION, '', S.USERNAME, '--' || s.USERNAME) 登陆用户名, O.OWNER || '.' || O.OBJECT_NAME 锁的对象, S.SID, decode(S.BLOCKING_SESSION, '', '根锁为此会话', '根锁会话:' || S.BLOCKING_SESSION) 阻塞SID, S.BLOCKING_SESSION_STATUS STATUS, (CASE WHEN SQL_TEXT IS NULL THEN '(SID:' || S.SID || ')会话 SQL已跑完' ELSE '(SID:' || S.SID || ')会话 正执行SQL:' || SQL_.SQL_TEXT END) SQL_TEXT, s.CLIENT_INFO, LO.REQUEST, S.STATE, S.EVENT, S.MACHINE, S.LOGON_TIME, S.INST_ID, S.BLOCKING_SESSION, 'ALTER SYSTEM KILL SESSION ''' || S.SID || ',' || S.SERIAL# || ''';', '' KILL FROM GV$SESSION S LEFT JOIN GV$SQL SQL_ ON SQL_.SQL_ID = S.SQL_ID AND SQL_.INST_ID = S.INST_ID JOIN GV$LOCKED_OBJECT L ON L.SESSION_ID = S.SID AND L.INST_ID = S.INST_ID JOIN ALL_OBJECTS O ON L.OBJECT_ID = O.OBJECT_ID JOIN GV$LOCK LO ON (LO.BLOCK != 0 OR LO.REQUEST != 0) WHERE LO.SID = L.SESSION_ID AND LO.SID = S.SID AND LO.INST_ID = L.INST_ID AND LO.INST_ID = S.INST_ID ORDER BY s.inst_id, S.BLOCKING_SESSION, s.SID DESC;
/*****************************************
*Oracle数据库操作中,
*锁表查询以及解锁和kill操作
*****************************************/
--查看锁表记录条数
SELECT COUNT(*) FROM V$LOCKED_OBJECT;
--查看锁表记录
SELECT * FROM V$LOCKED_OBJECT;
--查看被锁表
SELECT B.OWNER, B.OBJECT_NAME, A.SESSION_ID, A.LOCKED_MODE
FROM V$LOCKED_OBJECT A, DBA_OBJECTS B
WHERE B.OBJECT_ID = A.OBJECT_ID;
--查看锁表session
SELECT B.USERNAME, B.SID, B.SERIAL#, LOGON_TIME
FROM VSESSION B
WHERE A.SESSION_ID = B.SID
ORDER BY B.LOGON_TIME;
--杀掉对应进程
ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE;
--如果数据库级别杀不到进程
(Windows-->) orakill <sid> <spid>
(Linux-->) kill -9 <spid>
select a.sid, b.spid, b.pid
from vprocess b
where a.PADDR = b.ADDR
and a.sid = 192;
##查询锁表的sql(需要输入查询sid)
select username, sql_text, machine, osuser from v$session a, v$sqltext_with_newlines b where DECODE(a.sql_hash_value, 0, prev_hash_value, sql_hash_value) = b.hash_value and a.sid = &sid order by piece;
##查询正在执行的sql
SELECT s.sid, s.serial#, s.username, spid, v$sql.sql_id, machine, s.terminal, s.program, sql_text FROM v$process, v$session s, v$sql WHERE addr = paddr and s.sql_id = v$sql.sql_id AND sql_hash_value = hash_value
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能