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

用删除某个用户,但是删除时有用户连接

SQL> conn /as sysdba

Connected.

SQL> drop user test cascade;

drop user test cascade

*

ERROR at line 1:

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

 

通过查看用户的进行,并kill用户进程,然后删除用户

SQL> select sid,serial# from v$session where username='test';

 

no rows selected

 

SQL> select sid,serial# from v$session where username='TEST';

 

       SID    SERIAL#

---------- ----------

       150       9019

 

SQL> alter system kill session '150,9019';

 

System altered.

注:这里有点怪,我明明通过kill杀掉了TEST的连接会话,但是我还可以通过test用户行sql的查询,所以造成了我继续查询出现了两条信息。

SQL> select sid,serial# from v$session where username='TEST';

 

       SID    SERIAL#

----------  ----------

       138       2947

       150       9019

这里我很纳闷,为什么ORACLEkill命令并不能真正杀掉进程吗?

SQL> alter system kill session '150,9019';

 

System altered.

 

SQL> alter system kill session '138,2947';     

 

System altered.

但是我在kill掉进程后,马上删除用户,用户就直接被删除了。难道ORACLEkill命令并不真正的杀掉用户进程,而只是表面上的一直现象,后面的操作才是真正的起作用?

SQL>  drop user test cascade;

 

User dropped.

你可能感兴趣的:(oracle)