ORA-01940: cannot drop a user that is currently connected 问题解析

来源:互联网 发布:卡通人物头像制作软件 编辑:程序博客网 时间:2024/06/01 07:18

删除数据库用户的时候经常会遇到这样的错误;

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

原因是有程序在连接我们需要删除的用户,我们删除用户之前一定要先把连接断掉;

1、查找帐号下哪些连接在运行:

SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='USERNAME';

注意:此处需要大写

SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='SSTEST';    


       SID    SERIAL#
---------- ----------
       137 41813
       335 25993
       464 58747
       500 9153
       531 50402
       629 9264
       631 11237
       664 36180


8 rows selected.


2、删除用户进程;

SQL>ALTER  SYSTEM  KILL SESSION '137,41813';

System altered.

SQL>ALTER SYSTEM KILL SESSION '33525993;

System altered.


3、重新查看用户连接,并确认无连接在使用

SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='SSCRM';    


4、删除用户

drop  user sstest cascade ;


或者是

根据文档的描述,如果数据库处于RESTRICTED SESSION状态,则禁止用户采用NET服务方式登陆,而必须在服务器上直接登陆,但是测试发现,Oracle并没有这个限制。

SQL> conn / as sysdba已连接。
SQL> alter system disable restricted session;

系统已更改。

SQL> conn test/test@test11g已连接。
SQL> conn / as sysdba
已连接。
SQL> alter system enable restricted session;

系统已更改。