首页 文章

无法在oracle中删除用户

提问于
浏览
0

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

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

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

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

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

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

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

仍然是oracle正在抛出这个例外 .

有什么建议???

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

5 回答

  • 0

    您可能会关闭应用程序,但没有为该用户结束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

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

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

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

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

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

    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

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

    用户确实被分配了一个默认表空间 . 他们可能(或可能不)在该表空间中创建对象 . 它们也可能(或可能不)在其他表空间中创建对象 .

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

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

相关问题