说明
oracle中调整表所归属的表空间。根据表中是否含有LOB、LONG类型字段,分成两种迁移方法。
步骤
表中不含LOB、LONG类型字段
- 使用DBA权限用户登录数据库,执行如下sql(注意替换sql中参数)
select 'alter table '||T.OWNER||'.' ||T.TABLE_NAME || ' move tablespace XXX;' FROM dba_tables t where T.OWNER='YYY' AND T.TABLESPACE_NAME='ZZZ';
- 执行生成的sql(注意替换sql中参数)
alter table YYY.table_name move tablespace XXX;
- 重建索引
alter index unm.index_name rebuild tablespace tablespace_name
- 使用DBA权限用户登录数据库,执行如下sql(注意替换sql中参数)
表中含LOB、LONG类型字段
- 使用exp工具导出表(注意替换命令中参数)
exp unm/pwd@192.168.1.8:1521/orcl tables=umn.tablename file=d:\dmp\TABLE.dmp;
- 登录数据库,删除原表
drop tableumn.tablename;
- 修改表空间
使用文本工具打开导出的表备份d:\dmp\TABLE.dmp,搜索并替换TABLESPACE “ZZZ”为TABLESPACE “XXX” - 使用imp工具,将修改后的备份文件导回数据库
imp unm/pwd@192.168.1.8:1521/orcl fromuser=unmtouser=unmfile=d:\dmp\TABLE.dmp;
- 重建索引
alter index unm.index_name rebuild tablespace tablespace_name
- 使用exp工具导出表(注意替换命令中参数)