这节内容为imdp命令的介绍,版本为Oracle 11g

上节我们说到调用impdp有三种方式

  • 命令行

  • 参数文件

  • 交互式命令

这节讲第一种方式,命令行模式通过参数来控制导出的行为

首先我们必须在最开始提供用户密码,如不指定密码,则需要在弹出的提示中输入

默认导出用户下所有对象

expdp username/password@inst

ATTACH

该参数指定impdp连接到正在执行的一个impdp Job中,连接后进入到交互式命令模式中

如果当前只有一个JOB,则默认值为该JOB

除非JOB正在运行,你可以使用ATTCH连接到其他schema

JOB 名称可以查询DBA_DATAPUMP_JOBS 视图或 the USER_DATAPUMP_JOBS视图

> impdp hr ATTACH=import_job

CONTENT

默认值:ALL

该命令可以让你过滤出你需要的内容

CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
  • ALL 导入元数据和数据

  • DATA_ONLY 只导入表的行数据,不会导入数据库对象的定义

  • METADATA_ONLY 只导入数据库对象的定义,不会导入表的数据

CONTENT=METADATA_ONLY 参数不可以和TRANSPORT_TABLESPACES一起用

CONTENT=ALL 和 CONTENT=DATA_ONLY不能和SQLFILE参数一起使用

举例

> impdp hr DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp CONTENT=METADATA_ONLY

DATA_OPTIONS

该参数没有默认值

对于impdp来说,该参数只有一个值

DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS

他表示在导入表/分区/子分区是遇到non-deferred 约束冲突时是的是否会继续

如果指定了则会继续并且记录下来

它不影响deferred constraint,因为无论如何违反它都会导致该表导入的失败

举例

> impdp hr TABLES=employees CONTENT=DATA_ONLY 
DUMPFILE=dpump_dir1:table.dmp DATA_OPTIONS=skip_constraint_errors

DIRECTORY

默认值:DATA_PUMP_DIR

该参数指定需要读取的dunp文件的位置以及保存日志和SQLFILE的位置

如果在dumpfile和logfile参数中指定了路径,则该路径覆盖directory参数的值

举例

> impdp hr DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp 
LOGFILE=dpump_dir2:expfull.log

DUMPFILE

默认值: expdat.dmp

该参数指定需要读取的dump文件的名称,也可以在其中指定目录

··· DUMPFILE=[directory_object:]file_name [, ...] ···

可以使用%U参数,这样操作会自动找出符合该模板的dump文件

> impdp hr DIRECTORY=dpump_dir1 DUMPFILE=dpump_dir2:exp1.dmp, exp2%U.dmp

导入动作会在dpump_dir2目录中找exp1.dmp文件 在dpump_dir1 中找exp2<nn>.dmp文件

日志文件写在dpump_dir1 中

ENCRYPTION_PASSWORD

该参数没有默认值

该参数为用户指定的用于解密dump文件的密码,这样在导入的过程中会自动解密加密过的表等数据

举例

> impdp hr TABLES=employee_s_encrypt DIRECTORY=dpump_dir
  DUMPFILE=dpcd2be1.dmp ENCRYPTION_PASSWORD=123456

ESTIMATE

默认值: BLOCKS

该参数预估在network import模式中导入的数据量的方式

该参数只能和NETWORK_LINK 参数一起使用,因为如果是读取dump文件的话,数据库信息已经写在里面了

ESTIMATE={BLOCKS | STATISTICS}

举例

> impdp hr TABLES=job_history NETWORK_LINK=source_database_link
  DIRECTORY=dpump_dir1 ESTIMATE=statistics 

EXCLUDE

该参数过滤你不需要导出的内容

不可以和INCLUDE同时使用

EXCLUDE=object_type[:name_clause] [, ...]

如果排除掉某张表,则其索引和触发器也将排除

我们可以在name_cluase中使用SQL来选择

 EXCLUDE=INDEX:"LIKE 'EMP%'" 

举例

EXCLUDE=FUNCTION
EXCLUDE=PROCEDURE
EXCLUDE=PACKAGE
EXCLUDE=INDEX:"LIKE 'EMP%' "
> impdp system DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp PARFILE=exclude.par

FLASHBACK_SCN

该参数指定导入数据的数据库SCN号

必须和NETWORK_LINK参数同时使用

不能和FLASHBACK_TIME同时使用

举例

> impdp hr DIRECTORY=dpump_dir1 FLASHBACK_SCN=123456 
NETWORK_LINK=source_database_link

FLASHBACK_TIME

该参数指定导入的数据库的SCN时间

必须和NETWORK_LINK参数同时使用

不能和FLASHBACK_TIME同时使用

这里我们使用参数文件的形式来执行

举例

FLASHBACK_TIME="TO_TIMESTAMP('25-08-2003 14:35:00', 'DD-MM-YYYY HH24:MI:SS')"
> impdp hr DIRECTORY=dpump_dir1 PARFILE=flashback_imp.par NETWORK_LINK=source_database_link

FULL

该参数表示导入全库

举例

> impdp hr DUMPFILE=dpump_dir1:expfull.dmp FULL=y 
LOGFILE=dpump_dir2:full_imp.log

HELP

默认值:

该参数用来显示命令行模式交互式命令的所有参数

HELP = {y | n}

INCLUDE

该参数指定需要导入的对象

不可以和EXCLUDE同时使用

可以多次使用INCLUDE参数

INCLUDE = object_type[:name_clause] [, ...]

举例

INCLUDE=FUNCTION
INCLUDE=PROCEDURE
INCLUDE=PACKAGE
INCLUDE=INDEX:"LIKE 'EMP%' "
> impdp system SCHEMAS=hr DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp 
PARFILE=imp_include.par

JOB_NAME

默认值:系统自动生成(SYS_<import or="" sqlfile="">_<mode>_NN)

指定导入动作的JOB名称,可以用它来ATTCH到该任务

举例

> impdp hr DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp JOB_NAME=impjob01

LOGFILE

默认值:import.log

该参数指定log文件的名称,也可以指定目录路径

如果文件已存在则会覆盖它 日志记录导出的过程和成功失败信息

除非指定NOLOGFILE 参数,否则日志文件总是被创建

LOGFILE=[directory_object:]file_name

举例

> impdp hr SCHEMAS=HR DIRECTORY=dpump_dir2 LOGFILE=imp.log
 DUMPFILE=dpump_dir1:expfull.dmp

该参数指定从一个远程数据库导入数据,使用DBLINK

这个命令在如下参数出现时必须加上

  • FLASHBACK_SCN,
  • FLASHBACK_TIME,
  • ESTIMATE
  • TRANSPORT_TABLESPACES
  • TRANSPORTABLE

举例

该命令从远程数据库导入employees表,排除其中的约束

> impdp hr TABLES=employees DIRECTORY=dpump_dir1
NETWORK_LINK=source_database_link EXCLUDE=CONSTRAINT

NOLOGFILE

默认值:n

该参数用于指定不需要记录日志

举例

> impdp hr DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp NOLOGFILE=Y

PARALLEL

默认值:1

该参数指定导入动作的并行度,它可以用来提高导入的速度

不过要确保服务器的资源足够

一般我们和%U参数同时指定,用来同时读取多个文件

举例

> impdp hr DIRECTORY=dpump_dir1 LOGFILE=parallel_import.log 
JOB_NAME=imp_par3 DUMPFILE=par_exp%U.dmp PARALLEL=3