今天在现场作业时,需要先删除用户;在执行 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报错得到顺利解决。大家如果以后碰到这个问题,可以按照实际环境来决定是采取“简单粗暴”的解决办法(拔网线),还是上述这种“温和”的解决办法。
编辑推荐:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 万字详解Oracle架构、原理、进程,学会世间再无复杂架构
万字详解Oracle架构、原理、进程,学会世间再无复杂架构
26-03-03 - oracle数据库exp
oracle数据库exp
26-03-03 - Debian Partclone 教程(手把手教你使用 Partclone 在 Debian 系统中进行分区克隆与备份)
- Oracle数据库常用十一大操作指令
Oracle数据库常用十一大操作指令
26-03-03 - Debian OpenStack命令行操作(新手入门指南:从安装到基础管理)
- 数据安全不再是可选项
数据安全不再是可选项
26-03-03 - 数据库基础原理1:Oracle数据库体系结构
数据库基础原理1:Oracle数据库体系结构
26-03-03 - 10-oracle_表达式
10-oracle_表达式
26-03-03 - 数据架构选型必读:4月数据库产品技术解析
数据架构选型必读:4月数据库产品技术解析
26-03-03 - 11-oracle_索引
11-oracle_索引
26-03-03
