oracle - 如何杀死用户的所有事件和非事件 oracle session

标签 oracle session stored-procedures schema

我正在尝试使用以下脚本一次终止用户的所有事件和非事件 oracle session ,但它不起作用。该脚本成功执行但不会终止用户的 session 。

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;

最佳答案

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

SELECT sid, serial#, status, username FROM v$session;
您也可以使用 立即条款:
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
IMMEDIATE子句不影响命令执行的工作,但它会立即将控制权返回给当前 session ,而不是等待终止确认。看看Killing Oracle Sessions .
更新 如果要终止所有 session ,只需准备一个小脚本即可。
SELECT 'ALTER SYSTEM KILL SESSION '''||sid||','||serial#||''' IMMEDIATE;' FROM v$session;
线轴 以上为.sql文件并执行它,或者,复制粘贴输出并运行它。

关于oracle - 如何杀死用户的所有事件和非事件 oracle session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31201693/

相关文章:

java - 从 SQL/HQL Java 解析表名和列名

PHP SESSION 仅在子文件夹中可用

mysql - 从记录中检索字符串值并插入到另一列

python - Django session 意外丢失数据

asp.net - 哪个更快 : Entity Framework vs stored procedures?

sql - 创建对两个列组合MSSQL的约束

SQL where子句在oracle中是否正确?

java - 无法识别的选项 : -MaxMetaspaceSize=256m

vb.net - 仅当作为服务运行时 ODP.NET ORA-12154 TNS 错误

python - 如何正确部署需要服务器回调的 Bokeh 应用程序?