• 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 SettingsAdministrator>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 SettingsAdministrator>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 将立即关闭
                          数据泵作业。
  • 相关阅读:
    .Net Standard(.Net Core)实现获取配置信息
    C# 自定义异常
    C# 表达式树Lambda扩展(四)
    C# 表达式树分页扩展(三)
    C# 表达式树遍历(二)
    C# 表达式树讲解(一)
    C#委托(delegate、Action、Func、predicate)和事件
    搭建Nuget服务器(Nuget私服)
    ORM之Dapper运用
    CentOS7 安装 redise redis-6.0.1
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/3165004.html
Copyright © 2020-2023  润新知