第一篇《Oracle 数据泵全解析:高效数据导出与导入》(Data Pump)

《Oracle 数据迁移与备份系列》

第一篇:《Oracle 数据泵全解析:高效数据导出与导入》(Data Pump)

oracle数据泵(Data Pump)是一个用于数据库数据导入导出的工具,由oracle自带,操作比较简单。

此方法适用于数据的逻辑备份和跨版本迁移。

基础

核心组件

  • expdp :导出工具(Data Pump Export)。用于将数据从 Oracle 数据库导出到 .dmp 文件中。

  • impdp :导入工具(Data Pump Import)。用于从 .dmp 文件导入数据到数据库。

实战

数据导出(Export)

1.事前准备
创建目录对象(Directory)
sql 复制代码
CREATE  DIRECTORY 目录对象名称 AS '操作系统目录路径';
赋予权限

在创建过文件后,用户一般不能直接使用,要为其赋予读写权限。

sql 复制代码
GRANT read, write ON DIRECTORY 目录对象名称 TO 用户名称;
2.执行导出命令(expdp)
sql 复制代码
expdp 用户名/密码@数据库服务名 参数1=值1 参数2=值2 ...
常规参数
常规参数 说明
用户名/密码 需要导出数据的数据库用户 必写
@数据库服务名 连接到的 Oracle 数据库 必写
directory=目录对象名 指定数据泵目录(如 DATA_PUMP_DIR 必写
dumpfile=文件名.dmp 导出数据文件的名称 必写
logfile=日志文件.log 记录导出过程的日志文件 必写
其他参数 可选,用于控制导出内容
特殊参数与场景
1.全库导出
**sql 复制代码
expdp 用户名/密码@数据库 full=y directory=目录对象名 dumpfile=文件名.dmp logfile=日志文件.log
  • 参数: full=y

  • **作用:**导出整个数据库。

2.按模式(用户)导出
sql 复制代码
expdp 用户名/密码@数据库 schemas=用户1 directory=目录对象名 dumpfile=文件名.dmp logfile=日志文件.log
  • 参数: schemas=用户1
  • 作用: 仅导出 用户1 用户下的所有对象。
3.按表导出
sql 复制代码
expdp 用户名/密码@数据库 tables=表1 directory=目录对象名 dumpfile=文件名.dmp logfile=日志文件.log
  • tables=表1 仅导出 表1。

  • tables=表1,表2...可导出多个表。

4.按条件导出
sql 复制代码
expdp 用户名/密码@数据库 tables=表1 directory=目录对象名 dumpfile=文件名.dmp logfile=日志文件.log query="WHERE id=10"
  • 参数: query="WHERE id=10"

  • 作用: 仅导出 id=10 的数据。

  • 注意: query必须在tables参数后面。

数据导入(Impdp

1.事前准备
确保dump文件的存在

数据导入的基础就是拥有数据导出产生的dump文件。

创建目录对象(Directory)
sql 复制代码
CREATE DIRECTORY 目录对象名称 AS '操作系统目录路径';
赋予权限

在创建过文件后,用户一般不能直接使用,要为其赋予读写权限。

sql 复制代码
GRANT read, write ON DIRECTORY 目录对象名称 TO 用户名称;
其他准备
  • 若导入用户与原用户不同,需提前创建目标用户并授权:

    sql 复制代码
    CREATE USER 新用户 IDENTIFIED BY 密码;
    GRANT CONNECT, RESOURCE TO 新用户;
  • 检查目标库字符集是否与导出文件兼容:

    sql 复制代码
    SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%';
2.执行导入命令(Impdp)
sql 复制代码
impdp 用户名/密码@数据库服务名 参数1=值1 参数2=值2 ...
常规参数
参数 说明
用户名/密码 目标库用户(需有 IMP_FULL_DATABASE 权限处理全库导入) 必写
@数据库服务名 目标 Oracle 数据库实例 必写
directory=目录对象名 存放导出文件的目录(需与导出时一致,如 DATA_PUMP_DIR 必写
dumpfile=文件名.dmp 导出文件的名称(支持通配符 %U 多文件导入) 必写
logfile=日志文件.log 记录导入过程的日志文件 必写
table_exists_action 表已存在时的处理方式(SKIPAPPENDTRUNCATEREPLACE
特殊参数与场景
1. 全库导入
复制代码
impdp 用户名/密码@数据库 full=y directory=目录对象名 dumpfile=full_db.dmp logfile=imp_full.log
  • 参数: full=y
  • 要求 :用户需有 IMP_FULL_DATABASE 权限。
  • 注意:目标库需与源库字符集兼容。
2. 按模式(用户)导入
  • 导入到同名用户

    sql 复制代码
    impdp 用户名/密码@数据库 schemas=用户1 directory=目录对象名 dumpfile=user1.dmp logfile=imp_user1.log
  • 跨用户导入(映射用户):

    sql 复制代码
    impdp 用户名/密码@数据库 directory=目录对象名 dumpfile=user1.dmp remap_schema=用户1:用户2 logfile=imp_user2.log
    • remap_schema=原用户:目标用户:将数据从 用户1 映射到 用户2
3. 按表导入
sql 复制代码
impdp 用户名/密码@数据库 tables=表1 directory=目录对象名 dumpfile=tables.dmp logfile=imp_tables.log
  • 支持多表tables=表1,表2,表3
  • 处理表冲突 :添加 table_exists_action=replace 覆盖原表。
4. 按条件导入
sql 复制代码
impdp 用户名/密码@数据库 tables=表1 directory=目录对象名 dumpfile=data.dmp query=表1:"WHERE id=10" logfile=imp_filter.log
  • 用途 :仅导入 表1id=10 的数据。
  • 注意 :表必须已存在,否则需先导入表结构(使用 CONTENT=METADATA_ONLY)。
相关推荐
异世界贤狼转生码农1 小时前
MongoDB Windows 系统实战手册:从配置到数据处理入门
数据库·mongodb
QuZhengRong2 小时前
【数据库】Navicat 导入 Excel 数据乱码问题的解决方法
android·数据库·excel
码农阿豪2 小时前
Windows从零到一安装KingbaseES数据库及使用ksql工具连接全指南
数据库·windows
时序数据说7 小时前
时序数据库市场前景分析
大数据·数据库·物联网·开源·时序数据库
听雪楼主.11 小时前
Oracle Undo Tablespace 使用率暴涨案例分析
数据库·oracle·架构
我科绝伦(Huanhuan Zhou)11 小时前
KINGBASE集群日常维护管理命令总结
数据库·database
妖灵翎幺11 小时前
Java应届生求职八股(2)---Mysql篇
数据库·mysql
HMBBLOVEPDX11 小时前
MySQL的事务日志:
数据库·mysql
weixin_4196583113 小时前
MySQL数据库备份与恢复
数据库·mysql
专注API从业者15 小时前
基于 Flink 的淘宝实时数据管道设计:商品详情流式处理与异构存储
大数据·前端·数据库·数据挖掘·flink