Oracle impdp与expdp进行数据资产快速迁移
背景
对于Oracle数据迁移任务,官方提供了一系列工具[1],应用较多的是Data Pump工具和SQL*Loader工具。
Data Pump工具主要适用于Oracle数据库之间数据迁移,SQL*Loader工具偏向于外部数据文件导入。
- Oracle Data Pump technology enables very high-speed movement of data and metadata from one database to another.
- SQL*Loader loads data from external files into Oracle Database tables.
© Oracle 说的😎
Data Pump工具由以下三个模块组成:
- Command-line clients,
expdp
andimpdp
- DBMS_DATAPUMP PL/SQL package (also known as the Data Pump API)
- DBMS_METADATA PL/SQL package (also known as the Metadata API)
本文主要介绍expdp
和 impdp
的使用方法。
基本用法
环境: Windows 10 or latest, Oracle 11g or latest version
目录创建与授权
Data Pump工具导入导出的文件需要储存在实体目录下,并在Oracle中创建虚拟目录名称与之映射。
目录查询
以管理员账号登陆sqlplus
SQL>conn system/manger@orcl as sysdba
SQL>select * from dba_directories;
可以查看当前存在的目录,结果如下:
OWNER DIRECTORY_NAME
------------------------------ -----------------------------
DIRECTORY_PATH
------------------------------------------------------------
SYS XMLDIR
c:\ade\aime_dadvfh0169\oracle/rdbms/xml
DIRECTORY_PATH
是实体目录位置,请确保已经创建此目录DIRECTORY_NAME
是虚拟目录名称
目录创建
可以使用已经存在的目录,或者创建新的目录(推荐)
SQL>create directory dump_dir as 'd:\test\dump';
dump_dir
自定义名称,对应DIRECTORY_NAME
创建后可以再次查询是否创建成功。
目录授权
给数据恢复或导出用户授权[2]
SQL>grant read,write on directory dump_dir to scott;
导入与导出
expdp导出
导出生成的dmp会保存在上面创建的实体目录中。
导出用户
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp directory=dump_dir;
导出表
expdp scott/tiger@orcl tables=emp,dept dumpfile=expdp.dmp directory=dump_dir;
按查询条件导
expdp scott/tiger@orcl directory=dump_dir dumpfile=expdp.dmp tables=emp query='where deptno=20';
按表空间导
expdp system/manager@orcl directory=dump_dir dumpfile=tablespace.dmp tablespaces=temp,example;
导整个数据库
expdp system/manager@orcl directory=dump_dir dumpfile=full.dmp full=y;
impdp导入
导入之前,需要确保目录创建与授权完成,并且dmp文件已经拷贝至对应目录下。
导入用户(从用户scott导入到用户scott)
impdp scott/tiger@orcl directory=dump_dir dumpfile=expdp.dmp schemas=scott;
导入表(从scott用户中把表dept和emp导入到system用户中)
impdp system/manager@orcl directory=dump_dir dumpfile=expdp.dmp tables=scott.dept,scott.emp remap_schema=scott:system;
导入表空间
impdp system/manager@orcl directory=dump_dir dumpfile=tablespace.dmp tablespaces=example;
导入数据库
impdb system/manager@orcl directory=dump_dir dumpfile=full.dmp full=y;
追加数据
impdp system/manager@orcl directory=dump_dir dumpfile=expdp.dmp schemas=system table_exists_action