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

在ORACLE数据库中,有时会使用alter system kill session' sid,serial # '来杀死一个会话进程,但是使用这个SQL语句杀死会话后,数据库并不会立即释放相关的资源,有时你会发现被锁定的资源很长时间都不会被释放,即使会话状态是?被杀?,仍会阻止其他会话。

有三种方法可以终止ORACLE数据库中的会话进程:

1:改变系统终止会话

至于KILL SESSION子句,如下面的官方文档描述所示,alter system kill session实际上并没有杀死会话,它只是将会话标记为终止。等待PMON进程清除会话。

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

您可以使用alter system kill session' sid,serial #' immediate来快速回滚,释放与会话相关的锁,并立即返回当前会话的控制权。

指定IMMEDIATE以指示Oracle数据库回滚正在进行的事务,释放所有会话锁,恢复整个会话状态,并将控制权立即交还给您。

2:改变系统断开会话

ALTER SYSTEM DISCONNECT SESSION杀死专用服务器或者* *享受服务器的连接会话,相当于从操作系统杀死进程。它有两个选项,POST_TRANSACTION和IMMEDIATE,其中POST_TRANSACTION表示在事务完成后断开会话,IMMEDIATE表示中断会话并立即回滚事务。

SQL & gtALTER SYSTEM DISCONNECT会话' sid,serial#' POST_TRANSACTION。

SQL & gt立即更改系统断开会话' sid,serial# '。

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

你可以使用下面的SQL语句找到相应的操作系统进程SPID并杀死它。当然,杀死操作系统进程是一件很危险的事情,尤其是不要误杀。所以一定要仔细确认后再实施。

select spid from v $ process where addrin(select paddr from v $ session where username = ' user name ');(找到用户的spid)

kill -9 spid

如果要完全终止数据库中的会话,尤其是大型事务会话,最好立即使用alter system disconnect session或使用以下步骤:

1:先在操作系统级别杀死进程。

2.终止数据库中的会话

反之亦然。这可以快速终止进程并释放资源。

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

标签:通过完成正式文档回滚事务串行用户名操作状态dem。