温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

oracle中出现ORA-01940:无法删除当前已连接的用户怎么办

发布时间:2021-11-09 11:52:23 阅读:221 作者:小新 栏目:关系型数据库
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要为大家展示了“oracle中出现ORA-01940:无法删除当前已连接的用户怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“oracle中出现ORA-01940:无法删除当前已连接的用户怎么办”这篇文章吧。

在现场作业时,需要先删除用户;在执行drop user时提示“ORA-01940: cannot drop a user that is currently connected”,当时的环境如下:
操作系统:Windows XP
数据库:Oracle 10.2.0.1
       当时时间比较着急,直接采取了釜底抽薪的办法——拔网线,这招很管用,再次执行drop user就成功了。考虑到以后不一定所有场合都允许你采取这种简单粗暴的办法,就在虚拟机上重现了这个报错,寻求一种较为温和的解决办法。
       首先我打开两个虚拟机,在1号虚拟机上启动了两个实例,打开了3个连接到scott用户的窗口;在2号虚拟机上启动了一个实例,打开了一个连接到scott用户的窗口。这时我登录sys用户执行drop user操作,复现了上述报错。

点击(此处)折叠或打开

  1. [oracle@enmoedu1 ~]$ sqlplus / as sysdba

  2. SQL*Plus: Release 11.2..3.0 Production on Fri Apr 17 21:25:40 2015

  3. Copyright (c) 1982, 2011, Oracle. All rights reserved.

  4. Connected to:

  5. Oracle Database 11g Enterprise Edition Release 11.2..3.0 - Production

  6. With the Partitioning, OLAP, Data Mining and Real Application Testing options

  7. SQL> drop user scott cascade;

  8. drop user scott cascade

  9. *

  10. ERROR at line 1:

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

  12. SQL>

首先,我们查看scott用户的连接状况;

点击(此处)折叠或打开

  1. SQL> select username,sid,serial# from v$session where username='SCOTT';

  2. USERNAME SID SERIAL#

  3. ------------------------------ ---------- ----------

  4. SCOTT 19 355

  5. SCOTT 20 13693

  6. SCOTT 26 15

  7. SCOTT 127 7

  8. SQL>

接下来,我们kill上述连接;

点击(此处)折叠或打开

  1. SQL> alter system kill session'19,355';

  2. System altered.

  3. SQL> alter system kill session'20,13693';

  4. System altered.

  5. SQL> alter system kill session'26,15';

  6. System altered.

  7. SQL> alter system kill session'127,7';

  8. System altered.

  9. SQL>

再次查询scott用户的连接状况,确认所有连接被清除完毕;

点击(此处)折叠或打开

  1. SQL> 

  2. SQL> select username,sid,serial# from v$session where username='SCOTT';

  3. USERNAME SID SERIAL#

  4. ------------------------------ ---------- ----------

  5. SCOTT 19 355

  6. SCOTT 20 13693

  7. SCOTT 26 15

  8. SCOTT 127 7

  9. SQL>

看到这儿,不要惊慌,不要以为这些连接还在;我们只要查询一下上述连接的状态就明白了。

点击(此处)折叠或打开

  1. SQL> 

  2. SQL> select saddr,sid,serial#,paddr,username,status from v$session where username is not null;

  3. SADDR SID SERIAL# PADDR USERNAME STATUS

  4. -------- ---------- ---------- -------- ------------------------------ --------

  5. 578CC410 19 355 583AD258 SCOTT KILLED

  6. 578C9890 20 13693 583AD258 SCOTT KILLED

  7. 578B9390 26 15 583AD258 SCOTT KILLED

  8. 579DED90 120 95 5836FFB4 SYS ACTIVE

  9. 579CBD10 127 7 583AD258 SCOTT KILLED

  10. SQL>

由上述查询结果得知,scott用户的所有连接已经被kill了;现在我们执行drop user,看一下是否能够成功;

点击(此处)折叠或打开

  1. SQL> 

  2. SQL> drop user scott cascade;

  3. User dropped.

  4. SQL>

由此,ORA-01940报错得到顺利解决。

以上是“oracle中出现ORA-01940:无法删除当前已连接的用户怎么办”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:http://blog.itpub.net/69916968/viewspace-2641789/

AI

开发者交流群×