1、使用imp/exp。先导出源库,再建立新库把表空间建立好,而后再导入。(听说这样能够,前提是新的库里面不能有与源库相同名字的表空间。有待验证!)
2、使用脚本进行修改。据目前所了解,正长状况下须要修改表的空间和表的索引的空间,若是涉及到BOLB字段的表,修改的方式又不同了!
正常状况下的修改脚本:
1.修改表的空间
alter table TABLE_NAME move tablespace TABLESPACENAME
查询当前用户下的全部表
select 'alter table '|| table_name ||' move tablespace tablespacename;' from user_all_tables;
2.修改表的索引的空间
alter index INDEX_NAME rebuild tablespace TABLESPACENAME
查询当前用户下的全部索引
select 'alter index '|| index_name ||' rebuild tablespace tablespacename;' from user_indexes;
可使用脚本执行查询的结果,这样就能够批量处理!
不正常状况即含有BLOB字段的表:
参考下面的文档
本人已经执行过,是可行的,可是不知道有没有漏掉数据库中其它对象。是否还存在有对象的表空间须要修改,须要进一步发现或有数据库高手帮忙讲解则不胜感激!目前的修改在项目中尚未出现问题!
在移植看注意研究了下ORACLE ALTER TABLE MOVE 的语法:
ALTER TABLE table_name MOVE [ONLINE] tablespace_name;
经过上面的语句能够移植表到新表空间,
若是要移植LOB字典须要参考如下语法:
ALTER TABLE table_name LOB (lob_item) STORE AS [lob_segment]
(
TABLESPACE tablespace_name
(STORAGE.....)
ENABLE|DISABLE STORAGE IN ROW
CHUNK integer
PCTVERSION integer
RETENTION
FREEPOOLS integer
CACHE|NOCACHE|CACHE R