暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

故障处理|Oracle 如何解决 ORA-01940:无法删除当前连接的用户

原创 小小亮 2022-10-27
1859

ORA-01940

试图级联删除所有内容的用户,但失败并出现 ORA-01940。

SQL> drop user hr cascade;
drop user hr cascade
*
ERROR at line 1:
ORA-01940: cannot drop a user that is currently connected

ORA-01940 表示某些用户仍在连接到您要删除的帐户,因此 Oracle 暂时无法删除它。

让我们看看谁还在连接它。

SQL> column machine format a30;
SQL> column osuser format a20;
SQL> select machine, osuser from v$session where username = 'HR';

MACHINE                        OSUSER
------------------------------ --------------------
WORKGROUP\LAPTOP-B0A8Y34T      scott

如您所见,有一个会话连接到该帐户。

解决方案

在我们删除用户之前,需要断开连接到该帐户的所有会话。您可以要求他们正常退出会话。或者干脆杀死会话,如果他们不介意的话。

在这里,我们编写了一些杀死会话的语句。

SQL> select 'alter system kill session ''' || sid || ',' || serial# || ''' immediate;' stmts from v$session where username = 'HR';

STMTS
--------------------------------------------------------------------------------
alter system kill session '1725,53875' immediate;

然后我们发布声明。

SQL> alter system kill session '1725,53875' immediate;

System altered.

现在我们可以做我们的工作了。

SQL> drop user hr cascade;

User dropped.


原文标题:How to Resolve ORA-01940: cannot drop a user that is currently connected

原文作者:  Ed Chen

原文链接:https://logic.edchen.org/how-to-resolve-ora-01940-cannot-drop-a-user-that-is-currently-connected/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论