代码改变世界

expdp和impdp

2019-09-12 14:23  williamzheng  阅读(252)  评论(0编辑  收藏  举报

一、参数介绍

  • COMPRESSION={METADATA_ONLY | NONE}
    数据压缩

  • CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
    指定导出的内容(当设置CONTENT为ALL时,会导出对象元数据及对象数据;当设置为DATA_ONLY时,只导出对象数据;当设置为METADATA_ONLY时,只导出对象元数据。)

  • DIRECTORY=directory_object
    备份文件存储的路径

  • DUMPFILE=[directory_object:]file_name [, ...]
    --directory_object用于指定目录对象名,file_name用于指定转储文件名。如果不给定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象。

  • ESTIMATE={BLOCKS | STATISTICS}
    --设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间;设置为STATISTICS时,会根据最近的统计值给出对象占用空间,这种方法的误差会比较大。无论使用哪种选项值,都会有误差。

  • ESTIMATE_ONLY={y | n}
    --指定是否只估算导出作业所占用的磁盘空间,默认值为N

  • EXCLUDE=object_type[:name_clause] [, ...]
    用于控制在导出过程中哪些数据库对象不被导出。(object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象名称。注意EXCLUDE选项和INCLUDE选项不能同时使用。)

  • FILESIZE=integer[B | K | M | G]
    --限定单个转储文件的最大容量,默认值是0,表示没有文件尺寸的限制。该选项与DUMPFILE选项一同使用。

  • FULL={y | n}
    是否以全库模式导出数据库。默认为N。

  • LOGFILE=[directory_object:]file_name
    指定导出过程中日志文件的名称,默认值为export.log。

  • PARALLEL=integer
    指定执行导出操作的并行度,默认值为1。

  • SCHEMAS=schema_name [, ...]
    按照SCHEMA模式导出,默认为当前用户。很常用,不做更多的解释。

  • TABLES=[schema_name.]table_name[:partition_name] [, ...]
    --schema_name用于指定用户名,table_name用于指定导出的表名,partition_name用于指定要导出的分区名。

  • TABLESPACES=tablespace_name [, ...]
    指定需要导出哪个表空间中的表数据。

二、Example

2.1单表导入导出

2.1.1导出:

$ expdp upcenter/vn2Ew1y38fIvN dumpfile=STK_INDU_NAME_TEMP0523.dump tables=STK_INDU_NAME_TEMP logfile=STK_INDU_NAME_TEMP0523.log directory=tong PARALLEL=8

2.1.2导入:

$ impdp upcenter/NV1Wu8h2L8gv tables=STK_INDU_NAME_TEMP dumpfile=STK_INDU_NAME_TEMP.dump directory=tong logfile=STK_INDU_NAME_TEMP.log TABLE_EXISTS_ACTION=TRUNCATE

2.1.3检查两边数据是否一致

SQL> select count(*) from upcenter.STK_INDU_NAME_TEMP where isvalid=1;

2.2多表导入导出

2.2.1导出:

$ expdp upcenter/zVQpErDi76 dumpfile=dongbei1128.dump tables=TABLENAME1,TABLENAME2,TABLENAME3 logfile=dongbei1128.log directory=tong compression=all PARALLEL=4

2.2.2导入:

$ impdp bd_admin/bd_admin tables=TABLENAME1,TABLENAME2,TABLENAME3 dumpfile=dongbei1128.dump directory=tong logfile=dongbei1128.log TABLE_EXISTS_ACTION=TRUNCATE

2.3不同用户下的表导入

2.3.1导入全部表,需要增加REMAP_SCHEMA参数,UPCENTER为原用户,BD_ADMIN为现用户

$ impdp bd_admin/bd_admin directory=tong dumpfile=beige0626.dump REMAP_SCHEMA=UPCENTER:BD_ADMIN logfile=beige0626.log TABLE_EXISTS_ACTION=TRUNCATE

2.3.2导入指定要导入的表时,需要指定表的schema

$ impdp bd_admin/bd_admin directory=tong dumpfile=beige0626.dump tables==UPCENTER.STNCN_ISS_INFO REMAP_SCHEMA=UPCENTER:BD_ADMIN logfile=beige0626.log TABLE_EXISTS_ACTION=TRUNCATE

参考:
https://blog.51cto.com/tongcheng/1976317