终止会话

有时需要终止当前用户会话。例如,您可能想要执行管理操作并需要终止所有非管理会话。本节介绍终止会话的各个方面,并包含以下主题:

  • 识别哪个会话终止
  • 终止活动会话
  • 终止非活动会话

当会话终止时,会话的任何活动事务都会回滚,会话持有的资源(例如锁和内存区)会立即释放并可供其他会话使用。

您使用SQL语句ALTER SYSTEM KILL SESSION终止当前会话。以下语句终止系统标识为7且序列号为15的会话:

ALTER SYSTEM KILL SESSION ‘7,15‘;

识别哪个会话终止



要确定要终止哪个会话,请指定会话索引号和序列号。要识别会话的系统标识符(SID)和序列号,请查询V $ SESSION动态性能视图。例如,以下查询标识用户jward的所有会话:

1 SELECT SID, SERIAL#, STATUS
2   FROM V$SESSION
3   WHERE USERNAME = ‘JWARD‘;
4
5 SID    SERIAL#    STATUS
6 -----  ---------  --------
7     7         15  ACTIVE
8    12         63  INACTIVE

会话在对Oracle数据库进行SQL调用时处于ACTIVE状态。如果会话未对数据库进行SQL调用,则会话为“非活动”。

Oracle数据库参考以获取会话状态值的描述

终止活动会话



如果用户会话在终止会话时正在处理事务(活动状态),则事务将回滚并且用户立即收到以下消息:

ORA-00028: your session has been killed

如果在收到ORA-00028消息后,用户在重新连接到数据库之前提交其他语句,Oracle数据库将返回以下消息:

ORA-01012: not logged on

活动会话在执行网络I / O或回滚事务时不能中断。这种会话无法终止,直到操作完成。在这种情况下,会话将保留所有资源,直到终止。此外,发出ALTER SYSTEM语句来终止会话的会话最多等待60秒才会终止会话。如果无法中断的操作持续一分钟以上,ALTER SYSTEM语句的发布者将收到一条消息,指出会话已被标记为终止。标记为终止的会话在V $ SESSION中以状态KILLED和非PSEUDO的服务器表示。

终止非活动会话



如果会话在终止时未对Oracle数据库进行SQL调用(处于非激活状态),则不会立即返回ORA-00028消息。直到用户随后尝试使用终止的会话才会返回该消息。

当非活动会话终止时,V $ SESSION视图中会话的状态为KILLED。在用户尝试再次使用会话并接收到ORA-00028消息后,终止会话的行将从V $ SESSION中删除。

在以下示例中,非活动会话终止。首先,查询V $ SESSION以确定会话的SID和SERIAL#,然后会话终止。

 1 SELECT SID,SERIAL#,STATUS,SERVER
 2    FROM V$SESSION
 3    WHERE USERNAME = ‘JWARD‘;
 4
 5 SID    SERIAL#   STATUS     SERVER
 6 -----  --------  ---------  ---------
 7     7        15  INACTIVE   DEDICATED
 8    12        63  INACTIVE   DEDICATED
 9 2 rows selected.
10
11 ALTER SYSTEM KILL SESSION ‘7,15‘;
12 Statement processed.
13
14 SELECT SID, SERIAL#, STATUS, SERVER
15    FROM V$SESSION
16    WHERE USERNAME = ‘JWARD‘;
17
18 SID    SERIAL#   STATUS     SERVER
19 -----  --------  ---------  ---------
20     7        15  KILLED     PSEUDO
21    12        63  INACTIVE   DEDICATED
22 2 rows selected.

参考资料



https://docs.oracle.com/cd/E11882_01/server.112/e25494/manproc.htm#ADMIN11193

原文地址:https://www.cnblogs.com/sorliran/p/9046377.html

时间: 2024-10-29 11:40:56

终止会话的相关文章

查询发生死锁的表, 数据库当前会话, 终止会话

查询发生死锁的表 SELECT request_session_id spid , OBJECT_NAME(resource_associated_entity_id) tableNameFROM sys.dm_tran_locksWHERE resource_type = 'OBJECT' 数据库当前链接 select top 1000 * from sys.dm_exec_connectionsgo 杀死某一会话 kill sessionid

在linux下如何终止用户会话?

公司使用的监控工具是cacti,在阈值里的设置是当已登录用户超过2个的时候就会报警.那么,我的疑问就出来了,如何终止多于的用户会话呢?我自己又是哪个用户会话呢,总不能自己把自己给终止会话了吧. 第一步:查看哪些IP在操作服务器,who命令 [[email protected] ~]# who root     tty1         2014-04-20 08:42 root     pts/0        2014-04-20 09:10 (192.168.204.50) 第二步:查看服务

会话跟踪技术--cookie和session 小结

学习过servlet的都知道,servlet是单例多线访问的,所以我们不能设置servlet成员变量来存放浏览器的访问数据.怎么解决浏览器的访问数据,让不同访问者能够访问到自己的数据呢? 相信学习完了cookie和session技术之后,读者会明白这个问题. 我们在浏览器上使用http协议在网络上传输数据的时候,服务器对于http的状态处理有两个方式,cookie和session. 笔者对于cookie设session的理解是这样的:当我们想要记录浏览器与服务器之间的交互的时候,通常的方法就是

创建一个zookeeper的会话(实现watcher)

在先前的章节中,我们利用zkCli去了解了一下主要的zookeeper的操作.在接下来的章节中,我们将会学习一下在应用中是怎样利用zookeeper的api的.接下来我们将利用一个程序展示一下,怎样来创建一个回话和监视. 那么以下我们将開始一个主从模式的结构样例. 创建一个zookeeper的会话 如以下所看到的,每个建立的会话一旦它的连接被破坏,将会转移到其它的zookeeper服务.仅仅要会话保持通畅.那么句柄将会有效.那么zookeeperclient类库将会经历的保持连接.假设句柄关闭了

TCP会话劫持_转

前言通常,大家所说的入侵,都是针对一台主机,在获得管理员权限后,就很是得意:其实,真正的入侵是占领整个内部网络.针对内部网络的攻击方法比较多,但比较有效的方法非ARP欺骗.DNS欺骗莫属了.但是,不管使用什么技术,无非都是抓取目标的数据包,然后分析出敏感数据.如果目标内部采用的是共享式网络(采用HUB集线器连网),那只需要把网卡设置为"混杂模式",挂上嗅探器(Sniffer),就能简听到你想得到的数据.如果是交换式网络(采用交换机连网),这样方法就行不通了,因为对于嗅探器,有三种网络环

WCF初探-26:WCF中的会话

理解WCF中的会话机制 在WCF应用程序中,会话将一组消息相互关联,从而形成对话.会话”是在两个终结点之间发送的所有消息的一种相互关系.当某个服务协定指定它需要会话时,该协定会指定所有调用(即,支持调用的基础消息交换)必须是同一对话的一部分.如果某个协定指定它允许使用会话但不要求使用会话,则客户端可以进行连接,并选择建立会话或不建立会话.如果会话结束,然后在同一个通道上发送消息,将会引发异常. WCF中的会话机制通过设置服务协定(ServiceContract)上的SessionMode的枚举值

linux下的守护进程及会话、进程组

守护进程.会话.进程组网上有许多不错的资料.我也是网上搜罗了一堆,加上自己的理解.不敢说原创,只是写在这怕自己忘记罢了.才疏学浅,难免有错误,欢迎大家指正.下面这篇写很不错,大家可以去看看:http://www.cnblogs.com/forstudy/archive/2012/04/03/2427683.html.下面的部分内容引用了他的描述. 进程组:进程组就是把一个或多个进程划为一组,给这个组分配一个组id(pgid),这个id通常是进程组组长(该组的第一个进程)的pid.如果进程组组长退

重温WCF之会话Session(九)

转载地址:http://blog.csdn.net/tcjiaan/article/details/8281782 每个客户端在服务器上都有其的独立数据存储区,互不相干,就好像A和服务器在单独谈话一样,所以叫会话. 下面,我们写一个例子,看看在不支持会话的绑定上连续调用两个有关联的代码,会发生什么情况. [ServiceContract] public interface IService { [OperationContract(IsOneWay = true)] void SetValue(

【转】SIP协议 会话发起协议

转自:https://www.cnblogs.com/gardenofhu/p/7299963.html 会话发起协议(SIP)是VoIP技术中最常用的协议之一.它是一种应用层协议,与其他应用层协议协同工作,通过Internet控制多媒体通信会话. SIP - 概述 以下是有关SIP的几点注意事项 - SIP是用于通过因特网协议创建,修改和终止多媒体会话的信令协议.会话只不过是两个端点之间的简单调用.端点可以是智能电话,笔记本电脑或可以通过因特网接收和发送多媒体内容的任何设备. SIP是由IET