本人之前在oracle11g里面进行了一个测试,现在测试完了,想把这个测试的库删掉,然后就在sqlplus
里面drop user ×× cascade ;但是发现存在我电脑盘符下的数据文件还是存在的,所以很好奇,是不是这里面的删除是指的逻辑上的删除这个用户下的表,硬盘上的数据文件虽然仍然存在,但是里面是空的。不知道我这样理解对不对,另外我删除了用户后还需要删除表空间么?还是说删除了用户后自动就释放表空间了,不用管了?还有如果想删除磁盘上的存储的物理数据文件正确的操作应该是怎样呢?带着这些疑问发了这个帖子,希望得到高手指点。

解决方案 »

  1.   

    楼主,首先你在硬盘盘符下看到的文件是数据库存放数据的数据文件,执行完drop user xxx cascade;后,会把用户及用户所属的表删除掉,但表空间还是存在的,只是里面的数据已被删除掉了。
    如果楼主全部用刚才删除的用户进行的测试的话,执行完上述语句已经把用来测试的数据删除掉了,没有必要把整个库删除掉。
    最后说一点,删除了用户和数据后是不会自动释放表空间的,表空间容量是建立数据库的时候初始化的,比方说XXX tablespace 容量为1G,你删除数据是不影响这个容量的,它在硬盘上仍然占用1G空间。
    不知楼主能不能读懂
      

  2.   

    -- 先删除用户(如果要删除的表空间上有多个用户有相关数据,则要将多个用户都删除)
    drop user user_name;-- 再删除表空间:
    drop tablespace tablespace_name including contents and datafiles;
      

  3.   

    你创建表空间的时候有个初始化大小,如果你设置1G,即便你没有放入任何数据,也会占用你磁盘空间1G 的,如果超过1G,会自动增长,直到你设置的最大值。
    如果你不想让表中的数据占用表空间的空间,你用truncate的删除就可以了,这个会释放空间的。
      

  4.   

    drop tablespace tablespace_name including contents and datafiles;
    对头
      

  5.   

    先删除用户文件
    drop user user_name
    再删除表空间
    drop tablespace tablespace_name including contents and datafiles;
      

  6.   


    那如果我又2个用户,USER1与USER2,使用的表空间都是USERS,那我要删除USER1用户呢?
      

  7.   


    drop user user_name;
    drop tablespace tablespace_name including contents and datafiles;