資料泵參數partition_options 在對于遷移分區表的使用。
1 none 象在系統上的分區表一樣建立。
2 departition 每個分區表和子分區表作為一個獨立的表建立,名字使用表和分區(子分區)名字的組合。
3 merge 将所有分區合并到一個表
一 建立環境:
yang@rac1>create table yang_part2 (
2 id number,
3 create_time date,
4 value varchar2(20),
5 name varchar2(30)
6 )
7 partition by range (create_time) (
8 partition p2090 values less than (to_date('20100101','yyyymmdd')),
9 partition p201001 values less than (to_date('20100401','yyyymmdd')),
10 partition p201002 values less than (to_date('20100701','yyyymmdd')),
11 partition p201003 values less than (to_date('20101001','yyyymmdd')),
12 partition p201004 values less than (maxvalue)
13 );
表已建立。
yang@rac1>insert into yang_part2
2 select rownum id, sysdate - dbms_random.value(1,400) create_time,
3 dbms_random.string('s',15) value,
4 dbms_random.string('d',15) name
5 from dual
6 connect by level <=1e4;
已建立10000行。
yang@rac1>commit;
送出完成。
導出資料:
c:\users\aaaa>expdp yang/yang tables=yang_part2 directory=dumpdir dumpfile=yangpart2.dmp logfile=yangpart2.log
export: release 11.1.0.6.0 - production on 星期三, 30 3月, 2011 22:25:47
copyright (c) 2003, 2007, oracle. all rights reserved.
連接配接到: oracle database 11g enterprise edition release 11.1.0.6.0 - production
with the partitioning, olap, data mining and real application testing options
啟動 "yang"."sys_export_table_01": yang/******** tables=yang_part2 directory=dumpdir dumpfile=yangp
art2.dmp logfile=yangpart2.log
正在使用 blocks 方法進行估計...
處理對象類型 table_export/table/table_data
使用 blocks 方法的總估計: 832 kb
處理對象類型 table_export/table/table
. . 導出了 "yang"."yang_part2":"p201004" 219.3 kb 4549 行
. . 導出了 "yang"."yang_part2":"p201002" 111.1 kb 2239 行
. . 導出了 "yang"."yang_part2":"p201003" 114.5 kb 2312 行
. . 導出了 "yang"."yang_part2":"p201001" 48.36 kb 900 行
. . 導出了 "yang"."yang_part2":"p2090" 0 kb 0 行
已成功加載/解除安裝了主表 "yang"."sys_export_table_01"
yang@rac1>drop table yang_part2 purge;
******************************************************************************
yang.sys_export_table_01 的轉儲檔案集為:
d:\dump\yangpart2.dmp
作業 "yang"."sys_export_table_01" 已于 22:26:04 成功完成
二 一下分别使用不同參數對分區表進行導入實驗:
1)partition_options=none模式。
c:\users\aaaa>impdp yang/yang directory=dumpdir dumpfile=yangpart2.dmp partition_options=none logfile=impdpyangpart2.log
import: release 11.1.0.6.0 - production on 星期三, 30 3月, 2011 22:29:00
已成功加載/解除安裝了主表 "yang"."sys_import_full_01"
啟動 "yang"."sys_import_full_01": yang/******** directory=dumpdir dumpfile=yangpart2.dmp partition_options=none
logfile=impdpyangpart2.log
. . 導入了 "yang"."yang_part2":"p201004" 219.3 kb 4549 行
. . 導入了 "yang"."yang_part2":"p201002" 111.1 kb 2239 行
. . 導入了 "yang"."yang_part2":"p201003" 114.5 kb 2312 行
. . 導入了 "yang"."yang_part2":"p201001" 48.36 kb 900 行
. . 導入了 "yang"."yang_part2":"p2090" 0 kb 0 行
作業 "yang"."sys_import_full_01" 已于 22:29:04 成功完成
yang@rac1>select dbms_metadata.get_ddl('table','yang_part2') from dual;
dbms_metadata.get_ddl('table','yang_part2')
--------------------------------------------------------------------------------
create table "yang"."yang_part2"
( "id" number,
"create_time" date,
"value" varchar2(20),
"name" varchar2(30)
) pctfree 10 pctused 40 initrans 1 maxtrans 255
storage(
buffer_pool default)
tablespace "users"
partition by range ("create_time")
(partition "p2090" values less than (to_date(' 2010-01-01 00:00:00', 'syyyy-mm-dd hh24:mi
:ss', 'nls_calendar=gregorian'))
pctfree 10 pctused 40 initrans 1 maxtrans 255
storage(initial 65536 next 1048576 minextents 1 maxextents 2147483645
pctincrease 0 freelists 1 freelist groups 1 buffer_pool default)
tablespace "users" nocompress ,
partition "p201001" values less than (to_date(' 2010-04-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'n
ls_
calendar=gregorian'))
partition "p201002" values less than (to_date(' 2010-07-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'n
ls_calendar=gr
egorian'))
partition "p201003" values less than (to_date(' 2010-10-01 00:00:00', 'syyyy-mm-dd
hh24:mi:ss', 'nls_calendar=gregorian'))
partition "p201004" values less than (maxvalue)
tablespace "users" nocompress )
--導入的表和以前一樣。
yang@rac1>select table_name from user_tables;
table_name
------------------------------
mlog$_yangtab
yangtab2
mv_yangtab
mv_yangtab2
yangall_mv
da_test
rupd$_yangtab
yang_part2
yangtab
已選擇9行。
yang@rac1>select count(1) from yang_part2;
count(1)
----------
10000
yang@rac1>drop table yang_part2;
表已删除。
yang@rac1>purge recyclebin;
資源回收筒已清空。
2 partition_options=merge 模式:
c:\users\aaaa>impdp yang/yang directory=dumpdir dumpfile=yangpart2.dmp partition_options=merge logfile=impdpyangpart3.log
import: release 11.1.0.6.0 - production on 星期三, 30 3月, 2011 22:32:02
啟動 "yang"."sys_import_full_01": yang/******** directory=dumpdir dumpfile=yangpart2.dmp partition_options=merge
logfile=impdpyangpart3.log
作業 "yang"."sys_import_full_01" 已于 22:32:05 成功完成
) pctfree 10 pctused 40 initrans 1 maxtrans 255 nocompress logging
--導入的表被合成一個表了。
注意:如果導出時使用了transportable參數,這裡就不能使用none和merge
3)partition_options=departition 模式:
c:\users\aaaa>impdp yang/yang directory=dumpdir dumpfile=yangpart2.dmp partition_options=departition logfile=impdpyangpart3.log
import: release 11.1.0.6.0 - production on 星期三, 30 3月, 2011 22:33:20
啟動 "yang"."sys_import_full_01": yang/******** directory=dumpdir dumpfile=yangpart2.dmp partition_options=departition
. . 導入了 "yang"."yang_part2_p201004" 219.3 kb 4549 行
. . 導入了 "yang"."yang_part2_p201002" 111.1 kb 2239 行
. . 導入了 "yang"."yang_part2_p201003" 114.5 kb 2312 行
. . 導入了 "yang"."yang_part2_p201001" 48.36 kb 900 行
. . 導入了 "yang"."yang_part2_p2090" 0 kb 0 行
作業 "yang"."sys_import_full_01" 已于 22:33:26 成功完成
--在使用departition選項導入後,oracle采用預設命名方法table_name + ‘_’ + partition_name,将每個分區都建立為一張表。
yang_part2_p201001
yang_part2_p201002
yang_part2_p201003
yang_part2_p201004
yang_part2_p2090
已選擇13行。
yang@rac1>select count(1) from yang_part2_p2090;
yang@rac1>select count(1) from yang_part2_p201001;
900
yang@rac1>select count(1) from yang_part2_p201002;
2239
yang@rac1>select count(1) from yang_part2_p201003;
2312
yang@rac1>select count(1) from yang_part2_p201004;
4549