如何彻底杀掉Oracle相关用户的会话

在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

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

原文地址:https://www.cnblogs.com/morgan363/p/11978616.html

时间: 2024-11-12 00:06:24

如何彻底杀掉Oracle相关用户的会话的相关文章

【技巧】如何让普通用户可以杀掉自己用户的会话

 [技巧]如何让普通用户可以杀掉自己用户的会话   1  BLOG文档结构图     2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 如何让普通用户可以杀掉自己用户的会话(重点)     Tips: ① 本文在itpub(http://blog.itpub.net/26736162).博客园(http://www.cnblogs.com/lhrbest)和微信公众号(xiaomaimia

Oracle 基于用户管理恢复的处理

================================ -- Oracle 基于用户管理恢复的处理 --================================ Oracle支持多种方式来管理数据文件的备份与恢复来保证数据库的可靠与完整.除了使用RMAN工具以及第三方备份与恢复工具之外,基于 用户管理的备份与恢复也是DBA经常使用的方式之一.本文首先介绍了恢复的相关概念,接下来详细讲述了在归档模式下使用基于用户管理恢 复的处理过程. 一.恢复的相关概念 介质恢复 首先使用备份还

删除oracle数据库用户

手工删除ORACLE数据库用户时常会出现会话进程仍在使用导致删除失败的情况.需要查询会话并将会话删除才能成功将数据库用户删除,比较不方便. 适用场景 自动删除oracle数据库用户 脚本代码 脚本名称:drop_user.sh #!/bin/bash function isExist_dbuser() { [ $# -ne 1 ] && { printf "Call the function isExist_dbuser error.\n";return 1;} loc

oracle相关问题详解

rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpmrpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmrpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 yum install rlwrapsu - orac

oracle创建用户ORA-01045:user lacks CREATE SESSION privilege;

conn internal/oracle grant user aaaa identified by aaaa; conn aaaa/aaaa 会报错: SQL>conn aaaa/aaaa 会报错: ERROR: ORA-01045: user aaaa lacks CREATE SESSION privilege; logon denied 原因: 用户至少需要会话的权利,否则连接也不成功: 用户在会话的权利上,应该有其他操作的权利: 解决方法:  1 grant connect, reso

oracle创建用户ORA-01045:user lacks CREATE SESSION privilege 及一些简单操作(one lesson)

scott用户成功连接数据库的具体方法: 1.grant connect, resource to scott;2.grant create session to scott; 3.cmd4.sqlplus scott/tiger Oracle的安全 1.用户管理 用户至少需要会话的权利,否则连接也不成功: 用户在会话的权利上,应该有其他操作的权利: Oracle的用户和口令不区分大小写,真是让人大跌眼镜: Oralce中,所有用户必须明确被授权,才可以操作: SQL Server中,创建的用户

LINUX下ORACLE相关的内核参数详解

ORACLE相关的内核参数详解 1.kernel.sem [[email protected] ~]# cat /proc/sys/kernel/sem 250         32000    100         142 [[email protected] ~]#  ipcs -sl ------ Semaphore Limits -------- max number of arrays = 142 max semaphores per array = 250 max semaphor

oracle的用户权限和角色

oracle的用户权限和角色 系统权限 定义:指特定类型的sql命令的权利.  常见的有: create  session  连接数据库 create   table    建表 create    view    建视 create  public  synonym  建同义词 create procedure  建过程.函数.包 create trigger    建触发器 create cluster   建簇 如何使用select来查询有哪些系统权限 select * from syst

如何实现Oracle修改用户权限 .

这里将介绍Oracle修改用户权限的实现过程,包括一些权限管理方面的东西.希望通过本文能对大家了解Oracle修改用户权限有所帮助. ORACLE数据库用户与权限管理 ORACLE是多用户系统,它允许许多用户共享系统资源.为了保证数据库系统的安全,数据库管理系统配置了良好的安全机制. 2. 1 ORACLE数据库安全策略 建立系统级的安全保证 系统级特权是通过授予用户系统级的权利来实现,系统级的权利(系统特权)包括:建立表空间.建立用户.修改用户的权利.删除用户等.系统特权可授予用户,也可以随时