用删除某个用户,但是删除时有用户连接
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
这里我很纳闷,为什么ORACLE的kill命令并不能真正杀掉进程吗?
SQL> alter system kill session '150,9019';
System altered.
SQL> alter system kill session '138,2947';
System altered.
但是我在kill掉进程后,马上删除用户,用户就直接被删除了。难道ORACLE的kill命令并不真正的杀掉用户进程,而只是表面上的一直现象,后面的操作才是真正的起作用?
SQL> drop user test cascade;
User dropped.
本文探讨了在使用Oracle数据库时遇到的问题:如何在存在连接的情况下删除用户。通过展示具体的SQL命令和操作步骤,包括查看并kill连接会话,最终成功删除用户。文章详细介绍了使用v$session视图定位连接会话,使用alter system killsession命令终止会话,以及最终使用dropuser命令删除用户的完整过程。
1738

被折叠的 条评论
为什么被折叠?



