Oracle 12c 关闭连接

Oracle 12c 关闭连接

一. 关闭连接SQL语句介绍

在Oracle中,关闭指定用户的连接时有3种方式:

  1. 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

该语句快速回滚事物、释放会话的相关锁、立即返回当前会话的控制权。

  1. 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;
  1. KILL -9 SPID(Linux)或 orakill ORACLE_SID spid(Windows)

    默认情况下,在SQL Plus中,当连接到其它用户时,就会彻底关闭前一个用户连接。
    在PLSQL Develope中,当连接到其它用户时,不会彻底关闭前一个用户连接。

二. 示例:

  1. 首先在system用户下,创建一个新的用户:
CREATE USER c##test IDENTIFIED BY password;

其中c##test 为用户名,password为口令。

  1. 授予该用户权限:
GRANT connect, resource TO c## test;
  1. 在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’;

  1. 返回SQL窗口,再次执行如下SQL语句:
select sid,serial# from v$session where username = ‘C##TEST’

在这里插入图片描述

可见用户C##TEST会话连接10839连接并未关闭。

在使用ALTER SYSTEM KILL SESSION语句关闭掉所有该用户的会话连接后,此时删除用户,可以成功执行。尽管此时该用户的会话连接依然存在。如果不能删除用户,继续后面的操作。

  1. 此时在Command窗口执行下面语句:
ALTER SYSTEM KILL SESSION ‘17,10839’ immediate;

再次在SQL窗口执行查询语句:

select sid,serial# from v$session where username = ‘C##TEST’

在这里插入图片描述

可见会话连接已经被彻底关闭。

  1. 此时可以放心的删除C##TEST用户了:
SQL>DROP USER C##TEST CASCADE;
  1. 可以直接执行ALTER SYSTEM KILL SESSION ‘17,10839’ immediate;

总结:
在PLSQL Develope中,有一个简单的方法关闭全部会话连接,就是退出PLSQL Develope,重新用其它用户登录。

本文PDF文档下载地址:https://download.csdn.net/download/usertest1/88596285

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值