我正在尝试使用我的应用程序在oracle 10g中删除一个表空间。
关于我的应用程序 - 在我的应用程序中,我可以创建表空间。
现在oracle中发生的事情是,当您创建表空间时,会自动创建一个新用户并将其附加到数据库。
当您必须删除表空间时,必须先执行以下操作:首先删除连接到数据库的用户,然后删除数据库。
当我尝试删除与表空间关联的用户时。 数据库引发异常,即System.Data.OracleClient.OracleException
例外的详细信息如下 - ORA - 01904(不能删除当前连接的用户)
事情是我已经关闭了所有的连接。确定这一点。
仍然是oracle正在抛出这个异常。
任何建议???
仍然无法删除用户并抛出异常。
答案 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当前登录的用户
原因:尝试删除当前登录的用户。
操作:确保用户已注销,然后重新执行该命令。
希望以下链接可以帮助您 -
答案 2 :(得分:0)
我们做以下工作..
ALTER TABLESPACE "OUR_INDEX" OFFLINE NORMAL;
DROP TABLESPACE "OUR_INDEX" INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
答案 3 :(得分:0)
请确保您尝试删除的用户当前未连接。我去年确实遇到过这个问题。我的解决方法是重新启动数据库。一旦数据库启动,我就会删除用户。
我还没试过的另一种解决方法是重启监听器。这也(逻辑上)可以确保在侦听器关闭时“未被删除”用户未连接。
此解决方法(当然)不能在生产数据库中使用。
答案 4 :(得分:0)
创建表空间时,不会自动创建用户。
为用户提供默认表空间。他们可能(或可能不)在该表空间中创建对象。他们也可能(或可能不)在其他表空间中创建对象。
通常,我会删除用户的对象,而不是删除用户。然后锁定帐户,以便他们无法再次登录。然后撤销他们拥有的任何特权。
如果需要,您可以在一个月左右之后删除“未使用”的用户。