数据泵expdp中query的使用及注意事项


在用数据泵导出数据的时候,有时候我们需要按条件过滤掉一些不需要导出的数据,这时候就需要用到参数query。下面是一个简单使用query的小例子,在这个例子中我们也可以看出数据泵的一个缺陷,就是query参数和estimate参数是冲突的,当我们使用query参数的时候,数据泵estimate数据量会忽略query参数的过滤,使的estimate值异常。

 

 

expdp systemparfile=bi_20131203.par

Export: Release11.2.0.3.0 - Production on Tue Dec 3 18:51:04 2013

Copyright (c) 1982,2011, Oracle and/or its affiliates. Allrights reserved.

Password:

Connected to: OracleDatabase 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

With thePartitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and RealApplication Testing options

Starting"SYSTEM"."SYS_EXPORT_TABLE_01": system/******** parfile=bi_20131203.par

Estimate in progressusing BLOCKS method...

Processing objecttype TABLE_EXPORT/TABLE/TABLE_DATA

Total estimationusing BLOCKS method: 61.75 GB

Processing objecttype TABLE_EXPORT/TABLE/TABLE

Processing objecttype TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT

 

 

查看下参数文件more bi_20131203.par

 

directory=dump_bi

tables=bi_dw.DW_MID_CONTRACT

cluster=n filesize=4G

dumpfile=expdp_bi_ods_tables_20131203_%U.dmp

query=bi_dw.DW_MID_CONTRACT:"where data_date in(to_date('2013-11-13','yyyy-mm-dd'),to_date('2013-11-14','yyyy-mm-dd'),to_date('2013-8-13','yyyy-mm-dd'),to_date('2013-8-14','yyyy-mm-dd'))"

nologfile=y

 

 

通过数据库查看到DW_MID_CONTRACT这张表有1.6亿的数据量,该表的segment达到了60G然而过滤后的数据只有2639086 rows,然而expdp计算的值

Total estimationusing BLOCKS method: 61.75 GB

 

最终,我们导出的文件仅仅只有873M expdp_bi_ods_tables_20131203_01.dmp

 

另外在数据泵导数据的过程中,我们可以expdp system ATTACH=SYS_EXPORT_TABLE_01到该任务。

job的名字可以通过job参数指定,也可以走默认,dba_datapump_jobs中记载了正在执行的数据泵任务。

select * from dba_datapump_jobs;

SYS_EXPORT_TABLE_01

GoldenGate不使用数据泵完成Oracle-Oracle的双向复制

使用GoldenGate的数据泵进行Oracle-Oracle的单向复制

如何对 Oracle 数据泵(expdp/impdp) 进行 debug

Oracle 数据库导出数据泵(EXPDP)文件存放的位置

Oracle 10g 数据泵分区表的导出

相关内容