ORA-01940:无法删除当前已连接的用户

摘要:
当时时间比较着急,直接采取了釜底抽薪的办法——拔网线,这招很管用,再次执行dropuser就成功了。考虑到以后不一定所有场合都允许你采取这种简单粗暴的办法,就在虚拟机上重现了这个报错,寻求一种较为温和的解决办法。首先我打开两个虚拟机,在1号虚拟机上启动了两个实例,打开了3个连接到scott用户的窗口;在2号虚拟机上启动了一个实例,打开了一个连接到scott用户的窗口。这时我登录sys用户执行dropuser操作,复现了上述报错。

当时时间比较着急,直接采取了釜底抽薪的办法——拔网线,这招很管用,再次执行drop user就成功了。考虑到以后不一定所有场合都允许你采取这种简单粗暴的办法,就在虚拟机上重现了这个报错,寻求一种较为温和的解决办法。
首先我打开两个虚拟机,在1号虚拟机上启动了两个实例,打开了3个连接到scott用户的窗口;在2号虚拟机上启动了一个实例,打开了一个连接到scott用户的窗口。这时我登录sys用户执行drop user操作,复现了上述报错。

点击(此处)折叠或打开

  1. [oracle@enmoedu1~]$sqlplus/assysdba
  2. SQL*Plus:Release11.2.0.3.0 ProductiononFri Apr 17 21:25:40 2015
  3. Copyright(c)1982,2011,Oracle.Allrights reserved.
  4. Connectedto:
  5. OracleDatabase11g Enterprise EditionRelease11.2.0.3.0-Production
  6. Withthe Partitioning,OLAP,DataMiningandRealApplication Testing options
  7. SQL>dropuserscottcascade;
  8. dropuserscottcascade
  9. *
  10. ERROR at line 1:
  11. ORA-01940:cannotdropauserthatiscurrently connected
  12. SQL>

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

点击(此处)折叠或打开

  1. SQL>selectusername,sid,serial#fromv$sessionwhereusername='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>altersystem killsession'19,355';
  2. System altered.
  3. SQL>altersystem killsession'20,13693';
  4. System altered.
  5. SQL>altersystem killsession'26,15';
  6. System altered.
  7. SQL>altersystem killsession'127,7';
  8. System altered.
  9. SQL>

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

点击(此处)折叠或打开

  1. SQL>
  2. SQL>selectusername,sid,serial#fromv$sessionwhereusername='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>selectsaddr,sid,serial#,paddr,username,statusfromv$sessionwhereusernameisnotnull;
  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>dropuserscottcascade;
  3. Userdropped.
  4. SQL>

由此,ORA-01940报错得到顺利解决。大家如果以后碰到这个问题,可以按照实际环境来决定是采取“简单粗暴”的解决办法(拔网线),还是上述这种“温和”的解决办法。

免责声明:文章转载自《ORA-01940:无法删除当前已连接的用户》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于HTTP协议头域详解Git敏捷开发--rebase命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

oracle怎么建立本地连接

sqlplus连接oracle数据库(连接本地oracle数据库和连接远程的oracle数据库) 虽然我们现在平时都是使用PLSQL Developer这个软件工具了,但是我们还是要了解sqlplus 想要成功连接本地的oracle数据库,首先要确保本地的这2个服务是处于启动状态 (重要)OracleOraDb11g_home1TNSListener ...

Oracle 12c 数据库中scott用户不存在的解决方法

-- 使用超级管理员登录CONN sys/change_on_install AS SYSDBA ;-- 创建c##scott用户CREATE USER c##scott IDENTIFIED BY tiger ;-- 为用户授权GRANT CONNECT,RESOURCE,UNLIMITED TABLESPACE TO c##scott CONTAINE...

oracle dblink使用

一、dblink介绍 dblink是一个单向的数据库连接,通过设置可以访问其他数据库中的数据跟使用本地数据库中数据一样的感觉,但注意是单向的dblink。例如:A建连B的dblink,A可以访问B的表,插入数据到B的表等,但反过来B不可以。 创建dblink一般有两种方式,不过在创建dblink之前用户必须有创建dblink的权限。想知道有关dblink的...

oracle之二物化视图

物化视图 18.1、物化视图作用 1) 物化视图起源于数据仓库,早期的考虑是用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免在基表上进行这些耗时的操作,从而快速的得到结果。 2) 物化视图和表一样可以直接进行查询。物化视图还用于复制、移动计算等方面。 alter table t add primary key (empn...

Mongodb查询

https://www.cnblogs.com/t2xingzhe/p/3555268.html 数据库查询 db.ser.find()#select * from ser;只输出id和time字段,第一个参数为查询条件,空代表查询所有db.ser.find({"name" : scott})#select * from ser where name='s...

PLsql/Oracle数据库中没有scott账户,如何创建并解锁

当然首先要装好Oracle 11g 然后还要有sqlplus,这个在Oracle11g的时候应该都会配上的 进入正题,如果oracle/plsql没scott账户,如何创建 先找到Oracle安装目录下的soctt.sql 我的是在: E:app91959product11.2.0dbhome_1admin 如果没有soctt.sql,先建立一个txt文件...