日期:2014-05-16  浏览次数:20490 次

DMP文件更换表空间的方法

从一个数据库中导出来的dmp文件,它的表空间是scms,现在导入到另一个数据库中去,在那个数据库中建立了一个gsscms的用户,使用的是wzgl_data的表空间。在导入的时候就指定为wzgl_data的表空间的方法如下:
1、在原数据库中建立表空间wzgl_data
2、在原数据库中任意建一个数据库用户,如gsscms111202,该用户使用的表空间与dmp文件中的一致,还是scms。将dmp导入用户gsscms111202中
3、修改gsscms111202用户中的所有表和索引的表空间为wzgl_data,过程如下:
(1)修改表所属表空间为wzgl_data
????? select 'alter?? table?? ' || table_name || '?? move?? tablespace?? wzgl_data; '
????? from all_tables
????? where tablespace_name = 'SCMS'
???? and owner = 'GSSCMS111202';
???? 然后执行生成的语句即可
(2)修改表的索引所属表空间为wzgl_data
????? select 'alter?? index?? ' || index_name || ' rebuild?? tablespace?? wzgl_data; '
????? from dba_indexes
????? where tablespace_name = 'SCMS'
???? and owner = 'GSSCMS111202';
????? 然后执行生成的语句即可
4、处理LOB大字段类型处理
select 'alter table ' || a.TABLE_NAME || ' move lob(' || a.COLUMN_NAME ||
?????? ') store as (tablespace WZGL_DATA);'
? from user_tab_columns a
?where a.DATA_TYPE = 'CLOB';
?然后执行生成的语句即可
5、导出用户为gsscms111202的数据库,dmp文件中的用户和索引的表空间已经变更为wzgl_data