http://blog.sina.com.cn/s/blog_62f8bf9b0100w9ux.html
Data Pump是服务端工具,只能在服务器上使用。这与exp工具不同。
Data Pump有以下些优点:
1.PARALLEL 并行
2.START_JOB 可控制job进行import作业
3.ATTACH
4.NETWORK_LINK 可以直接通过网络dblink导入到备库
5.REMAP_DATAFILE 转换数据文件的名字
6.REMAP_TABLESPACE
7.INCLUDE and EXCLUDE 过滤要导入或不导入的数据
8.可使用交互命令监控expdp和impdp作业过程
9.ESTIMATE_ONLY 空间的估计而不实际导出数据
10.VERSION data pump的版本可兼容的
用户需要有EXP_FULL_DATABASE或IMP_FULL_DATABASE权限
使用expdp进行导出:
5种模式:
全库模式(full export)
用户模式(schema)
表模式(table)
表空间模式(tablespace)
传输表空间模式(transportable tablespace)
网络需要考虑的(Network Considerations)
1.通过@tnsnames连接字符串导出远程的数据库,directory使用源数据库创建的,生成的文件存放在服务端。
expdp hr/hr@inst1 DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp TABLES=employees
2.通过database link导出远程的数据库到本地(创建directory及授权,然后expdp)
导出操作中的过滤选项:
数据过滤:
QUERY 和SAMPLE
元数据(对象定义等)过滤:
EXCLUDE 和INCLUDE
1、创建DIRECTORY
create directory dir_dp as '/oradata/expdp';
2、授权
Grant read,write on directory dir_dp to yeyj;
参数:
ATTACH
重新登录到后台进行的job操作。
如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:
Expdp hr/hr ATTACH=hr.export_job
例:
impdp ggs/ggs@oramview network_link=oracl schemas=HZ logfile=imp_tmp1.log
退出界面后可以重新登录进去
SQL> select job_name from DBA_DATAPUMP_JOBS;
JOB_NAME
------------------------------
SYS_IMPORT_SCHEMA_01
impdp ggs/ggs attach=SYS_IMPORT_SCHEMA_01
COMPRESSION
Default: METADATA_ONLY
可选:METADATA_ONLY /
导出的时候会对元数据进行压缩
CONTENT
Default: ALL
可选:CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
ALL:将导出对象定义及其所有数据
DATA_ONLY:只导出对象数据
METADATA_ONLY:只导出对象定义
DIRECTORY
Default: DATA_PUMP_DIR
指定转储文件和日志文件所在的目录,目录对象是使用CREATE DIRECTORY语句建立的对象
建立目录:
CREATE DIRECTORY dump as '/home/oracle/expdp/';
查询创建了那些子目录:
SELECT * FROM dba_directories;
DUMPFILE
用于指定转储文件的名称,默认名称为expdat.dmp
DUMPFILE=[directory_object:]file_name [, ...]
Directory_object用于指定目录对象名,file_name用于指定转储文件名。
需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象
如果指定[directory_object:],会以该DIRECTORY位置为准。
expdp hr/hr SCHEMAS=hr DIRECTORY=dpump_dir1 DUMPFILE=dpump_dir2:exp1.dmp,exp2%U.dmp PARALLEL=3(dmp文件会放在dpump_dir2目录下)
ENCRYPTION_PASSWORD
Default: none
ENCRYPTION_PASSWORD = password
给导出的dmp文件中的行数据加密
ESTIMATE
Default: BLOCKS
ESTIMATE={BLOCKS | STATISTICS}
指定估算被导出表所占用磁盘空间的方法(bytes)
设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,
设置为STATISTICS时,根据最近统计值估算对象占用空间
限制:当数据库包含压缩表时,ESTIMATE=BLOCKS得出的结果会不准确,此时建议使用ESTIMATE=STATISTICS
ESTIMATE_ONLY
Default: n
ESTIMATE_ONLY={y | n}
指定是否只估算导出作业所占用的磁盘空间
expdp hr/hr ESTIMATE_ONLY=y NOLOGFILE=y
EXCLUDE
Default: none
指定执行操作时释放要排除对象类型或相关对象
EXCLUDE=object_type[:name_clause] [, ...]
object_type用于指定要排除的对象类型
name_clause用于指定要排除的具体对象
举例:EXCLUDE=INDEX:"LIKE 'EMP%'"
可指定多个EXCLUDE语句,参考include
EXCLUDE和INCLUDE不能同时使用
FILESIZE
Default: 0 (unlimited)
FILESIZE=integer[B | K | M | G]
指定导出文件的最大尺寸
限制:指定的最小的size需要是Data Pump block size的10倍,即:4K*10
FLASHBACK_SCN
Default: none
指定导出到特定SCN时刻的表数据
FLASHBACK_SCN=scn_value
当使用NETWORK_LINK,SCN来源于源数据库
例:expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=hr_scn.dmp FLASHBACK_SCN=384632
FLASHBACK_TIME
Default: none
指定导出到特定时间的表数据
FLASHBACK_TIME="TO_TIMESTAMP(time-value)"
FLASHBACK_TIME和FLASHBACK_SCN不能共用。
例:
expdp hr/hr PARFILE=flashback.par
flashback.par:
DIRECTORY=dpump_dir1
DUMPFILE=hr_time.dmp
FLASHBACK_TIME="TO_TIMESTAMP('25-08-2003 14:35:00', 'DD-MM-YYYY HH24:MI:SS')"
FULL
Default: n
指定是否进行全库导出
FULL={y | n}
需要有EXP_FULL_DATABASE权限
HELP
Default: N
HELP = {y | n}
显示帮助信息
expdp HELP = y
INCLUDE
Default: none
指定导出时要包含的对象类型及相关对象
object_type[:name_clause] [, ...]
参数可查询DATABASE_EXPORT_OBJECTS, SCHEMA_EXPORT_OBJECTS, 和 TABLE_EXPORT_OBJECTS
sys下的对象不会被导出。
例:
hr.par:
SCHEMAS=HR
DUMPFILE=expinclude.dmp
DIRECTORY=dpump_dir1
LOGFILE=expinclude.log
INCLUDE=TABLE:"IN ('EMPLOYEES', 'DEPARTMENTS')"
INCLUDE=PROCEDURE
INCLUDE=INDEX:"LIKE 'EMP%'"
或
expdp hr/hr INCLUDE=TABLE DUMPFILE=dpump_dir1:exp_inc.dmp NOLOGFILE=y
JOB_NAME
Default: system-generated name of the form SYS_EXPORT_<mode>_NN
指定要导出作用的名称
JOB_NAME=jobname_string
可以通过DBA_DATAPUMP_JOBS视图来查看expdp的job_name,用于expdp的attach参数
LOGFILE
Default: export.log
指定导出日志文件文件的名称
LOGFILE=[directory_object:]file_name
只有当指定NOLOGFILE=y时,logfile才不会被创建。
例:expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp LOGFILE=hr_export.log
NETWORK_LINK
Default: none
指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项
NETWORK_LINK=source_database_link
从dblink连接到远程数据库进行操作dba_db_links
create database link test connect to ad1 identified by ad1 using 'yeyj11g';
例:
expdp hr/hr DIRECTORY=dpump_dir1 NETWORK_LINK=source_database_link
NOLOGFILE
Default: n
指定是否记录日志(禁止生成导出日志文件),默认为记录,即:NOLOGFILE=n
NOLOGFILE={y | n}
PARALLEL
Default: 1
指定执行导出操作的并行进程个数,默认值为1,必须小于或等于dump文件个数
例如:
expdp hr/hr DIRECTORY=dpump_dir1 LOGFILE=parallel_export.log
JOB_NAME=par4_job DUMPFILE=par_exp%u.dmp PARALLEL=4
PARFILE
Default: none
指定导出参数文件的名称
PARFILE=[directory_path]file_name
例如hr.par内容:
SCHEMAS=HR
DUMPFILE=exp.dmp
DIRECTORY=dpump_dir1
LOGFILE=exp.log
QUERY
Default: none
指定过滤导出数据的where条件
QUERY = [schema.][table_name:] query_clause
例:QUERY=employees:'"WHERE department_id > 10 AND salary > 10000"'
不得与以下子句同时使用:
CONTENT=METADATA_ONLY
ESTIMATE_ONLY
TRANSPORT_TABLESPACES
SAMPLE
Default: None
SAMPLE=[[schema_name.]table_name:]sample_percent
例:SAMPLE="HR"."EMPLOYEES":50
指50%的表HR.EMPLOYEES会被导出。
expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=sample.dmp SAMPLE=70
SCHEMAS
Default: current user's schema
用于指定执行方案模式导出,默认为当前用户方案
SCHEMAS=schema_name [, ...]
例:
expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp SCHEMAS=hr,sh,oe
STATUS
Default: 0
指定显示导出作用进程的详细状态,默认值为0
例:
expdp hr/hr DIRECTORY=dpump_dir1 SCHEMAS=hr,sh STATUS=300
expdp会每隔300秒界面上显示导出的状态。
TABLES
Default: none
指定表模式导出
TABLES=[schema_name.]table_name[:partition_name] [, ...]
Schema_name用于指定方案名,table_name用于指定导出的表名,partition_name用于指定要导出的分区名.
限制:
分区表(table partitions)不支持使用NETWORK_LINK进行导出
TABLESPACES
Default: none
指定要导出表空间列表
TABLESPACES=tablespace_name [, ...]
例:
expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tbs.dmp TABLESPACES=tbs_4, tbs_5, tbs_6
TRANSPORT_FULL_CHECK
Default: n
该选项用于指定被传输表空间和未传输表空间关联关系的检查方式,默认为N.
当设置为Y时,导出作用会检查表空间直接的完整关联关系,如果表空间所在表空间或其索引所在的表空间只有一个表空间被搬移,将显示错误信息.当设置为N时, 导出作用只检查单端依赖,如果搬移索引所在表空间,但未搬移表所在表空间,将显示出错信息,如果搬移表所在表空间,未搬移索引所在表空间,则不会显示错误信息
TRANSPORT_FULL_CHECK={y | n}
TRANSPORT_TABLESPACES
Default: none
指定表空间模式导出元数据
限制:导出job不能停止后再运行;并发(parallelism)只能为1
例:expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tts.dmp TRANSPORT_TABLESPACES=tbs_1 TRANSPORT_FULL_CHECK=y LOGFILE=tts.log
VERSION
Default: COMPATIBLE
被导出对象的数据库版本,默认值为COMPATIBLE
VERSION={COMPATIBLE | LATEST | version_string}
为COMPATIBLE时,会根据初始化参数COMPATIBLE生成对象元数据;为LATEST时,会根据数据库的实际版本生成对象元数据.version_string用于指定数据库版本字符串
========================================================================================================
expdp和export工具相比除了速度上有了大幅度的提高外还有个更大的好处是交互式界面,可以更为自由方便
交互式界面
1.从连接界面Ctrl+C
2.使用ATTACH子句连接进入job
交互式命令:
ADD_FILE
ADD_FILE=[directory_object]file_name [,...]
文件名可以包括替代变量%U
根据FILESIZE来自动控制
Export> ADD_FILE=hr2.dmp, dpump_dir2:hr3.dmp
CONTINUE_CLIENT
从交互式界面进入到登录模式
Export> CONTINUE_CLIENT
EXIT_CLIENT
离开当前交互式界面。对expdp状态可以从log日志或者查询USER_DATAPUMP_JOBS或V$SESSION_LONGOPS视图
FILESIZE
FILESIZE=number
参见expdp命令FILESIZE
HELP
交互式界面的帮助信息
KILL_JOB
会杀死当前的job,同时离开expdp界面。job不能再重新开始,dmp文件会被自动删除,但log日志仍保留
PARALLEL
参见expdp命令PARALLEL
START_JOB
开始当前attach连接的job,一般在stop_job后使用
STOP_JOB
STOP_JOB[=IMMEDIATE]
STATUS
STATUS[=integer]
参见expdp命令STATUS
expdp导出的流程图解
exp初始(ExpInit)
exp导出文件相关的选项(ExpFileOpts)
exp交互式界面的相关选项(CTRL+C)(ExpDynOpts)