oracle下session的查询与删除

1、查询当前session

SQL>
select username,sid,serial# from v$session where username is not null;





USERNAME                              SID    SERIAL#

------------------------------ ---------- ----------

SYS                                   144          4

HYL                                   146         48

SCOTT                                 147         64

HR                                    159         15

--SERIAL#:SID有可能会反复,当两个session的SID反复时,SERIAL#用来差别session

2、删除当前session

SQL>
alter system kill session '146,48';

System altered.





hyl的session下运行操作例如以下:





SQL> show user

USER is "HYL"

SQL> select * from test1;

select * from test1

*

ERROR at line 1:

ORA-00028: your session has been killed

3、删除当前session的用户

思路:先关闭session,然后再删除用户





演示:在不关闭session的情况下删除用户现象:

SQL> select username,account_status from dba_users;

--查看当前有哪些用户

USERNAME                       ACCOUNT_STATUS

------------------------------ --------------------------------

CSMIG                          OPEN

MGMT_VIEW                      OPEN

SYS                            OPEN

SYSTEM                         OPEN

HYL                            OPEN

OE                             EXPIRED & LOCKED

6 rows selected.





SQL> select username,sid,serial# from v$session where username is not null;

--通过v$session视图,查看会话的sid、serial#

USERNAME                              SID    SERIAL#

------------------------------ ---------- ----------

SYS                                   144          4

HYL                                   146         54

SCOTT                                 147         64

HR                                    159         15





SQL> drop user hyl;
      --删除,报错了。表明会话中存在的用户是不能被删除的,须要先将其关闭

drop user hyl

*

ERROR at line 1:

ORA-01940: cannot drop a user that is currently connected

SQL> alter system kill session '146,54';

System altered.

--hyl的session下查看数据。信息显示该session已经被kill掉,表明删除session成功

SQL> select * from test1;

select * from test1

*

ERROR at line 1:

ORA-00028: your session has been killed





--以下完毕删除用户

SQL> drop user hyl;   --删除用户报错了,此时hyl用户下有对象存在

drop user hyl

*

ERROR at line 1:

ORA-01922: CASCADE must be specified to drop 'HYL'





SQL> drop user hyl cascade; --将用户及其所有对象所有删除

User dropped.





--尝试hyl连接。报错。无法使用hyl登陆session

SQL> conn hyl/oracle

ERROR:

ORA-01017: invalid username/password; logon denied





Warning: You are no longer connected to ORACLE.





--查看dba_users数据字典。表明hyl用户已经被删除

SQL> select username,account_status from dba_users;





USERNAME                       ACCOUNT_STATUS

------------------------------ --------------------------------

CSMIG                          OPEN

MGMT_VIEW                      OPEN

SYS                            OPEN

SYSTEM                         OPEN

OE                             EXPIRED & LOCKED

5 rows selected.





小结:

查询当前会话:select username,sid,serial# from v$session where username is not null;

删除当前会话:alter system kill session 'sid,serial#';

删除当前会话的用户,先kill session,再drop user(若用户下有对象,使用cascade命令)





——————————————————————————————————————————————————————————————————————

补充:username为空

--补充:查询会话时不加入“username is not null”条件时,会出现username为空的session信息

SQL> select username,sid,serial# from v$session;





USERNAME                              SID    SERIAL#

------------------------------ ---------- ----------

SYS                                   144          4

SCOTT                                 147         64

                                      149          2

                                      153        346

                                      154          1

                                      158          7

HR                                    159         15

                                      160          1

                                      161          1

                                      162          1

                                      163          1

                                      164          1

                                      165          1

                                      166          1

                                      167          1

                                      168          1

                                      169          1

                                      170          1

18 rows selected.





说明:

oracle对于username的原则:

Oracle内部进程的user#为0时,则username为空;

Oracle内部进程的username为空时,则user#为0。

username、user#两个字段都是属于表示用户的字段。

由上得出例如以下:

前台进程是属于某个数据库用户的,所曾经台进程的user#不为0,username不为空;

而后台进程不属于不论什么数据库用户。所以后台进程的user#为0,username为空。





小结:

用户仅仅能使用server进程(前台进程)。不能使用后台进程,而前台进程和后台进程session能够相应,所以在v$session中username为空(即user#为0)。

--补充完成



——————————————————————————————————————————————————————————————————————

***********************************************声明************************************************

原创作品,出自 “深蓝的blog” 博客。欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。

表述有错误之处。请您留言,不胜感激。

提醒:点击文件夹,更有助于您的查看。

*****************************************************************************************************

oracle下session的查询与删除的更多相关文章

  1. oracle中session的查询与删除

    1. 查询连接的session select sid,serial#,username,program,machine,status from v$session 查询的结果如下,可以根据机器和登录的 ...

  2. Oracle学习笔记(1)——查询及删除重复数据

      1.查找表中多余的重复记录(根据单个字段studentid)   select * from table_name where studentid in (select studentid fro ...

  3. 使用Oracle数据库实现树形结构表的子-父级迭代(递归)查询和删除,通过级联菜单简单举例

    前言: 我们在开发中,常常遇到单表的子-父id级联的表结构,在树形的深度不确定的情况下,一次查询出某个树形结构下的所有具有子-父级关系的数据变得十分困难. 这时,我们使用oracle提供的CONNEC ...

  4. Oracle 查询并删除重复记录的SQL语句

    查询及删除重复记录的SQL语句 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select  ...

  5. oracle下查询的sql已经超出IIS响应时间

    场景: 最近一直发生oracle下查询的sql已经超出IIS响应时间,但是后台DB的SQL查询还未终止,一直在查询.这对DB是造成很大的压力. 解决办法 增加OracleCommand 中的Comma ...

  6. oracle 查询及删除重复记录的SQL语句

    查询及删除重复记录的SQL语句 1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 group ...

  7. Oracle下的ArcSDE创建的空间数据库的备份与恢复

    对Oracle下ArcSDE创建的空间数据库, 整体备份.恢复或迁移. 一.imp和exp命令方式 1.1 数据库完整备份 检查数据库字符集是否一致 SQL>select userenv(‘la ...

  8. [原创]java WEB学习笔记31:会话与状态管理 session机制 概述(定义,session机制,session的声明周期,保存session的方式,Session的创建与删除)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. Hibernate下的Many-to-Many的级联删除

    hibernate下的Many-to-Many的级联删除 Hibernate多对多的例子不少,但仔细一看,大多数都是保存的,删除谈的少,但问题还不少,因此有必须简单测试一下,以下我们来个简单的多对多关 ...

随机推荐

  1. Cassandra 数据库安装部署

    安装版本 cassandra-3.11.4 系统版本 more /etc/redhat-release CentOS Linux release 7.6.1810 (Core) 准备工作 Cassan ...

  2. leepcode作业解析 - 5-20

    22.缺失数字 给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数. 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: ...

  3. 我的Python分析成长之路8

    Numpy数值计算基础 Numpy:是Numerical Python的简称,它是目前Python数值计算中最为基础的工具包,Numpy是用于数值科学计算的基础模块,不但能够完成科学计算的任而且能够用 ...

  4. [转]automaticallyAdjustsScrollViewInsets(个人认为iOS7中略坑爹的属性)

    @当我们在一个UIViewController中同时创建2个tableView的时候,如果把它们的frame中的Y坐标设置为一样,你可能会发现它们的位置并没有达到你想要的结果.比如第一tableVie ...

  5. 关于MongoDB分布式高可用集群实现

    一.环境准备 1.本例使用3台Linux主机,IP地址如下: 点击(此处)折叠或打开 Server B Server C 2.根据需要,开启相应主机防火墙的相关端口.本次需要用到3台主机,所以开启这3 ...

  6. 【01】let和const命令

    let和const命令   魔芋总结: 01,let声明变量,只在代码块{}内有效. 02,不存在变量提升,只能先声明,再使用.否则报错. 03,暂时性死区 如果代码块中存在let和const声明的变 ...

  7. pytion3--文档字符串:__doc__

    除了#注释外,Python也支持可自动附加在对象上的文档,而且在运行时还可保存查看.从语法上来说,这类注释是写成字符串,放在模块文档.函数以及类语句的顶端.就在任何可执行程序代码前(#注释在其前也没问 ...

  8. 多线程下,多次操作数据库报错,There is already an open DataReader associated with this Command which must be closed first.

    原文:https://www.cnblogs.com/sdusrz/p/4433108.html 执行SqlDataReader.Read之后,如果还想用另一个SqlCommand执行Insert或者 ...

  9. [android开发篇]java环境配置

    http://www.runoob.com/java/java-environment-setup.html Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境. window ...

  10. oracle表空间,分区表,以及索引的总结

    表空间: Oracle的UNDOTBS01.DBF文件太大的解决办法 1..禁止undo tablespace自动增长 alter   database   datafile   'full_path ...