Oracle 12c 关闭连接
一. 关闭连接SQL语句介绍
在Oracle中,关闭指定用户的连接时有3种方式:
-
ALTER SYSTEM KILL SESSION ‘sid,serial#’
该方式实际上不是真正的杀死会话,它只是将会话标记为终止,数据库并不会立即释放掉相关的资源。等待PMON进程来清除会话。
其中sid,serial#由下面的SQL语句查询获得:
SQL> select sid,serial# from v$session where username = ‘用户名’; |
---|
其中用户名需要大写,例如:C##TEST。
可以使用下面的语句语句彻底关闭指定用户的连接;
SQL> ALTER SYSTEM KILL SESSION ‘sid,serial#’ IMMEDIATE |
---|
该语句快速回滚事物、释放会话的相关锁、立即返回当前会话的控制权。
-
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; |
---|
-
KILL -9 SPID(Linux)或 orakill ORACLE_SID spid(Windows)
默认情况下,在SQL Plus中,当连接到其它用户时,就会彻底关闭前一个用户连接。
在PLSQL Develope中,当连接到其它用户时,不会彻底关闭前一个用户连接。
二. 示例:
- 首先在system用户下,创建一个新的用户:
CREATE USER c##test IDENTIFIED BY password; |
---|
其中c##test 为用户名,password为口令。
- 授予该用户权限:
GRANT connect, resource TO c## test; |
---|
- 在PLSQL Develope中,以c## test用户登录数据库。打开一个SQL窗口,输入如下SQL语句:
select sid,serial# from v$session where username = ‘C##TEST’ |
---|
结果如下所示:
可见用户C##TEST有一个会话连接10839。
4 打开一个Command窗口,以system用户登录,输入如下SQL语句:
ALTER SYSTEM KILL SESSION ‘17,10839’; |
---|
- 返回SQL窗口,再次执行如下SQL语句:
select sid,serial# from v$session where username = ‘C##TEST’ |
---|
可见用户C##TEST会话连接10839连接并未关闭。
在使用ALTER SYSTEM KILL SESSION语句关闭掉所有该用户的会话连接后,此时删除用户,可以成功执行。尽管此时该用户的会话连接依然存在。如果不能删除用户,继续后面的操作。
- 此时在Command窗口执行下面语句:
ALTER SYSTEM KILL SESSION ‘17,10839’ immediate; |
---|
再次在SQL窗口执行查询语句:
select sid,serial# from v$session where username = ‘C##TEST’ |
---|
可见会话连接已经被彻底关闭。
- 此时可以放心的删除C##TEST用户了:
SQL>DROP USER C##TEST CASCADE; |
---|
- 可以直接执行ALTER SYSTEM KILL SESSION ‘17,10839’ immediate;
总结:
在PLSQL Develope中,有一个简单的方法关闭全部会话连接,就是退出PLSQL Develope,重新用其它用户登录。
本文PDF文档下载地址:https://download.csdn.net/download/usertest1/88596285