MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 数据库 / 正文

两种方式中断会话连接oracle

2024-11-26 17:58 huorong 数据库 5 ℃ 0 评论

alter system kill session 'sid,serial#';

如果是RAC环境,可以指定inst_id:

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

kill session不会真正killi掉会话。只是告诉会话把主机kill掉。有些场景下,比如等待远程数据库replay、或者事务回滚,会话则不会立即kill掉自己,而是等待操作完成。这时,在v$session中的状态就是“marked for kill”。后续会kill掉自己。

还可以加上immediate参数:

alter system kill session 'sid,serial#' immediate;

immediate只是立即将控制权返回给当前会话,而不是等待kill操作完成。

如果被标记为kill的会话存在很久,可以从操作系统层面kill掉对应的进程。在操作系统层kill进程之前,建议查看一下是否在执行回滚操作。

alter system disconnect session

也是用来kill会话,和alter system kill session的原理类似。语法略有差别:

SQL> ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' POST_TRANSACTION;

SQL> ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' IMMEDIATE;

post_transaction选项在断开会话之前,会等待事务结束;immediate会立即断开会话,在进行的事务会回滚。

disconnect会杀掉对应会话的后台进程,kill不会。

Tags:oracle 记录

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言