遇到个分区表数据量超大的case,磁盘空间不够,所以考虑使用数据泵分批导数据,测试如下:
source : oracle windows 32bit 10.2.0.1
target : oracle windows 64bit 11.2.0.1
使用系统自带sh用户下的sales分区表:
expdp:
expdp sh/sh dumpfile=sales_p.dmp directory=dump logfile=sales.log tables=sales:SALES_1995,sales:SALES_1996,sales:SALES_H1_1997,sales:SALES_H2_1997,sales:SALES_Q1_1998,sales:SALES_Q1_1999,sales:SALES_Q1_2000,sales:SALES_Q1_2001,sales:SALES_Q1_2002,sales:SALES_Q1_2003,sales:SALES_Q2_1998,sales:SALES_Q2_1999,sales:SALES_Q2_2000,sales:SALES_Q2_2001,sales:SALES_Q2_2002,sales:SALES_Q2_2003,sales:SALES_Q3_1998,sales:SALES_Q3_1999,sales:SALES_Q3_2000
expdp sh/sh dumpfile=sales_p2.dmp directory=dump logfile=sales2.log tables=sales:SALES_Q3_2001,sales:SALES_Q3_2002,sales:SALES_Q3_2003,sales:SALES_Q4_1998,sales:SALES_Q4_1999,sales:SALES_Q4_2000,sales:SALES_Q4_2001,sales:SALES_Q4_2002,sales:SALES_Q4_2003
impdp:
impdp sh/sh dumpfile=sales_p.dmp directory=dump logfile=sales.log tables=sales:SALES_1995,sales:SALES_1996,sales:SALES_H1_1997,sales:SALES_H2_1997,sales:SALES_Q1_1998,sales:SALES_Q1_1999,sales:SALES_Q1_2000,sales:SALES_Q1_2001,sales:SALES_Q1_2002,sales:SALES_Q1_2003,sales:SALES_Q2_1998,sales:SALES_Q2_1999,sales:SALES_Q2_2000,sales:SALES_Q2_2001,sales:SALES_Q2_2002,sales:SALES_Q2_2003,sales:SALES_Q3_1998,sales:SALES_Q3_1999,sales:SALES_Q3_2000
impdp sh/sh dumpfile=sales_p2.dmp directory=dump logfile=sales2.log tables=sales:SALES_Q3_2001,sales:SALES_Q3_2002,sales:SALES_Q3_2003,sales:SALES_Q4_1998,sales:SALES_Q4_1999,sales:SALES_Q4_2000,sales:SALES_Q4_2001,sales:SALES_Q4_2002,sales:SALES_Q4_2003 table_exists_action=append
分区过多使用notepad++宫格回车替换成:的方法再结合select 'sales:'||partition_name from user_tab_partitions where table_name='SALES'的输出结果很简单实现。
如有疑问请在评论中留言。