当前位置: 首页 > news >正文

第一篇《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)
CREATE  DIRECTORY 目录对象名称 AS '操作系统目录路径';
赋予权限

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

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

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

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

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

4.按条件导出
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)
CREATE DIRECTORY 目录对象名称 AS '操作系统目录路径';
赋予权限

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

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

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

    SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%';
    
2.执行导入命令(Impdp)
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. 按模式(用户)导入
  • 导入到同名用户

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

    impdp 用户名/密码@数据库 directory=目录对象名 dumpfile=user1.dmp remap_schema=用户1:用户2 logfile=imp_user2.log
    
    • remap_schema=原用户:目标用户:将数据从 用户1 映射到 用户2
3. 按表导入
impdp 用户名/密码@数据库 tables=1 directory=目录对象名 dumpfile=tables.dmp logfile=imp_tables.log
  • 支持多表tables=表1,表2,表3
  • 处理表冲突:添加 table_exists_action=replace 覆盖原表。
4. 按条件导入
impdp 用户名/密码@数据库 tables=1 directory=目录对象名 dumpfile=data.dmp query=1:"WHERE id=10" logfile=imp_filter.log
  • 用途:仅导入 表1id=10 的数据。
  • 注意:表必须已存在,否则需先导入表结构(使用 CONTENT=METADATA_ONLY)。

相关文章:

  • 学习笔记-INTER CPU 命名
  • 给定计算预算下的最佳LLM模型尺寸与预训练数据量分配
  • xss-flash钓鱼
  • 深入掌握Redis:从原理到实践的全方位指南
  • 【Linux-HTTP协议】HTTP知识延续+HTTP设计改进
  • 论坛系统测试报告
  • C++ std::vector 超详细指南:基础实践(手搓vector)
  • FFMPEG利用H264+AAC合成TS文件
  • 关于tresos Studio(EB)的MCAL配置之GPT
  • Netty笔记6:Netty组件
  • 剑指 Offer II 060. 出现频率最高的 k 个数字
  • [Redis] 终极缓存四连杀:缓存预热、缓存击穿、缓存穿透、缓存雪崩,真的懂了吗?
  • XHR请求解密:抓取动态生成数据的方法
  • 【django初学者项目】
  • Unity3D 布料模拟(Cloth Simulation)详解
  • 计算机网络(1) 网络通信基础,协议介绍,通信框架
  • 【杂谈】信创电脑华为w515(统信系统)登录锁定及忘记密码处理
  • JVM简单了解
  • Avalonia 打包成deb
  • Stream流的核心思想
  • 南宁海关辟谣网传“查获600公斤稀土材料”:实为焊锡膏
  • 去年六成中小企业营收保持上升或持平,发展环境持续优化
  • 发射后失联,印度地球观测卫星发射任务宣告失败
  • 上海公办小学验证今起开始,下周一和周二分区进行民办摇号
  • 舞者王佳俊谈“与AI共舞”:像多了一个舞伴,要考虑它的“感受”
  • 美国新泽西客运公司遭遇罢工:40年来首次,35万人受影响