各位前辈,刚开始用oracle,对数据库也是一无所知,所以我问的问题可能很无知,但是我搜索了很久还是没有找到答案,见笑了。我想删除一个用户和用户相关的一个表空间,是不是应该先删除表空间,然后删除用户?我在删除表空间的时候出现错误:
ORA-00604: 递归 SQL 级别 2 出现错误 ORA-00376: 此时无法读取文件 5 ORA-01110: 数据文件 5: 'D:\SDE.DBF' ORA-06512: 在 line 1  
由于我用其他的软件对这个表文件做过分区,所以我就试着删除下面的分区,可是报这样的错误:ORA-29857: 表空间中存在域索引和/或次级对象 。
再去试着删除用户,报这样的错误:ORA-01940: 无法删除当前已连接的用户 谢谢各位前辈了。

解决方案 »

  1.   

    你是要删除用户及该用户数据?
    如果是要删除用户及该用户的所有数据的话可以用
    Drop user username cascade;还是删除表空间?表空间一般不作删除
      

  2.   

    用sys登录 , 先Drop user username cascade; 再Drop tablespace
      

  3.   

    使用 sys 或 system 用户登录 ,然后Drop user username cascade;cascade 级联删除,然后可以删除所用的表空间啦
      

  4.   

    你不会是先在操作系统级把数据文件给删除了吧?
    如果是这样的话有时候在删除表空间的时候会报错
    可以
    alter database datafile 'D:\SDE.DBF'  offline drop;
    然后再删除表空间删除用户
    drop tablespace ...
    drop user ... 
      

  5.   

    只要你当前的表空间不是在使用的过程中,你删除用户或者表空间没必然的先后顺序,
    给你条语句删除表空间然后再清理后台数据文件就可以了.
    删除的过程包括逻辑文件和物理文件的删除..drop tablespace tbsName including contents ;
    然后只要找到你的数据文件物理删除掉就好了.
      

  6.   

    zhuomingwang:你好,谢谢你的回复,我确实是直接在硬盘中的删掉了,然后我用你说的命令,还是不行啊,
      

  7.   

    无论是drop user还是drop tablespace都是提示 
    ORA-00604: 递归 SQL 级别 2 出现错误 ORA-00376: 此时无法读取文件 5 ORA-01110: 数据文件 5: 'D:\SDE.DBF' ORA-06512: 在 line 1  
    其中SDE.DBF文件已经按照5#的说法做了,提示数据库更改成功了。怎么还是会提示无法读取呢?另外我删除意外一个跟SDE.DBF这个文件毫无关系的表空间,竟然也是提示上面的那样的错误。怎么回事呢?
      

  8.   

    先删除用户吧,然后在根据设置的表空间进行删除。
    在删除用户(cascade)的时候就会把用户的所有对象删除了,如果你要删除的表空间专属于这个用户的话 应该就是已经空了,这样再删除应该就没有问题了
      

  9.   

    一定得用管理员身份DBA登录,然后操作
      

  10.   

    我也在HP的linux里面也遇到过这个问题,不过我是误操作把数据文件DBF给手动删除了。表空间不用删除,只需要删除用户,drop user 用户 cascade;这时候要报次级对象或者索引,就必须把这些索引给找出来删除后,才可以删除用户。
    我遇到这个问题的时候,已经把数据文件误删掉了,所以就重做了Oracle实例,然后恢复的数据库。期望你有最新的数据库备份,万般无奈就重做实例吧。