发表于: 2008.10.20 23:39
分类: ORACLE
出处: http://yangtingkun.itpub.net/post/468/472525
---------------------------------------------------------------
在使用EXP/IMP进行数据的迁移,经常会需要转换表空间的操作。
这里介绍10g的数据泵是如何进行表空间的转换的。
EXP转换表空间:http://yangtingkun.itpub.net/post/468/455820
EXP转化表空间(二):http://yangtingkun.itpub.net/post/468/456284
前面两篇文章介绍了EXP/IMP在导出、导入表的时候,如何转换原有的表空间。
对于表包含多个段的情况,EXP/IMP工具没有完全实现表空间存储参数的转化,因此使得转化表空间变得十分困难。
而数据库EXPDP/IMPDP由于采用了DBMS_METADATA来获取源数据,因此在转化表空间的时候可以完整的全部替换。解决了分区表、LOB表以及包含OVERFLOW段的索引组织表的表空间转化问题。
使用数据泵进行操作使得问题变得十分简单,只需要导入的时候执行指定一个参数就可以了:
SQL> CREATE TABLE T_PARTITION (ID NUMBER, NAME VARCHAR2(30))
2 PARTITION BY RANGE (ID)
3 (PARTITION P1 VALUES LESS THAN (100) TABLESPACE EXAMPLE,
4 PARTITION P2 VALUES LESS THAN (MAXVALUE) TABLESPACE EXAMPLE);
表已创建。
SQL> INSERT INTO T_PARTITION SELECT ROWNUM, TABLE_NAME FROM DBA_TABLES;
已创建1640行。
SQL> COMMIT;
提交完成。
数据泵导出这个表:
E:>expdp yangtk/yangtk directory=d_output dumpfile=t_partition.dp tables=t_partition
Export: Release 10.2.0.1.0 - Production on 星期二, 21 10月, 2008 0:33:07
Copyright (c) 2003, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options启动 "YANGTK"."SYS_EXPORT_TABLE_01": yangtk/******** directory=d_output dumpfil
e=t_partition.dp tables=t_partition正在使用 BLOCKS 方法进行估计...处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA使用 BLOCKS 方法的总估计: 192 KB处理对象类型 TABLE_EXPORT/TABLE/TABLE
. . 导出了 "YANGTK"."T_PARTITION":"P2" 44.82 KB 1541 行
. . 导出了 "YANGTK"."T_PARTITION":"P1" 6.804 KB 99 行已成功加载/卸载了主表 "YANGTK"."SYS_EXPORT_TABLE_01"
******************************************************************************
YANGTK.SYS_EXPORT_TABLE_01 的转储文件集为:
E:DMPT_PARTITION.DP作业 "YANGTK"."SYS_EXPORT_TABLE_01" 已于 00:33:29 成功完成
下面删除测试表:
SQL> DROP TABLE T_PARTITION PURGE;
表已删除。
在使用数据泵导入的时候指定参数REMAP_TABLESPACE参数来转化表空间:
E:>impdp yangtk/yangtk directory=d_output dumpfile=t_partition.dp remap_tablespace=example:yangtk
Import: Release 10.2.0.1.0 - Production on 星期二, 21 10月, 2008 0:35:37
Copyright (c) 2003, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options已成功加载/卸载了主表 "YANGTK"."SYS_IMPORT_FULL_01"启动 "YANGTK"."SYS_IMPORT_FULL_01": yangtk/******** directory=d_output dumpfile
=t_partition.dp remap_tablespace=example:yangtk处理对象类型 TABLE_EXPORT/TABLE/TABLE处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
. . 导入了 "YANGTK"."T_PARTITION":"P2" 44.82 KB 1541 行
. . 导入了 "YANGTK"."T_PARTITION":"P1" 6.804 KB 99 行作业 "YANGTK"."SYS_IMPORT_FULL_01" 已于 00:35:39 成功完成
检查分区表的表空间信息:
SQL> SELECT TABLE_NAME, PARTITION_NAME, TABLESPACE_NAME
2 FROM USER_TAB_PARTITIONS
3 WHERE TABLE_NAME = 'T_PARTITION';
TABLE_NAME PARTITION_NAME TABLESPACE_NAME
------------------------------ ------------------------------ --------------------
T_PARTITION P1 YANGTK
T_PARTITION P2 YANGTK
对于10g以上版本,通过数据泵的REMAP_TABLESPACE可以轻易的转化导入表的表空间信息,不用在导入直接手工提前建表了。











