Oracle使用数据泵(EXPDP,IMPDP)导出导入数据详解

数据泵导出导入与传统导出导入的区别

ORACLE从10g版本开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP,本文详细解说数据泵方式导数据的方法。

首先,需要了解使用EXPDP和IMPDP时应该注意的事项:

  1. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
  2. IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。

配置DIRECTORY

# 创建数据存储目录
# mkdir [DIRECTORY_PATH]
mkdir /data/app/oracle/oradp

# 以管理员身份登录数据库
sqlplus system/[PASSWORD]

# 创建DIRECTORY
# create DIRECTORY [DIRECTORY_NAME] as [DIRECTORY_PATH];
create DIRECTORY dpdata as '/data/app/oracle/oradp';
# 查看DIRECTORY
select * from dba_directories;
# 用户授权
# grant read,write on DIRECTORY [DIRECTORY_NAME] to [USER_NAME];
grant read,write on DIRECTORY dpdata to liuzhilin;

# 删除DIRECTORY目录
drop DIRECTORY [DIRECTORY_NAME];

导出数据expdp

以下介绍几种数据库导出方法:

# 导出整个数据库
expdp [USER_NAME]/[PASSWORD] DIRECTORY=[DIRECTORY_NAME] DUMPFILE=[FILE_NAME].dmp FULL=y;
# expdp liuzhilin/MiMa DIRECTORY=dpdata DUMPFILE=db210202.dmp FULL=y;

# 并行导出
expdp [USER_NAME]/[PASSWORD]@[SID] DIRECTORY=[DIRECTORY_NAME] DUMPFILE=[FILE_NAME].dmp PARALLEL=40 JOB_NAME=scott

# 按表名导出
expdp [USER_NAME]/[PASSWORD]@[SID] TABLES=[TABLE_1],[TABLE_2] DUMPFILE=[FILE_NAME].dmp DIRECTORY=[DIRECTORY_NAME];

# 按查询条件导出
expdp [USER_NAME]/[PASSWORD]@[SID] DIRECTORY=[DIRECTORY_NAME] DUMPFILE=[FILE_NAME].dmp TABLES=[TABLE_1] RUERY='WHERE [FIELD_NAME]=[VALUE]';

# 按表空间导出
expdp [USER_NAME]/[PASSWORD] DIRECTORY=[DIRECTORY_NAME] DUMPFILE=[FILE_NAME].dmp TABLESPACES=[TABLESPACE_1],[TABLESPACE_2];

# 按用户导出
expdp [USER_NAME]/[PASSWORD]@[SID] SCHEMAS=[USER_1],[USER_2] DUMPFILE=[FILE_NAME].dmp DIRECTORY=[DIRECTORY_NAME];

还原数据

以下介绍几种数据库还原方法:

# 全量导入数据库
impdp [USER_NAME]/[PASSWORD] DIRECTORY=[DIRECTORY_NAME] DUMPFILE=[FILE_NAME] FULL=y;
# impdp liuzhilin/MiMa DIRECTORY=dpdata DUMPFILE=db210202.dmp FULL=y;

# 导入时修改owner
impdp [USER_NAME]/[PASSWORD] DIRECTORY=[DIRECTORY_NAME] DUMPFILE=[FILE_NAME].dmp TABLES=[USER_1].[TABLE_1] REMAP_SCHEMA=[USER_1]:[USER_2];
# impdp liuzhilin/MiMa DIRECTORY=dpdata DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:liuzhilin;

# 导入表空间
impdp [USER_NAME]/[PASSWORD] DIRECTORY=[DIRECTORY_NAME] DUMPFILE=[FILE_NAME].dmp TABLESPACES=[TABLESPACE_1];

# 导入至指定用户
impdp [USER_NAME]/[PASSWORD] DIRECTORY=[DIRECTORY_NAME] DUMPFILE=[FILE_NAME].dmp SCHEMAS=[USER_NAME];

# 追加数据
impdp [USER_NAME]/[PASSWORD] DIRECTORY=[DIRECTORY_NAME] DUMPFILE=[FILE_NAME].dmp SCHEMAS=[USER_NAME] TABLE_EXISTS_ACTION
# impdp liuzhilin/MiMa DIRECTORY=dpdata DUMPFILE=expdp.dmp SCHEMAS=liuzhilin TABLE_EXISTS_ACTION

参数释义:expdp

CONTENT={ALL | DATA_ONLY | METADATA_ONLY}

指定要导出的内容,默认值为ALL。

参数 说明
ALL 导出对象定义及其所有数据
DATA_ONLY 只导出对象数据
METADATA_ONLY 只导出对象定义

DIRECTORY

指定转储文件和日志文件所在的目录。

EXCLUDE

执行操作时通过OBJECT_TYPE指定要排除的对象类型、通过NAME_CLAUSE指定要排除的具体对象:

EXCLUDE=[OBJECT_TYPE][:NAME_CLAUSE] [,….]
# expdp scott/tiger DIRECTORY=dpdata DUMPFILE=db210202.dup EXCLUDE=VIEW

INCLUDE

导出时包含指定的类型:

INCLUDE=TABLE_DATA,
INCLUDE=TABLE:"LIKE 'TAB%'"
INCLUDE=TABLE:"NOT LIKE 'TAB%'"

注意:EXCLUDE和INCLUDE不能同时使用。

FILESIZE
指定导出文件的最大尺寸,默认为0,即没有限制,单位是bytes。

JOB_NAME
此次导出进程使用的名称,方便跟踪查询。

FLASHBACK_SCN

指定导出特定SCN时刻的表数据,如:

expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_SCN=358523

FLASHBACK_TIME="TO_TIMESTAMP[TIME_VALUE]"

指定导出特定时间点的表数据,如:

expdp scott/tiger DIRECTORY=dump DUMPFILE=db210202.dmp FLASHBACK_TIME="TO_TIMESTAMP('21-01-2021 14:35:00','DD-MM-YYYY HH24:MI:SS')"

注意:FLASHBACK_SCN和FLASHBACK_TIME不能同时使用。

TABLESPACE
指定导出表空间。

QUERY=[SCHEMA.] [TABLE_NAME:] QUERY_CLAUSE

参数 说明
SCHEMA 指定方案名
TABLE_NAME 指定表名
QUERY_CLAUSE 指定条件限制子句
expdp scott/tiger DIRECTORY=dpdata DUMPFILE=db210202.dmp TABLES=emp query='WHERE name=liuzhilin'

注意:

QUERY选项不能与CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TRANSPORT_TABLESPACES等选项同时使用。

PARALLEL

指定执行导出操作的并行进程个数,默认值为1,每个进程创建一个单独的转储文件,因此参数DUMPFILE应当拥有和并行度一样多的项目,最好指定通配符作为文件名,而不是显式地输入各个文件名,如:

expdp liuzhilin/MiMa tables=CASES DIRECTORY=dpdata DUMPFILE=expCASES_%U.dmp PARALLEL=4 job_name=Cases_Export

说明:

  1. 通配符%U,表示文件将按需要创建,格式将为expCASES_nn.dmp,其中nn 从01 开始,然后按需要自增。
  2. 当维护 Data Pump 作业相关的开销超过并行线程的效益时,分离访问数据文件和转储目录文件系统的输入/输出通道就变得非常重要。

参数释义:impdp

TABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | FRPLACE }

参数 说明
SKIP 跳过已存在表处理下一个对象
APPEND 追加数据
TRUNCATE 截断表,然后为其追加新数据
REPLACE 删除已存在表,重建表且追加数据

注意:TRUNCATE选项不适用于簇表和NETWORK_LINK选项。

REMAP_SCHEMA=[SOURCE_SCHEMA]:[TARGET_SCHEMA]
将源方案的所有对象装载到目标方案中。

REMAP_TABLESPACE=[SOURCE_TABLESPACE]:[TARGET_TABLESPACE]
将源表空间的所有对象导入到目标表空间中。

REMAP_DATAFILE=[SOURCE_DATAFILE]:[TARGET_DATAFILE]
将源数据文件名转变为目标数据文件名,一般用于在不同平台之间搬移表空间。

原创文章禁止转载:技术学堂 » Oracle使用数据泵(EXPDP,IMPDP)导出导入数据详解

精彩评论

4+1=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏