ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP命令详细对比_百度...
发布网友
发布时间:2024-08-20 21:56
我来回答
共1个回答
热心网友
时间:2024-08-29 21:25
:\Users\Administrator>20:42:32.90>expdp help=yExport: Release 11.2.0.1.0 - Production on 星期六 10月 10 09:17:29 2015Copyright (c) 1982, 2009, Oracle and/or its affiliates. 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=job_name。COMPRESSION减少转储文件大小。有效的关键字值为: ALL, DATA_ONLY, [METADATA_ONLY] 和 NONE。CONTENT指定要卸载的数据。有效的关键字值为: [ALL], DATA_ONLY 和 METADATA_ONLY。DATA_OPTIONS数据层选项标记。有效的关键字值为: XML_CLOBS。DIRECTORY用于转储文件和日志文件的目录对象。DUMPFILE指定目标转储文件名的列表 [expdat.dmp]。例如, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。ENCRYPTION加密某个转储文件的一部分或全部。有效的关键字值为: ALL, DATA_ONLY, ENCRYPTED_COLUMNS_ONLY, METADATA_ONLY 和 NONE。ENCRYPTION_ALGORITHM指定加密的方式。有效的关键字值为: [AES128], AES192 和 AES256。ENCRYPTION_MODE生成加密密钥的方法。有效的关键字值为: DUAL, PASSWORD 和 [TRANSPARENT]。ENCRYPTION_PASSWORD用于在转储文件中创建加密数据的口令密钥。ESTIMATE计算作业估计值。有效的关键字值为: [BLOCKS] 和 STATISTICS。ESTIMATE_ONLY计算作业估计值而不执行导出。EXCLUDE排除特定对象类型。例如, EXCLUDE=SCHEMA:"=‘HR‘"。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用于导出表的子集的谓词子句。例如, QUERY=employees:"WHERE department_id > 10"。REMAP_DATA指定数据转换函数。例如, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。REUSE_DUMPFILES覆盖目标转储文件 (如果文件存在) [N]。SAMPLE要导出的数据的百分比。SCHEMAS要导出的方案的列表 [登录方案]。SOURCE_EDITION用于提取元数据的版本。STATUS监视作业状态的频率, 其中默认值 [0] 表示只要有新状态可用, 就立即显示新状态。TABLES标识要导出的表的列表。例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。TABLESPACES标识要导出的表空间的列表。TRANSPORTABLE指定是否可以使用可传输方法。有效的关键字值为: ALWAYS 和 [NEVER]。TRANSPORT_FULL_CHECK验证所有表的存储段 [N]。TRANSPORT_TABLESPACES要从中卸载元数据的表空间的列表。VERSION要导出的对象版本。有效的关键字值为: [COMPATIBLE], LATEST 或任何有效的数据库版本。------------------------------------------------------------------------------下列命令在交互模式下有效。注: 允许使用缩写。ADD_FILE将转储文件添加到转储文件集。CONTINUE_CLIENT返回到事件记录模式。如果处于空闲状态, 将重新启动作业。EXIT_CLIENT退出客户机会话并使作业保持运行状态。FILESIZE用于后续 ADD_FILE 命令的默认文件大小 (字节)。HELP汇总交互命令。KILL_JOB分离并删除作业。PARALLEL更改当前作业的活动 worker 的数量。REUSE_DUMPFILES覆盖目标转储文件 (如果文件存在) [N]。START_JOB启动或恢复当前作业。有效的关键字值为: SKIP_CURRENT。STATUS监视作业状态的频率, 其中默认值 [0] 表示只要有新状态可用, 就立即显示新状态。STOP_JOB按顺序关闭作业执行并退出客户机。有效的关键字值为: IMMEDIATE。
三、IMPDP的命令详解
C:\Users\Administrator> 9:17:29.68> impdp help=yImport: Release 11.2.0.1.0 - Production on 星期六 10月 10 09:20:16 2015Copyright (c) 1982, 2009, Oracle and/or its affiliates. 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.dmpUSERID 必须是命令行中的第一个参数。------------------------------------------------------------------------------以下是可用关键字和它们的说明。方括号中列出的是默认值。ATTACH连接到现有作业。例如, ATTACH=job_name。CONTENT指定要加载的数据。有效的关键字为: [ALL], DATA_ONLY 和 METADATA_ONLY。DATA_OPTIONS数据层选项标记。有效的关键字为: SKIP_CONSTRAINT_ERRORS。DIRECTORY用于转储文件, 日志文件和 SQL 文件的目录对象。DUMPFILE要从中导入的转储文件的列表 [expdat.dmp]。例如, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。ENCRYPTION_PASSWORD用于访问转储文件中的加密数据的口令密钥。对于网络导入作业无效。ESTIMATE计算作业估计值。有效的关键字为: [BLOCKS] 和 STATISTICS。EXCLUDE排除特定对象类型。例如, EXCLUDE=SCHEMA:"=‘HR‘"。FLASHBACK_SCN用于重置会话快照的 SCN。FLASHBACK_TIME用于查找最接近的相应 SCN 值的时间。FULL导入源中的所有对象 [Y]。HELP显示帮助消息 [N]。INCLUDE包括特定对象类型。例如, INCLUDE=TABLE_DATA。JOB_NAME要创建的导入作业的名称。LOGFILE日志文件名 [import.log]。NETWORK_LINK源系统的远程数据库链接的名称。NOLOGFILE不写入日志文件 [N]。PARALLEL更改当前作业的活动 worker 的数量。PARFILE指定参数文件。PARTITION_OPTIONS指定应如何转换分区。有效的关键字为: DEPARTITION, MERGE 和 [NONE]。QUERY用于导入表的子集的谓词子句。例如, QUERY=employees:"WHERE department_id > 10"。REMAP_DATA指定数据转换函数。例如, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。REMAP_DATAFILE在所有 DDL 语句中重新定义数据文件引用。REMAP_SCHEMA将一个方案中的对象加载到另一个方案。REMAP_TABLE将表名重新映射到另一个表。例如, REMAP_TABLE=EMP.EMPNO:REMAPPKG.EMPNO。REMAP_TABLESPACE将表空间对象重新映射到另一个表空间。REUSE_DATAFILES如果表空间已存在, 则将其初始化 [N]。SCHEMAS要导入的方案的列表。SKIP_UNUSABLE_INDEXES跳过设置为“索引不可用”状态的索引。SOURCE_EDITION用于提取元数据的版本。SQLFILE将所有的 SQL DDL 写入指定的文件。STATUS监视作业状态的频率, 其中默认值 [0] 表示只要有新状态可用, 就立即显示新状态。STREAMS_CONFIGURATION启用流元数据的加载TABLE_EXISTS_ACTION导入对象已存在时执行的操作。有效的关键字为: APPEND, REPLACE, [SKIP] 和 TRUNCATE。TABLES标识要导入的表的列表。例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。TABLESPACES标识要导入的表空间的列表。TARGET_EDITION用于加载元数据的版本。TRANSFORM要应用于适用对象的元数据转换。有效的关键字为: OID, PCTSPACE, SEGMENT_ATTRIBUTES 和 STORAGE。TRANSPORTABLE用于选择可传输数据移动的选项。有效的关键字为: ALWAYS 和 [NEVER]。仅在 NETWORK_LINK 模式导入操作中有效。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 的数量。START_JOB启动或恢复当前作业。有效的关键字为: SKIP_CURRENT。STATUS监视作业状态的频率, 其中默认值 [0] 表示只要有新状态可用, 就立即显示新状态。STOP_JOB按顺序关闭作业执行并退出客户机。有效的关键字为: IMMEDIATE。
四、对比EXP EXPDP IMP IMPD 主要差别
1.EXP和IMP是客户段工具程序, EXPDP和IMPDP是服务端的工具程序 2.EXP和IMP效率比较低. EXPDP和IMPDP效率高(理论) 3.EXPDP IMPDP 是升级版本 支持9I以上版本 EXP IMP都支持
五、实验对比
测试环境1:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
为了测试命令行的操作性能测试,如exp,imp,sqlldr等等,经常要看当前的准确时间,每次使用的windows的时钟窗口看非常不方便,如果不能预估具体时间的操作更麻烦。
可以使用prompt命令实现。具体语法如下所示:
C:\>prompt $P$G$T$G
创建一个测试表
drop table test purge;create table test (test_id number);
–循环插入大量数据
SQL>SET TIMING on DECLARE v_lower NUMBER :=1; v_upper NUMBER :=1000000;BEGIN FOR i IN v_lower . v_upper LOOP INSERT INTO TEST VALUES (i); commit; -- dbms_output.put_line(‘i is: ‘|| i); END LOOP;END;
–执行 数据有100万行
SQL> select count(*) from test; COUNT(*)---------- 1000000
–测试导出
exp scott/tiger owner=scott file=f:\scott_exp.dmp C:\Users\Administrator>19:35:55.25>exp scott/tiger owner=scott file=f:\scott_exp.dmpExport: Release 11.2.0.1.0 - Production on 星期五 10月 9 19:35:57 2015Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集. 正在导出 pre-schema 过程对象和操作. 正在导出用户 SCOTT 的外部函数库名. 导出 PUBLIC 类型同义词. 正在导出专用类型同义词. 正在导出用户 SCOTT 的对象类型定义即将导出 SCOTT 的对象. 正在导出数据库链接. 正在导出序号. 正在导出簇定义. 即将导出 SCOTT 的表通过常规路径. . 正在导出表 DEPT导出了 4 行. . 正在导出表 EMP导出了 14 行. . 正在导出表 SALGRADE导出了 5 行. . 正在导出表 TEST导出了 1000000 行. 正在导出同义词. 正在导出视图. 正在导出存储过程. 正在导出运算符. 正在导出引用完整性约束条件. 正在导出触发器. 正在导出索引类型. 正在导出位图, 功能性索引和可扩展索引. 正在导出后期表活动. 正在导出实体化视图. 正在导出快照日志. 正在导出作业队列. 正在导出刷新组和子组. 正在导出维. 正在导出 post-schema 过程对象和操作. 正在导出统计信息成功终止导出, 没有出现警告。C:\Users\Administrator>19:36:29.97> 开始时间19:35:55.25 结束时间19:36:29.97 用时34秒 机器性能杠杠的
数据泵工具导出的步骤:
1、创建DIRECTORYcreate directory dir_dump as ‘F:\databackupoa\dump‘; 2、授权Grant read,write on directory dir_dp to scott;--查看目录及权限SELECT privilege, directory_name, DIRECTORY_PATHFROM user_tab_privs t, all_directories dWHERE t.table_name(+) = d.directory_nameand directory_name = ‘DIR_DUMP‘ORDER BY 2, 1;3、执行导出expdp scott/tiger schemas=scott directory=dir_dp dumpfile =expdp_scott%U.dump logfile=expdp_scott.log parallel=4
执行导出
C:\Users\Administrator>19:38:05.25>expdp scott/tiger schemas=scott directory=dir_dp dumpfile =expdp_scott2.dump logfile=expdp_scott2.log;Export: Release 11.2.0.1.0 - Production on 星期五 10月 9 19:38:07 2015Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options启动 "SCOTT"."SYS_EXPORT_SCHEMA_01": scott/******** schemas=scott directory=dir_dp dumpfile=expdp_scott2.dump logfile=expdp_scott2.log;正在使用 BLOCKS 方法进行估计.处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA使用 BLOCKS 方法的总估计: 296.1 MB处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA处理对象类型 SCHEMA_EXPORT/TABLE/TABLE处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/INDEX处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS处理对象类型 SCHEMA_EXPORT/TABLE/COMMENT处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT处理对象类型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS. . 导出了 "SCOTT"."TEST" 227.6 MB 24219999 行. . 导出了 "SCOTT"."DEPT" 5.937 KB 4 行. . 导出了 "SCOTT"."EMP" 8.570 KB 14 行. . 导出了 "SCOTT"."SALGRADE" 5.867 KB 5 行. . 导出了 "SCOTT"."BONUS" 0 KB 0 行已成功加载/卸载了主表 "SCOTT"."SYS_EXPORT_SCHEMA_01"******************************************************************************SCOTT.SYS_EXPORT_SCHEMA_01 的转储文件集为: F:\DATABACKUPOA\EXPDP_SCOTT2.DUMP作业 "SCOTT"."SYS_EXPORT_SCHEMA_01" 已于 19:39:40 成功完成开始于19:38:05 结束于19:39:40 1分30秒反而慢
–然后测试一个表很多的用户 1400张表
exp ecology/xxxxxxxxxx owner=ecology file=f:\ecology_exp.dmp开始于19:56结束于19:58用了2分多钟
—然后测试一个表很多的用户
Grant read,write on directory dir_dump to ecology;Grant read,write on directory dir_dp to ecology;expdp ecology/xxxxxxxx schemas=ecology directory=dir_dump dumpfile =expdp_ecology%U.dump logfile=expdp_ecology.log parallel=4
开始于19:51:30
结束于19:55:52
4分22秒
exp和expdp原理对比
1.exp/imp客户端程序,受网络,磁盘的影响;impdp/expdp服务器端程序,只受磁盘的影响
2.假设文件把文件导出在服务端,exp常规方式是使用SELECT的方式查询数据库中的数据,是需要通过buffer cache并通 过sql的语句处理层再转移至exp的导出文件(即要经过sga,pga才传输到客户端,而exp直接路径则是直接从磁盘上将数
据转移至exp的导出文件,所以速度更快;而expdp是exp的升级版,相当于exp + direct mode +
parallel(可能对导
出文件还进行了压缩,这是从导出文件的对比结果发现的,具体不清楚)。所有从总的来说,expdp比exp提供了并行的
方式(写入多个导出文件) 在硬件性能相同时候,数据量很小的情况下不是很明显,基本一样
然后测试一下导入
删除用户及所有对象,重新建立这个用户,导入数据测试
SQL>drop user scott cascade;SQL> create user scott identified by tiger;User createdSQL> grant resource,connect,EXP_FULL_DATABASE,IMP_FULL_DATABASE to scott;
IMP导入 17秒
imp system/manager fromuser=scott touser=scott file=f:\scott_exp.dmpC:\Users\Administrator> 9:38:39.87>imp system/manager fromuser=scott touser=scott file=f:\scott_exp.dmpImport: Release 11.2.0.1.0 - Production on 星期六 10月 10 09:38:49 2015Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options经由常规路径由 EXPORT:V11.02.00 创建的导出文件警告: 这些对象由 SCOTT 导出, 而不是当前用户已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入. 正在将 SCOTT 的对象导入到 SCOTT. . 正在导入表 "DEPT"导入了 4 行. . 正在导入表 "EMP"导入了 14 行. . 正在导入表 "SALGRADE"导入了 5 行. . 正在导入表 "TEST"导入了 1000000 行即将启用约束条件.成功终止导入, 没有出现警告。C:\Users\Administrator> 9:38:56.78>
IMPDP导入
impdp scott/tiger DIRECTORY=dir_dp DUMPFILE= EXPDP_SCOTT01.DUMP,EXPDP_SCOTT02.DUMP,EXPDP_SCOTT03.DUMP SCHEMAS=scott; 或者 impdp system/manager DIRECTORY=dir_dp DUMPFILE= EXPDP_SCOTT%U.DUMP SCHEMAS=scott EXCLUDE=STATISTICS parallel=4
同样用时17秒C:\Users\Administrator> 9:38:56.78>impdp system/manager DIRECTORY=dir_dp DUMPFILE= EXPDP_SCOTT%U.DUMP SCHEMAS=scott EXCLUDE=STATISTICS parallel=4Import: Release 11.2.0.1.0 - Production on 星期六 10月 10 09:40:30 2015Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_SCHEMA_01"启动 "SYSTEM"."SYS_IMPORT_SCHEMA_01": system/******** DIRECTORY=dir_dp DUMPFILE= EXPDP_SCOTT%U.DUMP SCHEMAS=scott EXCLUDE=STATISTICS parallel=4处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA处理对象类型 SCHEMA_EXPORT/TABLE/TABLE处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA. . 导入了 "SCOTT"."TEST" 8.568 MB 1000000 行. . 导入了 "SCOTT"."DEPT" 5.937 KB 4 行. . 导入了 "SCOTT"."EMP" 8.570 KB 14 行. . 导入了 "SCOTT"."SALGRADE" 5.867 KB 5 行. . 导入了 "SCOTT"."BONUS" 0 KB 0 行处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/INDEX处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT作业 "SYSTEM"."SYS_IMPORT_SCHEMA_01" 已于 09:40:47 成功完成