日期:2014-05-17  浏览次数:20932 次

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

------解决方案--------------------
创建一个新用户,设置用户的缺剩表空间。
exp 导出当前用户的表,imp 导入这些表到新用户下。
------解决方案--------------------
也只有表和索引等才有表空间,其他一些对象,不存在表空间问题
用alter table dbms_cq.xxx_table move tablespace tablespace_cq来解决
------解决方案--------------------
alter table <table_name>
move tablespace <tablespace_name>

注: 改变位置后 要重建索引
alter index <index_name> rebuild ; 

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

------解决方案--------------------
楼主可以按以下的步骤执行一下:
(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,所以,现在执行导入时,也就是将数据都导入到了指定的表空间中.


------解决方案--------------------
探讨
楼主可以按以下的步骤执行一下:
(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,所以,现在执行导入时,也就是将数据都导入到了指定的表空间中.

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