如何终止用户所有活动和非活动的 oracle 会话

问题描述 投票:0回答:7

我正在尝试使用下面的脚本来立即终止用户的所有活动和非活动 Oracle 会话,但它不起作用。该脚本成功执行,但不会终止用户的会话。

BEGIN
  FOR r IN (select sid,serial# from v$session where username = 'USER')
  LOOP
    EXECUTE IMMEDIATE 'alter system kill session ''' || r.sid 
      || ',' || r.serial# || '''';
  END LOOP;
END;
oracle-database session stored-procedures schema
7个回答
57
投票

KILL SESSION
命令实际上并不“杀死”会话。它只是要求会话自行终止。在某些情况下,例如等待远程数据库的回复或回滚事务,会话不会立即终止自身,而是等待当前操作完成。在这些情况下,会话的状态将为“标记为终止”。然后就会尽快被杀死。 检查状态确认:

SELECT sid, serial#, status, username FROM v$session;

您还可以使用 
IMMEDIATE

子句: ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;

IMMEDIATE

子句不会影响命令执行的工作,但它会立即将控制权返回给当前会话,而不是等待终止确认。查看

终止 Oracle 会话

更新

如果你想杀死所有会话,你可以准备一个小脚本。 SELECT 'ALTER SYSTEM KILL SESSION '''||sid||','||serial#||''' IMMEDIATE;' FROM v$session;

Spool

将上述内容复制到 .sql 文件并执行它,或者复制粘贴输出并运行它。

    


25
投票
这应该可行 - 我刚刚更改了您的脚本以添加 
immediate

关键字。正如前面的答案所指出的,

kill session
仅标记要杀死的会话;它不会立即这样做,而是在方便的时候这样做。

从你的问题来看,你似乎希望立即看到结果。所以使用

immediate

关键字来强制执行此操作。

    


10
投票

SELECT 'ALTER SYSTEM KILL SESSION '''||sid||','||serial#||''' IMMEDIATE;' FROM v$session where username='YOUR_USER';

它将打印出应该执行的sql。


7
投票
  
它对我有用。


2
投票

Error report: SQL Error: ORA-00026: missing or invalid session ID 00026. 00000 - "missing or invalid session ID" *Cause: Missing or invalid session ID string for ALTER SYSTEM KILL SESSION. *Action: Retry with a valid session ID.

要纠正此问题,请使用以下代码来识别会话

SQL> select inst_id,sid,serial# from gv$session

或 v$session


注意

v$session 没有 inst_id 字段 并使用

杀死他们

alter system kill session 'sid,serial,@inst_id' IMMEDIATE;



0
投票

begin for i in (select * from v$session where status='INACTIVE' and (sysdate-PREV_EXEC_START)>1) LOOP EXECUTE IMMEDIATE(q'{ALTER SYSTEM KILL SESSION '}'||i.sid||q'[,]' ||i.serial#||q'[']'||' IMMEDIATE'); END LOOP; end;


0
投票

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;

要获取该用户的 sid 和序列号,您可以使用查询:

select distinct osuser from v$session;

最终查询如下

ALTER SYSTEM KILL SESSION '450,25969' IMMEDIATE;

	
© www.soinside.com 2019 - 2024. All rights reserved.