我在oracle数据库中一直使用system表空间,现在要求我们换个表空间,请问应该如何才能将我的用户dbms_cq和它下面的所有对象都移动到新表空间tablespace_cq下?
最好有个示例或者示例的链接也好啊,摆脱大家了!

解决方案 »

  1.   

    创建一个新用户,设置用户的缺剩表空间。
    exp 导出当前用户的表,imp 导入这些表到新用户下。
      

  2.   

    也只有表和索引等才有表空间,其他一些对象,不存在表空间问题
    用alter table dbms_cq.xxx_table move tablespace tablespace_cq来解决
      

  3.   

    那么用exp,imp能把索引也导过来么?
    另外,表空间不同了怎么导阿?
      

  4.   

    alter table <table_name>
    move tablespace <tablespace_name>注: 改变位置后 要重建索引
    alter index <index_name> rebuild ; ok 祝你好运
      

  5.   

    数据不多的话: 
    insert   into   user2.table_name   select   *   from   user2.table_name 
    数据多的话: 
    把数据通过exp导出成dmp文件,然后收回user2用户的unlimited   tablespace权限,再倒入数据即可 
      

  6.   

    楼主可以按以下的步骤执行一下:
    (1)alter user dbms_cq default tablespace tablespace_cq quota unlimited on tablespace_cq;(2)expdp schemas=dbms_cq:从system表空间中导出DBMS_CQ模式的所有数据.(3)impdp schemas=dbms_cq:从导出文件中导入数据到DBMS_CQ模式.因为第一步已经将DBMS_CQ用户默认表空间改为tablespace_cq,所以,现在执行导入时,也就是将数据都导入到了指定的表空间中.
      

  7.   

    impdp倒是没有试过,原来的imp可实现不了这个功能,它会把数据写回到到处是使用得tablespace,不知道bai_jiong兄是否经过试验了,如果是的话那可是受教了。
    个人感觉还是使用move稳妥,虽然比较麻烦。
      

  8.   

    回9楼,我写的只是一个思路.
    如果你要用IMPDP将源表空间中的内容导入到新的表空间,可以使用子句REMAP_TABLESPACE=SOURCE_TABLESPACE:TARGET_TABLESPACE子句就可以了,我试过了,并导入成功