1.创建两个测试用户进行实验
执行命令如下:
create user test1 identified by 1;
create user test2 identified by 1;
grant dba to test1;
grant dba to test2;
如下图,我创建了两个用户,并授予两个用户dba角色。
2,windows下使用cmd连接oracle用户
执行如下命令:
sqlplus test1/1@192.168.1.202:1521/orcl
sqlplus test2/1@192.168.1.202:1521/orcl
如下图示例:
3.查看用户session,相关信息,
执行如下语句:
select sid,serial#,username,status,osuser,machine,action from v$session where username like '%TEST%'
如下图:
查询到两个user的session,和osuser信息。
此时我删除用户是删除不了的
要是两个正在连接的用户,断开数据库,才能删除用户,
执行命令如下:
alter system disconnect session 'sid,serial#' immediate ;(立即断开用户session,未完成的事务自动会滚。)
alter system disconnect session 'sid,serial#' post_transaction;(事务断开用户session,等待未完成的事务提交后,断开连接。)
首先演示immediate 终止会话,请注意:此操作会回滚未完成的事务,执行如下图
查看windows下cmd连接情况,课件执行查询时候提示会话已经被终止。
最后我们首先连接使用之前创建的用户连接到oracle
创建一个表,执行插入几条数据,不执行提交,此时使用事务型终止会话,
演示如下图:
我们登录到test2用户,
首先我们创建了一个表表名称为t1,之后创建一个序列,执行插入将序列的下一个值,和当前用户名称,当前系统日期插入到表中,执行了三次插入,未提交,
此时我们执行事务终止用户会话。
如下图:
查询v$session视图,获得test2用户的会话信息,
执行事务会话终止成功。
查看连接的test2会话情况:(此时事务未提交,仍可以执行任何查询信息)。
提交事务,再一次执行查询,提示会话被终止,(此类事务终止较安全,推荐)