查询Oracle正在执行的sql语句及kill被锁的表
在Oracle中,要查询当前正在执行的SQL语句,可以使用以下SQL查询:
SELECT s.sid,
s.serial#,
s.username,
s.program,
s.type,
s.terminal,
s.machine,
s.osuser,
s.status,
s.sql_id,
a.sql_text
FROM v$session s
JOIN v$sql a ON s.sql_id = a.sql_id
WHERE s.type != 'BACKGROUND';
要杀死一个会话,可以使用以下SQL命令:
ALTER SYSTEM KILL SESSION 'sid,serial#';
其中sid
和serial#
是从上面查询到的会话信息。
如果你想杀死锁定表的会话,可以先查询被锁定的对象,然后杀死相关会话:
SELECT o.object_name, s.sid, s.serial#, s.username
FROM v$locked_object l
JOIN dba_objects o ON l.object_id = o.object_id
JOIN v$session s ON l.session_id = s.sid
WHERE o.object_type = 'TABLE';
-- 然后使用以下命令杀死会话
ALTER SYSTEM KILL SESSION 'sid,serial#';
请注意,在执行ALTER SYSTEM KILL SESSION
命令时,需要确保你有足够的权限,并且要考虑到正在被杀死的会话可能正在进行重要的操作,强行终止可能会导致数据不一致或系统不稳定。在生产环境中,应该非常谨慎地使用此类命令。
评论已关闭