因为建用户的时候没有指定表空间,现在都跑了一段时间数据了。想把System表空间下的用户切换到users下面,包含该用户下的所有表、索引和数据等。烦请各位大虾指点,谢谢了先。

解决方案 »

  1.   

    自己写批处理生成如下语句:alter table table1 move tablespace users;
    alter index index1 rebuild tablepsace users;
    alter user  user1 default tablespace users;例如 :
    select 'alter table ' || table_name || ' move tablespace users;' from user_tables where tablespace_name='SYSTEM';
      

  2.   

    导入导出功能
    例如将数据库中system用户的表导出
    exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 
    注:如果用exp system/manager@TEST file=d:\daochu.dmp owner=(system),会将所有是system用户的表都导出,所以还是一个表一个表的写吧!
    接着导入到user用户表
    imp user/test@TEST fromuser=system touser=user file=d:\daochu.dmp,就可以了
      

  3.   

    楼上大概是以为表是在system用户下了,楼主说的应该是某用户的表在system表空间下。
      

  4.   

    不是将system表空间的表转移到user表空间吗?
    alter table table1 move tablespace users;转移表空间是可以,但要看实际情况,如果表的数据量很小的话可以考虑,如果数据量大的话重建索引会耗时比较长