在ORACLE数据库当中,有时候会使用ALTER SYSTEM KILL SESSION 'sid,serial#'杀掉一个会话进程,但是使用这个SQL语句杀掉会话后,数据库并不会立即释放掉相关的资源,有时候你会发现锁定的资源很长时间也不会释放,即使会话状态为“KILLED”,依然会阻塞其它会话。

在ORACLE数据库杀掉会话进程有三种方式:

1: ALTER SYSTEM KILL SESSION

关于KILL SESSION Clause ,如下官方文档描述所示,alter system kill session实际上不是真正的杀死会话,它只是将会话标记为终止。等待PMON进程来清除会话。

select sid,serial# from v$session where username='DEMO';查询用户的 sid,serial#

可以使用ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE 来快速回滚事物、释放会话的相关锁、立即返回当前会话的控制权。

Specify IMMEDIATE to instruct Oracle Database to roll back ongoing transactions, release all session locks, recover the entire session state, and return control to you immediately.

2: ALTER SYSTEM DISCONNECT SESSION

ALTER SYSTEM DISCONNECT SESSION 杀掉专用服务器(DEDICATED SERVER)或共享服务器的连接会话,它等价于从操作系统杀掉进程。它有两个选项POST_TRANSACTION和IMMEDIATE, 其中POST_TRANSACTION表示等待事务完成后断开会话,IMMEDIATE表示中断会话,立即回滚事务。

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

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

3: KILL -9 SPID (Linux) 或 orakill ORACLE_SID spid (Windows)

可以使用下面SQL语句找到对应的操作系统进程SPID,然后杀掉。当然杀掉操作系统进程是一件危险的事情,尤其不要误杀。所以在执行前,一定要谨慎确认。

select SPID from v$process where addr in (SELECT PADDR FROM V$SESSION WHERE USERNAME='用户名字');      (找到用户的spid)

kill -9 spid

在数据库如果要彻底杀掉一个会话,尤其是大事务会话,最好是使用ALTER SYSTEM DISCONNECT SESSION IMMEDIATE或使用下面步骤:

1:首先在操作系统级别Kill掉进程。

2:在数据库内部KILL SESSION

或者反过来亦可。这样可以快速终止进程,释放资源。

MySQL数据库如何杀死会话_如何彻底杀掉不良用户会话相关推荐

  1. 与mysql数据库的交互实战_基于 Go 语言开发在线论坛(二):通过模型类与MySQL数据库交互...

    在这篇教程中,我们将在 MySQL 中创建一个 chitchat 数据库作为论坛项目的数据库,然后在 Go 项目中编写模型类与之进行交互.你可以本地安装 MySQL 数据库,也可以基于 Docker ...

  2. mysql数据库集群技术_使用MySQL-Cluster搭建MySQL数据库集群

    1.MySQL集群的作用: - 解决访问节点的单点故障 - 数据存储节点的单点故障 - 解决数据存储节点数据备份问题 2.集群: 使用一组服务器提供相同的服务 3.关于MySQL-Cluster: M ...

  3. jdbc mysql数据库增删查改_通过JDBC对Mysql数据库进行简单的增删改查

    Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法.J ...

  4. mysql数据库存储多语言_数据库---数据控制语言(DCL)

    mysql中,权限是系统内定的一些"名词"(单词),大约30个,每个权限表示"可以做什么工作". 则分配权限就是相当于让某个用户可以做哪些工作. 主要权限如下: ...

  5. mysql数据库时间不准确_主数据库(mysql)的时间不对

    今天早上领导通知我讲主数据库的时间不对,Linux的系统时间是对的.怎么回事???难道是我以前更改了系统时间造成??怎么解决呢? 在mysql手册中有下面这段话: 5.10.8. MySQL服务器时区 ...

  6. mysql数据库集群配置_使用MySQL-Cluster搭建MySQL数据库集群(示例代码)

    1.MySQL集群的作用: - 解决访问节点的单点故障 - 数据存储节点的单点故障 - 解决数据存储节点数据备份问题 2.集群: 使用一组服务器提供相同的服务 3.关于MySQL-Cluster: M ...

  7. mysql数据库当前时间不准_从MYSQL数据库获取到的时间与当前时间不一致问题解决...

    查询数据库时间发现与当前时间差别很大,相差十几个小时 查询数据库时间: select now() --yyyy-MM-dd HH:mm:ss select sysdate() --yyyy-MM-dd ...

  8. MySQL数据库实用教程考核_《MySQL数据库实用教程》郑明秋,蒙连超,赵海侠【pdf】...

    内容简介 郑明秋.蒙连超.赵海侠主编的<MySQL数据库实用教程>是作者在多年的数据库开发实践与教学经验的基础上,根据计算机相关专业的职业岗位能力需求及学生的认知规律倾心组织编写的.本教材 ...

  9. java 操作mysql数据库得到错误码_[数据库/Java]数据库开发过程中产生的MySQL错误代码及其解决方案...

    前言 吐槽一下,均是这两天遇到的破烂事儿,搞定了也好,以后出现此类问题也就放心些了. 下列遇到的问题大都是因为MySQL从5.x版本升级到8.0.11(MySQL8.0涉及重大改版)后,跟着连带着出现 ...

最新文章

  1. 马斯克“口无遮拦”发推特又挨批,被指无视法院命令
  2. AdvancedEAST笔记
  3. Java输入输出(标准)
  4. 对原生ajax的理解
  5. mysql将时间戳转化为天数_mysql 将时间戳直接转换成日期时间
  6. Java接口的几种常见用法
  7. (全排列)Smallest Difference (poj2718)
  8. java扫描一个端口状态_java扫描端口,如何判断端口是用来做什么的(提供什么服务的)?...
  9. SAP License:段的含义
  10. unbuffered low level IO 和 bufferd IO
  11. ORACLE11.2.0.1升级到11.2.0.3
  12. html5数组循环右移,下面的程序代码实现将一个一维数组中元素向右循环移动 移位次数由文本框Text输入。例如数组各元素...
  13. html5 video mute按钮,How to mute an html5 video player
  14. CAN分析仪创芯科技使用(Ubuntu)
  15. 起风了用计算机按,用计算机弹起风了要点那些键
  16. Mac Spotlight搜索快捷键
  17. 常见嵌入式WEB服务器
  18. 快速检查局域网内网络延迟
  19. loadrunner入门教程(33) -- Analysis图
  20. asyncio异步IO--协程(Coroutine)与任务(Task)详解

热门文章

  1. Java中string字符串的值_Java中的字符串(String)
  2. java综合面试题_JAVA 综合面试题 PDF 下载
  3. 基于Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构(附源码)
  4. 带你学python基础:面向对象编程
  5. 高并发之并发容器,了解多少(从入门到超神)
  6. String s=new String(abc)创建了2个对象的原因
  7. 04--MySQL自学教程:数据库MySQL--【数据库DB】和【数据库管理系统DBMS】简介
  8. python 导入模型h20_【机器学习】模型融合方法概述
  9. vue element 表格使用fixed固定列后切换菜单时错位问题
  10. MYSQL数据库设计原则