无法在oracle中删除用户

时间:2010-09-08 11:09:25

标签: oracle oracle10g

我正在尝试使用我的应用程序在oracle 10g中删除一个表空间。

关于我的应用程序 - 在我的应用程序中,我可以创建表空间。

现在oracle中发生的事情是,当您创建表空间时,会自动创建一个新用户并将其附加到数据库。

当您必须删除表空间时,必须先执行以下操作:首先删除连接到数据库的用户,然后删除数据库。

当我尝试删除与表空间关联的用户时。 数据库引发异常,即System.Data.OracleClient.OracleException

例外的详细信息如下 - ORA - 01904(不能删除当前连接的用户)

事情是我已经关闭了所有的连接。确定这一点。

仍然是oracle正在抛出这个异常。

任何建议???

仍然无法删除用户并抛出异常。

5 个答案:

答案 0 :(得分:1)

您可能会关闭应用程序,但没有结束该用户的Oracle会话。以sysdba身份登录并查询活动会话:

SQL> select sid, serial#, username from v$session;

       SID    SERIAL# USERNAME                      
---------- ---------- ------------------------------
       122       2557 SYS                   
       126       7878 SOME_USER                      

如果您在此列表中找到您的用户,则终止所有会话:

SQL> alter system kill session 'sid,serial#';

答案 1 :(得分:0)

似乎是你的错误代码是ORA-01940而不是ORA-01904,它说 -

ORA-01940:无法DROP当前登录的用户

原因:尝试删除当前登录的用户。

操作:确保用户已注销,然后重新执行该命令。

希望以下链接可以帮助您 -

http://www.dba-oracle.com/t_ora_01940_cannot_drop_user.htm

答案 2 :(得分:0)

我们做以下工作..

ALTER TABLESPACE "OUR_INDEX" OFFLINE NORMAL;
DROP TABLESPACE "OUR_INDEX" INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

答案 3 :(得分:0)

请确保您尝试删除的用户当前未连接。我去年确实遇到过这个问题。我的解决方法是重新启动数据库。一旦数据库启动,我就会删除用户。

我还没试过的另一种解决方法是重启监听器。这也(逻辑上)可以确保在侦听器关闭时“未被删除”用户未连接。

此解决方法(当然)不能在生产数据库中使用。

答案 4 :(得分:0)

创建表空间时,不会自动创建用户。

为用户提供默认表空间。他们可能(或可能不)在该表空间中创建对象。他们也可能(或可能不)在其他表空间中创建对象。

通常,我会删除用户的对象,而不是删除用户。然后锁定帐户,以便他们无法再次登录。然后撤销他们拥有的任何特权。

如果需要,您可以在一个月左右之后删除“未使用”的用户。