imp与impdp比较
impdp和expdp是oracle 10g及以上版本才带的命令,目的是替换imp和exp命令,但为了向后兼容,故后面命令在高版本中依然可以使用。
但imp和exp在处理跨版本的导入导出时很麻烦,而impdp和expdp可以在命令后面加参数轻松解决这个问题,具体的参数可以使用 expdp/impdp -help来查看
以下内容为转载
EXP常规模式、EXP直接路径模式和EXPDP三种方式导出的性能对比 1.首先是EXP的常规路径导出: exp zhejiang/zhejiang file=/data1/zj_regular.dmp buffer=20480000 常规EXP导出方式执行了1小时24分钟。 2.直接路径导出方式: exp zhejiang/zhejiang file=/data1/zj_direct.dmp buffer=20480000 recordlength=65535 direct=y 直接路径导入用时18分钟,比常规路径导出速度有一个明显的提高。 3.数据泵的导出速度。 expdp zhejiang/zhejiang dumpfile=zj_datapump.dp directory=d_test schemas=zhejiang 数据泵的导出时间仅用了14分钟,比直接路径导入方式还快了20%多。而且观察三个导出文件的大小可以发现,导出速度越快对应的文件也越小,其中数据泵的导出方式得到的文件要比EXP方式小将近1.5G。
IMP和IMPDP导入性能对比 1.IMP的导入速度: imp zhejiang/zhejiang file=/data1/zj_regular.dmp full=y buffer=20480000 log=/data1/zj_regular.log IMP导入花费了3小时17分钟, 2.IMPdp的导入速度: impdp zhejiang/zhejiang DUMPFILE=zj_datapump.dp DIRECTORY=d_test FULL=y LOGFILE=zj_datapump.log 数据泵的导入(parallel参数)操作居然花了3个小时8分钟的时间,和IMP的导入速度十分接近,看来并非所有情况下都像Oracle描述的那样,数据泵的导入比普通导入效率有大幅度的提高。 上面一篇文章的测试中发现IMPDP的导入速度和IMP导入速度相差无几。而Oracle在介绍数据泵的时候,提到IMPDP的导入速度最高是IMP的10倍。不过好在IMPDP还是可以优化调整的,那就是通过设置PARALLEL来提高IMPDP的并行度。 首先还是看一下CPU的数量: SQL> show parameter cpu 由于数据库服务器的CPU个数为2,下面尝试设置PARALLEL为2来进行导入 impdp zhejiang/zhejiang DUMPFILE=zj_datapump.dp DIRECTORY=d_test FULL=y LOGFILE=zj_datapump.log parallel=2 采用并行度为2的导入方式,发现速度果然提高了很多。并行度为1的导入速度是3小时8分钟,而现在用了不到2个半小时。 由于并行度设置不应该超过CPU数的2倍,因此尝试平行度3和4的导入,导入时间和并行度2十分接近。看来已经无法再使用通过提高并行度的方法来提高性能了。 1.先看直接导出的性能: $ expdp zhejiang/zhejiang directory=d_test dumpfile=zhejiang.dp 整个导出操作大概用了14分半, 2.尝试使用并行度2进行导出,这时仍然设置一个导出的数据文件: $ expdp zhejiang/zhejiang directory=d_test dumpfile=zhejiang_p2_1file.dp parallel=2 整个导入过程不到14分钟,不过这个性能的提升实在不是很明显。不过这是有原因的,由于设置了并行度,两个进程在同时执行导出操作,但是二者要将导出的数据写入同一个数据文件中,因此必然会导致资源的争用 3.仍然使用并行度2,但是同时设置两个数据文件再次检查导出性能: $ expdp zhejiang/zhejiang directory=d_test dumpfile=zhejiang_p2_2file1.dp,zhejiang_p2_2file2.dp parallel=2 这次导出仅仅用了10分半,导出的效率大大的提高。 4.测试一下并行度4,分别导出到4个数据文件中: 用了9分钟整导出完成,设置成并行度4仍然可以获得一定的性能提升,但是并不明显了,这主要是由于整个性能的瓶颈已经不是单个进程的处理能力,多半性能的瓶颈已经变成了磁盘IO瓶颈,此时单单靠增加并行度已经无法明显提升性能了
expdp - help命令查看到的参数列表
C:\Documents and Settings\Administrator>expdp -help Export: Release 10.2.0.1.0 - Production on 星期一, 01 7月, 2013 15:32:37 Copyright (c) 2003, 2005, Oracle. All rights reserved. 数据泵导出实用程序提供了一种用于在 Oracle 数据库之间传输 数据对象的机制。该实用程序可以使用以下命令进行调用: 示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp 您可以控制导出的运行方式。具体方法是: 在 'expdp' 命令后输入 各种参数。要指定各参数, 请使用关键字: 格式: expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN) 示例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott 或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表 USERID 必须是命令行中的第一个参数。 关键字 说明 (默认) ------------------------------------------------------------------------------ ATTACH 连接到现有作业, 例如 ATTACH [=作业名]。 COMPRESSION 减小有效的转储文件内容的大小 关键字值为: (METADATA_ONLY) 和 NONE。 CONTENT 指定要卸载的数据, 其中有效关键字为: (ALL), DATA_ONLY 和 METADATA_ONLY。 DIRECTORY 供转储文件和日志文件使用的目录对象。 DUMPFILE 目标转储文件 (expdat.dmp) 的列表, 例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。 ENCRYPTION_PASSWORD 用于创建加密列数据的口令关键字。 ESTIMATE 计算作业估计值, 其中有效关键字为: (BLOCKS) 和 STATISTICS。 ESTIMATE_ONLY 在不执行导出的情况下计算作业估计值。 EXCLUDE 排除特定的对象类型, 例如 EXCLUDE=TABLE:EMP。 FILESIZE 以字节为单位指定每个转储文件的大小。 FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCN。 FLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间。 FULL 导出整个数据库 (N)。 HELP 显示帮助消息 (N)。 INCLUDE 包括特定的对象类型, 例如 INCLUDE=TABLE_DATA。 JOB_NAME 要创建的导出作业的名称。 LOGFILE 日志文件名 (export.log)。 NETWORK_LINK 链接到源系统的远程数据库的名称。 NOLOGFILE 不写入日志文件 (N)。 PARALLEL 更改当前作业的活动 worker 的数目。 PARFILE 指定参数文件。 QUERY 用于导出表的子集的谓词子句。 SAMPLE 要导出的数据的百分比; SCHEMAS 要导出的方案的列表 (登录方案)。 STATUS 在默认值 (0) 将显示可用时的新状态的情况下, 要监视的频率 (以秒计) 作业状态。 TABLES 标识要导出的表的列表 - 只有一个方案。 TABLESPACES 标识要导出的表空间的列表。 TRANSPORT_FULL_CHECK 验证所有表的存储段 (N)。 TRANSPORT_TABLESPACES 要从中卸载元数据的表空间的列表。 VERSION 要导出的对象的版本, 其中有效关键字为: (COMPATIBLE), LATEST 或任何有效的数据库版本。 下列命令在交互模式下有效。 注: 允许使用缩写 命令 说明 ------------------------------------------------------------------------------ ADD_FILE 向转储文件集中添加转储文件。 CONTINUE_CLIENT 返回到记录模式。如果处于空闲状态, 将重新启动作业。 EXIT_CLIENT 退出客户机会话并使作业处于运行状态。 FILESIZE 后续 ADD_FILE 命令的默认文件大小 (字节)。 HELP 总结交互命令。 KILL_JOB 分离和删除作业。 PARALLEL 更改当前作业的活动 worker 的数目。 PARALLEL=<worker 的数目>。 START_JOB 启动/恢复当前作业。 STATUS 在默认值 (0) 将显示可用时的新状态的情况下, 要监视的频率 (以秒计) 作业状态。 STATUS[=interval] STOP_JOB 顺序关闭执行的作业并退出客户机。 STOP_JOB=IMMEDIATE 将立即关闭 数据泵作业。
impdp - help查看到的参数列表
C:\Documents and Settings\Administrator>impdp -help Import: Release 10.2.0.1.0 - Production on 星期一, 01 7月, 2013 15:31:16 Copyright (c) 2003, 2005, Oracle. All rights reserved. 数据泵导入实用程序提供了一种用于在 Oracle 数据库之间传输 数据对象的机制。该实用程序可以使用以下命令进行调用: 示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp 您可以控制导入的运行方式。具体方法是: 在 'impdp' 命令后输入 各种参数。要指定各参数, 请使用关键字: 格式: impdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN) 示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp USERID 必须是命令行中的第一个参数。 关键字 说明 (默认) ------------------------------------------------------------------------------ ATTACH 连接到现有作业, 例如 ATTACH [=作业名]。 CONTENT 指定要加载的数据, 其中有效关键字为: (ALL), DATA_ONLY 和 METADATA_ONLY。 DIRECTORY 供转储文件, 日志文件和 sql 文件使用的目录对象。 DUMPFILE 要从 (expdat.dmp) 中导入的转储文件的列表, 例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。 ENCRYPTION_PASSWORD 用于访问加密列数据的口令关键字。 此参数对网络导入作业无效。 ESTIMATE 计算作业估计值, 其中有效关键字为: (BLOCKS) 和 STATISTICS。 EXCLUDE 排除特定的对象类型, 例如 EXCLUDE=TABLE:EMP。 FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCN。 FLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间。 FULL 从源导入全部对象 (Y)。 HELP 显示帮助消息 (N)。 INCLUDE 包括特定的对象类型, 例如 INCLUDE=TABLE_DATA。 JOB_NAME 要创建的导入作业的名称。 LOGFILE 日志文件名 (import.log)。 NETWORK_LINK 链接到源系统的远程数据库的名称。 NOLOGFILE 不写入日志文件。 PARALLEL 更改当前作业的活动 worker 的数目。 PARFILE 指定参数文件。 QUERY 用于导入表的子集的谓词子句。 REMAP_DATAFILE 在所有 DDL 语句中重新定义数据文件引用。 REMAP_SCHEMA 将一个方案中的对象加载到另一个方案。 REMAP_TABLESPACE 将表空间对象重新映射到另一个表空间。 REUSE_DATAFILES 如果表空间已存在, 则将其初始化 (N)。 SCHEMAS 要导入的方案的列表。 SKIP_UNUSABLE_INDEXES 跳过设置为无用索引状态的索引。 SQLFILE 将所有的 SQL DDL 写入指定的文件。 STATUS 在默认值 (0) 将显示可用时的新状态的情况下, 要监视的频率 (以秒计) 作业状态。 STREAMS_CONFIGURATION 启用流元数据的加载 TABLE_EXISTS_ACTION 导入对象已存在时执行的操作。 有效关键字: (SKIP), APPEND, REPLACE 和 TRUNCATE。 TABLES 标识要导入的表的列表。 TABLESPACES 标识要导入的表空间的列表。 TRANSFORM 要应用于适用对象的元数据转换。 有效的转换关键字: SEGMENT_ATTRIBUTES, STORAGE OID 和 PCTSPACE。 TRANSPORT_DATAFILES 按可传输模式导入的数据文件的列表。 TRANSPORT_FULL_CHECK 验证所有表的存储段 (N)。 TRANSPORT_TABLESPACES 要从中加载元数据的表空间的列表。 仅在 NETWORK_LINK 模式导入操作中有效。 VERSION 要导出的对象的版本, 其中有效关键字为: (COMPATIBLE), LATEST 或任何有效的数据库版本。 仅对 NETWORK_LINK 和 SQLFILE 有效。 下列命令在交互模式下有效。 注: 允许使用缩写 命令 说明 (默认) ------------------------------------------------------------------------------ CONTINUE_CLIENT 返回到记录模式。如果处于空闲状态, 将重新启动作业。 EXIT_CLIENT 退出客户机会话并使作业处于运行状态。 HELP 总结交互命令。 KILL_JOB 分离和删除作业。 PARALLEL 更改当前作业的活动 worker 的数目。 PARALLEL=<worker 的数目>。 START_JOB 启动/恢复当前作业。 START_JOB=SKIP_CURRENT 在开始作业之前将跳过 作业停止时执行的任意操作。 STATUS 在默认值 (0) 将显示可用时的新状态的情况下, 要监视的频率 (以秒计) 作业状态。 STATUS[=interval] STOP_JOB 顺序关闭执行的作业并退出客户机。 STOP_JOB=IMMEDIATE 将立即关闭 数据泵作业。