共计 2243 个字符,预计需要花费 6 分钟才能阅读完成。
这篇文章主要为大家展示了“oracle 中出现 ORA-01940: 无法删除当前已连接的用户怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“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 操作,复现了上述报错。
点击 (此处) 折叠或打开
[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: 无法删除当前已连接的用户怎么办”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!