这节内容为imdp命令的介绍,版本为Oracle 11g
上节我们说到调用impdp有三种方式
命令行
参数文件
交互式命令
这节讲第一种方式,命令行模式通过参数来控制导出的行为
首先我们必须在最开始提供用户密码,如不指定密码,则需要在弹出的提示中输入
默认导出用户下所有对象
expdp username/password@inst
该参数指定impdp连接到正在执行的一个impdp Job中,连接后进入到交互式命令模式中
如果当前只有一个JOB,则默认值为该JOB
除非JOB正在运行,你可以使用ATTCH连接到其他schema
JOB 名称可以查询DBA_DATAPUMP_JOBS 视图或 the USER_DATAPUMP_JOBS视图
> impdp hr ATTACH=import_job
默认值: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
该参数没有默认值
对于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
默认值:DATA_PUMP_DIR
该参数指定需要读取的dunp文件的位置以及保存日志和SQLFILE的位置
如果在dumpfile和logfile参数中指定了路径,则该路径覆盖directory参数的值
举例
> impdp hr DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp
LOGFILE=dpump_dir2:expfull.log
默认值: 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 中
该参数没有默认值
该参数为用户指定的用于解密dump文件的密码,这样在导入的过程中会自动解密加密过的表等数据
举例
> impdp hr TABLES=employee_s_encrypt DIRECTORY=dpump_dir
DUMPFILE=dpcd2be1.dmp ENCRYPTION_PASSWORD=123456
默认值: BLOCKS
该参数预估在network import模式中导入的数据量的方式
该参数只能和NETWORK_LINK 参数一起使用,因为如果是读取dump文件的话,数据库信息已经写在里面了
ESTIMATE={BLOCKS | STATISTICS}
举例
> impdp hr TABLES=job_history NETWORK_LINK=source_database_link
DIRECTORY=dpump_dir1 ESTIMATE=statistics
该参数过滤你不需要导出的内容
不可以和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
该参数指定导入数据的数据库SCN号
必须和NETWORK_LINK参数同时使用
不能和FLASHBACK_TIME同时使用
举例
> impdp hr DIRECTORY=dpump_dir1 FLASHBACK_SCN=123456
NETWORK_LINK=source_database_link
该参数指定导入的数据库的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
该参数表示导入全库
举例
> impdp hr DUMPFILE=dpump_dir1:expfull.dmp FULL=y
LOGFILE=dpump_dir2:full_imp.log
默认值:
该参数用来显示命令行模式交互式命令的所有参数
HELP = {y | n}
该参数指定需要导入的对象
不可以和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
默认值:系统自动生成(SYS_<import or="" sqlfile="">_<mode>_NN)
指定导入动作的JOB名称,可以用它来ATTCH到该任务
举例
> impdp hr DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp JOB_NAME=impjob01
默认值: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
这个命令在如下参数出现时必须加上
举例
该命令从远程数据库导入employees表,排除其中的约束
> impdp hr TABLES=employees DIRECTORY=dpump_dir1
NETWORK_LINK=source_database_link EXCLUDE=CONSTRAINT
默认值:n
该参数用于指定不需要记录日志
举例
> impdp hr DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp NOLOGFILE=Y
默认值:1
该参数指定导入动作的并行度,它可以用来提高导入的速度
不过要确保服务器的资源足够
一般我们和%U参数同时指定,用来同时读取多个文件
举例
> impdp hr DIRECTORY=dpump_dir1 LOGFILE=parallel_import.log
JOB_NAME=imp_par3 DUMPFILE=par_exp%U.dmp PARALLEL=3