使用PARTITION_OPTIONS引數控制資料泵分割槽表匯入
資料泵(Data Pump)是Oracle從10g開始推出,並且不斷強化以期替代原有exp/imp工具的資料遷移工具。在11g中,資料泵產品不斷地強化功能和彌補缺陷,在原有的exp/imp功能基礎上提供了更多的靈活空間。
分割槽表Partition Table是我們經常遇到的資料物件型別。在11g中,Data Pump提供了針對分割槽表的操作選項引數PARTITION_OPTION。藉助這個新引入的引數,可以實現在匯入過程中對資料表結構進行變化。
本篇主要集中介紹PARTITION_OPTION引數的選項值和使用方法。
1、引數介紹和環境介紹
從取值上看,PARTITION_OPTIONS引數包括三個可選值,Departition、Merge和None,用於指定匯入分割槽表的轉換方式。
PARTITION_OPTIONS
Specify how partitions should be transformed.
Valid keywords are: DEPARTITION, MERGE and [NONE].
預設情況下,該引數取值為NONE,表示不進行任何轉換。如果是分割槽資料表,匯入之後依然為分割槽資料表。Departition為分表操作,也就是將每個分割槽作為一個獨立的資料表進行匯入,匯入之後可見與原資料表分割槽對應的資料表集合。
Merge引數是取消分割槽設定,將資料匯入到一個非分割槽表的轉換動作。
下面筆者使用11.2.0.4版本進行測試。
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for 64-bit Windows: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 – Production
建立實驗使用者test,以及對應的許可權資訊。
SQL> create user test identified by test;
User created
SQL> grant select any dictionary to test;
Grant succeeded
SQL> grant resource, connect to test;
Grant succeeded
SQL> grant select_catalog_role to test;
Grant succeeded
在test使用者下建立分割槽資料表t_part。
SQL> conn test/test@sicsdb
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.4.0
Connected as test
SQL> create table t_part
2 (owner varchar2(100),
3 object_id number,
4 object_name varchar2(100))
5 partition by list (owner)
6 (
7 partition p1 values ('SYS'),
8 partition p2 values ('PUBLIC'),
9 partition p3 values (default)
10 );
Table created
SQL> insert into t_part select owner, object_id, object_name from dba_objects;
99695 rows inserted
SQL> commit;
Commit complete
分割槽表結構顯示。
SQL> select table_name, partition_name, num_rows from user_tab_partitions;
TABLE_NAME PARTITION_NAME NUM_ROWS
------------------------------ ------------------------------ ----------
T_PART P1
T_PART P2
T_PART P3
SQL> exec dbms_stats.gather_table_stats(user,'T_PART',cascade => true);
PL/SQL procedure successfully completed
SQL> select table_name, partition_name, num_rows from user_tab_partitions;
TABLE_NAME PARTITION_NAME NUM_ROWS
------------------------------ ------------------------------ ----------
T_PART P1 37693
T_PART P2 33889
T_PART P3 28113
使用expdp匯出資料。
C:\Users\Administrator.SICSENVIRONMENT>expdp \"/ as sysdba\" dumpfile=test.dmp schemas=test
Export: Release 11.2.0.4.0 - Production on Mon Dec 15 14:17:48 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
(篇幅原因,有省略……)
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "TEST"."T_PART":"P1" 1.358 MB 37693 rows
. . exported "TEST"."T_PART":"P2" 1.356 MB 33889 rows
. . exported "TEST"."T_PART":"P3" 1012. KB 28113 rows
Master table "SYS"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYS.SYS_EXPORT_SCHEMA_01 is:
C:\APP\ADMINISTRATOR\ADMIN\SICSDB\DPDUMP\TEST.DMP
Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at Mon Dec 15 14:18:00 2
014 elapsed 0 00:00:10
2、Merge引數使用
Merge引數使用之後,會將原有分割槽表合併為一般資料表。
C:\Users\Administrator.SICSENVIRONMENT>impdp \"/ as sysdba\" dumpfile=test.dmp remap_table=test.t_part:t_merge partition_options=merge
Import: Release 11.2.0.4.0 - Production on Mon Dec 15 14:28:01 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit
Production
(篇幅原因,有省略……)
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "TEST"."T_MERGE":"P1" 1.358 MB 37693 rows
. . imported "TEST"."T_MERGE":"P2" 1.356 MB 33889 rows
. . imported "TEST"."T_MERGE":"P3" 1012. KB 28113 rows
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SYS"."SYS_IMPORT_FULL_01" completed with 1 error(s) at Mon Dec 15 14:28:03
2014 elapsed 0 00:00:02
匯入之後,資料schema段結構列表。
SQL> select segment_name, partition_name, segment_type, tablespace_name from user_segments;
SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME
--------------- --------------- -------------------- ------------------------------
T_MERGE TABLE USERS
T_PART P1 TABLE PARTITION USERS
T_PART P2 TABLE PARTITION USERS
T_PART P3 TABLE PARTITION USERS
新資料表t_merge被匯入,而且作為普通資料表出現。
3、Departition引數
Departition引數作用是將分割槽表依據分割槽拆分為多個獨立的資料表。
C:\Users\Administrator.SICSENVIRONMENT>impdp \"/ as sysdba\" dumpfile=test.dmp remap_table=test.t_part:t_depa partition_options=departition
Import: Release 11.2.0.4.0 - Production on Mon Dec 15 14:34:07 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit
(篇幅原因,有省略……)
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "TEST"."T_PART_P1" 1.358 MB 37693 rows
. . imported "TEST"."T_PART_P2" 1.356 MB 33889 rows
. . imported "TEST"."T_PART_P3" 1012. KB 28113 rows
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SYS"."SYS_IMPORT_FULL_01" completed with 1 error(s) at Mon Dec 15 14:34:12
2014 elapsed 0 00:00:04
新資料表被建立。
SQL> select segment_name, partition_name, segment_type, tablespace_name from user_segments;
SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME
--------------- --------------- -------------------- ------------------------------
T_MERGE TABLE USERS
T_PART_P1 TABLE USERS
T_PART_P2 TABLE USERS
T_PART_P3 TABLE USERS
T_PART P1 TABLE PARTITION USERS
T_PART P2 TABLE PARTITION USERS
T_PART P3 TABLE PARTITION USERS
7 rows selected
4、結論
PARTITION_OPTIONS是11g資料泵提出的新功能選項,在一些特殊場景下,可以方便的幫助我們解決實際問題。從本質上看,這部分轉換應該是在後設資料匯入過程中進行的轉換轉化。這樣的功能提供了一定程度的靈活性。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-1368496/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料泵引數partition_options 在對於遷移分割槽表的使用。
- 資料泵匯入分割槽表長時間HANG住
- 資料泵匯入分割槽表統計資訊報錯(七)
- 資料泵匯入分割槽表統計資訊報錯(二)
- 資料泵匯入分割槽表統計資訊報錯(四)
- 資料泵匯入分割槽表統計資訊報錯(三)
- 資料泵匯入分割槽表統計資訊報錯(六)
- 資料泵匯入分割槽表統計資訊報錯(五)
- 分割槽表匯入資料庫資料庫
- 匯入匯出 Oracle 分割槽表資料Oracle
- 【匯入匯出】資料泵 job_name引數的使用
- Oracle使用資料泵匯出匯入表Oracle
- 資料泵匯出匯入表
- 使用expdp匯出分割槽表中的部分分割槽資料
- 分割槽表入無分割槽的資料庫資料庫
- 使用資料泵impdp匯入資料
- 資料泵引數彙總與各種匯出匯入規則
- Oracle使用資料泵在異機之間匯出匯入表Oracle
- 資料泵匯出匯入
- 資料泵IMPDP 匯入工具的使用
- 【實驗】【PARTITION】exp匯出分割槽表資料
- Impdp資料泵匯入
- 海量資料遷移之使用分割槽並行切分匯入並行
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- 資料泵的匯入匯出
- Hash分割槽表分割槽數與資料分佈的測試
- Oracle使用資料泵expdp,impdp進行資料匯出匯入Oracle
- oracle 資料泵引數Oracle
- Oracle資料泵-schema匯入匯出Oracle
- 分割槽表中的maxvalue引數設定
- 資料泵匯出匯入資料標準文件
- Oracle資料泵的匯入和匯出Oracle
- Oracle資料泵匯出匯入(expdp/impdp)Oracle
- 資料泵取匯出和匯入(一)
- 資料泵無法匯入JOB
- 使用split對分割槽表再分割槽
- 資料泵的TRANSFORM引數說明及使用ORM
- 自動備份、截斷分割槽表分割槽資料