我试图使用我的应用程序在oracle 10g中删除一个表空间 .
关于我的应用程序 - 在我的应用程序中,我可以创建表空间 .
现在oracle中发生的事情是,当您创建表空间时,会自动创建一个新用户并将其附加到数据库 .
当您必须删除表空间时,首先要删除连接到数据库的用户,然后删除数据库 .
当我尝试删除与表空间关联的用户时 . 数据库引发异常,即System.Data.OracleClient.OracleException
异常的详细信息如下 - ORA - 01904(不能删除当前连接的用户)
事情是我已经关闭了所有的连接 . 确定这一点 .
仍然是oracle正在抛出这个例外 .
有什么建议???
仍然无法删除用户并抛出异常 .
5 回答
您可能会关闭应用程序,但没有为该用户结束Oracle会话 . 以sysdba身份登录并查询活动会话:
如果您在此列表中找到您的用户,则终止他的所有会话:
似乎是你的错误代码是ORA-01940而不是ORA-01904,它说 -
ORA-01940:无法DROP当前登录的用户
原因:尝试删除当前登录的用户 .
操作:确保用户已注销,然后重新执行该命令 .
希望以下链接可以帮助您 -
http://www.dba-oracle.com/t_ora_01940_cannot_drop_user.htm
我们做以下工作..
请确保您尝试删除的用户当前未连接 . 我去年确实遇到过这个问题 . 我的解决方法是重新启动数据库 . 数据库启动后,我将删除用户 .
我没有尝试过的另一种解决方法是重启监听器 . 这也(逻辑上)可以确保在侦听器关闭时“未被删除”用户未连接 .
此解决方法(当然)不能在 生产环境 数据库中使用 .
创建表空间时,不会自动创建用户 .
用户确实被分配了一个默认表空间 . 他们可能(或可能不)在该表空间中创建对象 . 它们也可能(或可能不)在其他表空间中创建对象 .
通常,我会删除用户的对象,而不是删除用户 . 然后锁定帐户,以便他们无法再次登录 . 然后撤销他们拥有的任何权限 .
如果需要,您可以在一个月左右之后删除“未使用”的用户 .