天天看點

資料泵參數partition_options 在對于遷移分區表的使用。

資料泵參數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