Oracle数据泵
一、数据泵的作用:
1.实现逻辑备份和逻辑恢复
2.在数据库用户之间移动对象
3.在数据库之间移动对象
4.实现表空间转移
二 、数据泵的特点与传统导出导入的区别
1.EXP和IMP是客户段工具程序, EXPDP和IMPDP是服务端的工具程序
2.EXP和IMP效率比较低. EXPDP和IMPDP效率高
3.数据泵功能强大并行、过滤、转换、压缩、加密、交互等等
4.数据泵不支持9i以前版本, EXP/IMP短期内还是比较适用
5.同exp/imp数据泵导出包括导出表,导出方案,导出表空间,导出数据库4种方式.
三、DATA PUMP的体系结构:
四、EXPDP语法介绍:
数据泵导出实用程序提供了一种用于在 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语法介绍:
数据泵导入实用程序提供了一种用于在 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 将立即关闭
数据泵作业。
六、实践操作:
1. 使用目录:DATA_PUMP_DIR
- SQL> select * from dba_directories;
- OWNER DIRECTORY_NAME
- ------------------------------ ------------------------------
- DIRECTORY_PATH
- ----------------------------------------------------------------
- SYS ADMIN_DIR
- C:\ADE\aime_10.2_nt_push\oracle/md/admin
- SYS DATA_PUMP_DIR
- E:\admin\orcl\dpdump\
- SYS WORK_DIR
- C:\ADE\aime_10.2_nt_push\oracle/work
- SQL> grant read, write on directory data_pump_dir to scott;
- 授权成功。
2.EXPDP用法举例:
1)按用户导
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
2)并行进程parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名导
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
4)按查询条件导
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query=‘WHERE deptno=20‘;
5)按表空间导
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)导整个数据库
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
3.IMPDP用法举例:
1)导到指定用户下
impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;
2)改变表的owner
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3)导入表空间
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
4)导入数据库
impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
5)追加数据
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION
4. 案例:将数据库A中HR用户下所有对象导入到SCOTT用户下:
1)导出HR方案:
- expdp system/admin@orcl schemas=hr dumpfile=hr.dmp DIRECTORY=data_pump_dir nologfle=y;
2)将hr.dmp导入SCOTT方案:
- 启动 "SYSTEM"."SYS_IMPORT_FULL_01": system/******** dumpfile=hr.dmp directory=data_pump_dir remap_schema=hr:scott
- 处理对象类型 SCHEMA_EXPORT/USER
- ORA-31684: 对象类型 USER:"SCOTT" 已存在
- 处理对象类型 SCHEMA_EXPORT/SYSTEM_GRANT
- 处理对象类型 SCHEMA_EXPORT/ROLE_GRANT
- 处理对象类型 SCHEMA_EXPORT/DEFAULT_ROLE
- 处理对象类型 SCHEMA_EXPORT/TABLESPACE_QUOTA
- 处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
- 处理对象类型 SCHEMA_EXPORT/SEQUENCE/SEQUENCE
- 处理对象类型 SCHEMA_EXPORT/TABLE/TABLE
- 处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
- . . 导入了 "SCOTT"."COUNTRIES" 6.085 KB 25 行
- . . 导入了 "SCOTT"."DEPARTMENTS" 6.632 KB 27 行
- . . 导入了 "SCOTT"."EMPLOYEES" 15.76 KB 107 行
- . . 导入了 "SCOTT"."JOBS" 6.609 KB 19 行
- . . 导入了 "SCOTT"."JOB_HISTORY" 6.585 KB 10 行
- . . 导入了 "SCOTT"."LOCATIONS" 7.710 KB 23 行
- . . 导入了 "SCOTT"."REGIONS" 5.289 KB 4 行
- 处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/INDEX
- 处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
- 处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
- 处理对象类型 SCHEMA_EXPORT/TABLE/COMMENT
- 处理对象类型 SCHEMA_EXPORT/PROCEDURE/PROCEDURE
- 处理对象类型 SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
- 处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
- 处理对象类型 SCHEMA_EXPORT/TABLE/TRIGGER
- 处理对象类型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
- 作业 "SYSTEM"."SYS_IMPORT_FULL_01" 已经完成, 但是有 1 个错误 (于 15:32:01 完成)
3)效果就是HR下面的对象都复制到了SCOTT用户下:
- SQL> select * from scott.employees where rownum<10;
- EMPLOYEE_ID FIRST_NAME LAST_NAME EMAIL
- ----------- -------------------- ------------------------- ------------------
- 100 Steven King SKING
- 101 Neena Kochhar NKOCHHAR
- 102 Lex De Haan LDEHAAN
- 103 Alexander Hunold AHUNOLD
- 104 Bruce Ernst BERNST
- 105 David Austin DAUSTIN
- 106 Valli Pataballa VPATABAL
- 107 Diana Lorentz DLORENTZ
- 108 Nancy Greenberg NGREENBE
- 已选择9行。