数据泵导出导入与传统导出导入的区别
ORACLE从10g版本开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP,本文详细解说数据泵方式导数据的方法。
首先,需要了解使用EXPDP和IMPDP时应该注意的事项:
- EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
- 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
说明:
- 通配符%U,表示文件将按需要创建,格式将为expCASES_nn.dmp,其中nn 从01 开始,然后按需要自增。
- 当维护 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)导出导入数据详解