2010-09-08 88 views
0

我想使用我的应用程序删除Oracle 10g中的表空间。无法在oracle中删除用户

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

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

当您必须删除表空间时,必须首先删除连接到数据库的用户,然后删除数据库。

当我尝试删除与表空间关联的用户时。 一个例外是由作为System.Data.OracleClient.OracleException

数据库抛出的异常的细节如下: - ORA - 01904(不能删除当前连接的用户)

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

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

任何建议???

仍然不能放弃用户并抛出异常。

+1

0123现在在oracle中发生的事情是,当你创建一个表空间时,一个新用户自动被创建并被连接到数据库......这是正确的吗?那个用户是什么? – Jayan 2010-09-08 11:20:17

回答

1

您可能会关闭应用程序但未结束该用户的Oracle会话。如果你发现你的用户在此列表中,然后杀死他的所有会话

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

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

:登录以SYSDBA和查询活动的会话

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

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

ORA-01940:不能删除当前登录

导致用户:试图放弃目前这是登录的用户

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

希望下面的链接,可以帮助您 -

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

0

我们下面和工程..

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

请确保你想删除用户目前不连接的。去年我确实遇到过这个问题。我的解决方法是重新启动数据库。一旦数据库启动,我就放弃用户。

我还没有尝试过的另一个解决方法是重新启动侦听器。这也是(逻辑上)可以确保当监听器关闭时'待丢弃'用户未连接。

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

0

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

用户确实获得了一个默认表空间。他们可能(或可能不)在该表空间中创建对象。他们可能(也可能不)在其他表空间中创建对象。

一般情况下,而不是放弃用户,我会放弃用户的对象。然后锁定该帐户,使其无法再次登录。然后撤销他们拥有的任何特权。

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