oracle中出现ORA-01940:无法删除当前已连接的用户怎么办-创新互联
这篇文章主要为大家展示了“oracle中出现ORA-01940:无法删除当前已连接的用户怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“oracle中出现ORA-01940:无法删除当前已连接的用户怎么办”这篇文章吧。
创新互联公司成立十载来,这条路我们正越走越好,积累了技术与客户资源,形成了良好的口碑。为客户提供成都做网站、成都网站建设、网站策划、网页设计、域名与空间、网络营销、VI设计、网站改版、漏洞修补等服务。网站是否美观、功能强大、用户体验好、性价比高、打开快等等,这些对于网站建设都非常重要,创新互联公司通过对建站技术性的掌握、对创意设计的研究为客户提供一站式互联网解决方案,携手广大客户,共同发展进步。在现场作业时,需要先删除用户;在执行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操作,复现了上述报错。
点击(此处)折叠或打开
[oracle@enmoedu1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2..3.0 Production on Fri Apr 17 21:25:40 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2..3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> drop user scott cascade;
drop user scott cascade
*
ERROR at line 1:
ORA-01940: cannot drop a user that is currently connected
SQL>
首先,我们查看scott用户的连接状况;
点击(此处)折叠或打开
SQL> select username,sid,serial# from v$session where username='SCOTT';
USERNAME SID SERIAL#
------------------------------ ---------- ----------
SCOTT 19 355
SCOTT 20 13693
SCOTT 26 15
SCOTT 127 7
SQL>
接下来,我们kill上述连接;
点击(此处)折叠或打开
SQL> alter system kill session'19,355';
System altered.
SQL> alter system kill session'20,13693';
System altered.
SQL> alter system kill session'26,15';
System altered.
SQL> alter system kill session'127,7';
System altered.
SQL>
再次查询scott用户的连接状况,确认所有连接被清除完毕;
点击(此处)折叠或打开
SQL>
SQL> select username,sid,serial# from v$session where username='SCOTT';
USERNAME SID SERIAL#
------------------------------ ---------- ----------
SCOTT 19 355
SCOTT 20 13693
SCOTT 26 15
SCOTT 127 7
SQL>
看到这儿,不要惊慌,不要以为这些连接还在;我们只要查询一下上述连接的状态就明白了。
点击(此处)折叠或打开
SQL>
SQL> select saddr,sid,serial#,paddr,username,status from v$session where username is not null;
SADDR SID SERIAL# PADDR USERNAME STATUS
-------- ---------- ---------- -------- ------------------------------ --------
578CC410 19 355 583AD258 SCOTT KILLED
578C9890 20 13693 583AD258 SCOTT KILLED
578B9390 26 15 583AD258 SCOTT KILLED
579DED90 120 95 5836FFB4 SYS ACTIVE
579CBD10 127 7 583AD258 SCOTT KILLED
SQL>
由上述查询结果得知,scott用户的所有连接已经被kill了;现在我们执行drop user,看一下是否能够成功;
点击(此处)折叠或打开
SQL>
SQL> drop user scott cascade;
User dropped.
SQL>
由此,ORA-01940报错得到顺利解决。
以上是“oracle中出现ORA-01940:无法删除当前已连接的用户怎么办”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联-成都网站建设公司行业资讯频道!
本文名称:oracle中出现ORA-01940:无法删除当前已连接的用户怎么办-创新互联
标题路径:http://scjbc.cn/article/gdhec.html