Oracle 导入导出 dmp 数据文件实战

一、DMP文件基础知识​​

1. ​​DMP文件定义​​

DMP(Data Pump Dump File)是Oracle数据库专用的二进制格式文件,由expdp/impdp或旧版exp/imp工具生成。它包含数据库对象的元数据(表结构、索引等)和实际数据,是数据备份、迁移和恢复的核心载体。

2. ​​DMP文件结构​​

  • ​​ 文件头​​:记录Oracle版本、字符集、导出时间等元信息。
  • ​​数据段​​:存储表数据,按数据块组织,支持并行读写。
  • ​​索引段​​:加速数据检索的索引信息,包含校验和等完整性标记。
  • ​​数据字典​​:定义表、视图、存储过程等对象的元数据。

3. ​核心功能​​

  • ​​全量备份​​:导出整个数据库或指定用户的所有对象。
  • ​​增量同步​​:仅导出变更数据,减少传输量(需结合日志)。
  • ​​跨平台迁移​​:支持不同Oracle版本、操作系统间的数据传输。

4. 生成工具​​

  • ​​传统工具​​:exp(导出)和imp(导入),适用于Oracle 10g及以下版本。
  • ​​数据泵工具​​:expdp和impdp,提供并行处理、压缩等高级特性(Oracle 10g+推荐)

二、DMP文件导出实战​​

1. ​​数据泵导出(expdp)​​

(1)语法
expdp system/password@ORCL directory=DATA_PUMP_DIR dumpfile=20250520_full.dmp logfile=export.log schemas=HR,SCOTT parallel=4 compression=all encryption=password:oracle123

​​关键参数​​:

  • directory:预先创建的Oracle目录对象(需关联物理路径)。
  • schemas:指定导出用户,多用户用逗号分隔。
  • parallel:并行线程数,提升大库导出速度。
  • compression:减少文件体积(可选all/data/metadata)。
  • encryption:加密保护敏感数据(支持密码或密钥)。
  • log: 日志路径
(2) 示例
  1. 查询 Oracle 预先创建的Oracle目录对象
select * from dba_directories;
  1. 创建指定的 Oracle 目录对象(关联物理路径)
create directory testdir as 'D:\OracleDMP';
  1. 手动创建物理目录 D:\OracleDMP
  2. 将这个目录指给用户(TEST_FORMAL)
SQL> grant read,write on directory testdir to TEST_FORMAL;
  1. 执行导出命令
--导出指定表 USER_TEMP,USER_TEMP2
expdp TEST_FORMAL/MyPassword@ORCL directory=testdir dumpfile=test.dmp logfile=exp.log  tables=USER_TEMP,USER_TEMP2
-- 导出整库
expdp TEST_FORMAL/MyPassword@ORCL directory=testdir dumpfile=test.dmp logfile=exp.log 

2. ​​传统导出(exp)​​

语法

exp system/password@ORCL file=/backup/legacy.dmp owner=HR buffer=102400 rows=y consistent=ylog= /backup/exp.log

示例:

--导出指定表 USER_TEMP,USER_TEMP2
exp TEST_FORMAL/MyPassword@ORCL file=D:\OracleDMP\test.dmp tables=(USER_TEMP,USER_TEMP2) log=D:\OracleDMP\exp.log --导出整库
exp  TEST_FORMAL/MyPassword@ORCL file=D:\OracleDMP\test.dmp log=D:\OracleDMP\exp.log 

​​适用场景​​:低版本数据库或简单备份需求。

三、DMP文件导入实战​​

1. ​​数据泵导入(impdp)​​

impdp system/password@NEWDB directory=DATA_PUMP_DIR dumpfile=20250520_full.dmp remap_schema=HR:NEW_HR remap_tablespace=USERS:NEW_USERS transform=segment_attributes:n exclude=statistics

​​关键参数​​:

  • directory:预先创建的Oracle目录对象(需关联物理路径)。
  • remap_schema:用户重映射(原用户→目标用户)。
  • remap_tablespace:调整表空间分配49。
  • transform:忽略存储参数冲突(如storage子句)。
  • exclude/include:过滤对象类型(如排除统计信息)。

2. ​​传统导入(imp)​​

imp system/password@NEWDB file=/backup/legacy.dmp fromuser=HR touser=NEW_HR ignore=y commit=y

​​注意事项​​:需手动创建目标用户和表空间。

1.核心参数说明

参数作用说明示例
USERID指定数据库连接凭证(格式:用户名/密码@服务名USERID=system/oracle@ORCL
FILE指定要导入的DMP文件路径FILE=/data/full.dmp
FULL全库导入(需IMP_FULL_DATABASE权限)FULL=Y
FROMUSER/TOUSER用户重定向(将原用户数据导入目标用户)FROMUSER=HR TOUSER=NEW_HR
TABLES指定导入的表(支持多表或分区表)TABLES=(EMP,DEPT)TABLES=(T1:P1,T1:P2)
ROWS是否导入数据行(默认Y导入数据,N仅导入结构)ROWS=N(仅导入DDL)
IGNORE忽略对象创建错误(如重复表/索引,默认N报错)IGNORE=Y(跳过冲突继续执行)
COMMIT提交频率(默认N批量提交,Y逐行提交)COMMIT=Y(适用于大事务回滚控制)
LOG指定日志文件路径LOG=/logs/imp.log
INDEXFILE将DDL语句写入指定文件(用于调试)INDEXFILE=ddl.sql

2. 高级参数扩展

​​​

参数​​适用场景
DESTROY=Y覆盖已有表空间文件(慎用)
GRANTS=N跳过权限导入(如仅需数据)
RECORDLENGTH=65535调整I/O缓冲区大小(优化大数据量导入性能)
PARFILE从参数文件读取配置(简化复杂命令)

3.传统导入(IMP)的三种模式​​

1. 完全导入模式(FULL=Y)​​

​​定义​​:导入整个DMP文件中的所有对象(用户、表、索引等)。
​​命令示例​​:

imp system/oracle@ORCL FILE=full.dmp FULL=Y IGNORE=Y LOG=imp_full.log

​​适用场景​​:数据库整体迁移或灾难恢复。
​​注意事项​​:

需提前创建目标库的表空间和用户
目标库字符集必须与DMP文件一致(通过NLS_LANG环境变量控制)

​​2. 用户模式导入(FROMUSER/TOUSER)​​

​​定义​​:将指定用户的数据导入到另一用户(支持跨用户映射)。
​​命令示例​​:

imp system/oracle@ORCL FILE=hr.dmp FROMUSER=HR TOUSER=NEW_HR LOG=imp_hr.log

适用场景​​:用户数据迁移或测试环境克隆。
​​注意事项​​:

目标用户需提前创建分配权限
若表空间不同需配合REMAP_TABLESPACE(仅数据泵支持,传统IMP需手动处理)

​​3. 表模式导入(TABLES=)​​

​​定义​​:选择性导入特定表或分区。
​​命令示例​​:

imp scott/tiger@ORCL FILE=emp.dmp TABLES=(EMP,DEPT) IGNORE=Y LOG=imp_tables.log

​​适用场景​​:局部数据恢复或表结构同步。
​​注意事项​​:

支持通配符%(如TABLES=(EMP%)导入EMP开头的表)
分区表需指定分区名(如TABLES=(SALES:Q1_2025))5

四、高级优化策略​​

1. ​​性能调优​​

​​并行处理​​:parallel=8(建议不超过CPU核心数)。
​​网络压缩​​:network_link=… compression=data(远程同步)。
​​分段导出​​:按表分区或日期范围分批操作。

2. ​​增量同步​​

​​策略选择​​:

  • ​​全量同步​​:首次迁移或数据一致性要求高时使用。
  • ​​增量同步​​:定期追加变更数据(需配合日志)。

​​代码示例​​:

expdp system/password@ORCL directory=dpump_dir dumpfile=incr_%U.dmp schemas=HR content=data_only query="WHERE update_time>SYSDATE-1"

五、问题总结

1. 通过 exp 命令导出,使用 impdp 命令无法导入;

Oracle 中 因为版本问题或命令问题处理时,我们要 查看原始 导出日志文件,当使用的是 exp 模式导出的数据,应当用 imp 模式导入;
导出日志文件一般格式如下 ,例如 a.log:


Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Tes
Export done in UTF8 character set and UTF8 NCHAR character set
server uses AL32UTF8 character set (possible charset conversion)About to export specified tables via Conventional Path ...
Current user changed to SYSTEM
. . exporting table           USER_EXPORT   19138328 rows exported
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.
Export terminated successfully with warnings.

从日志文件我们可以分析出,

  • 原始数据导出的 Oracle 版本为 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
  • 原始数据导出的 Oracle character 为 AL32UTF8
  • 原始数据导出的 Oracle 命令为 EXP
  • 原始数据导出的表(exporting table )为 USER_EXPORT
  • 原始数据导出的用户(Current user)为 SYSTEM

2. 源数据导出环境为 AL32UTF8 ,目标环境为 ZHS16GBK ,导致命令无法执行或数据乱码;

导入数据时,必须保证两个平台的 字符集一致,若不一致,会导致出现导入失败问题,解决方法为
设置 Oracle 环境变量的方式解决,具体可以参考博文 Oracle 字符集简介及修改操作实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/82869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Coursier:安装sbt

命令 ./cs launch sbt -- --version 的含义是​​通过 Coursier(cs)工具启动 SBT(Scala 构建工具),并查询其版本信息​​。具体解析如下: ​​1. 命令结构解析​​ ​​./cs​​: 这是 Coursie…

【深度学习】12. VIT与GPT 模型与语言生成:从 GPT-1 到 GPT4

VIT与GPT 模型与语言生成:从 GPT-1 到 GPT4 本教程将介绍 GPT 系列模型的发展历程、结构原理、训练方式以及人类反馈强化学习(RLHF)对生成对齐的改进。内容涵盖 GPT-1、GPT-2、GPT-3、GPT-3.5(InstructGPT)、ChatGPT …

项目更改权限后都被git标记为改变,怎么去除

❗问题描述: 当你修改了项目中的文件权限(如使用 chmod 改了可执行权限),Git 会把这些文件标记为“已更改”,即使内容并没有发生任何改变。 ✅ 解决方法: ✅ 方法一:告诉 Git 忽略权限变化&am…

openfeignFeign 客户端禁用 SSL

要针对特定的 Feign 客户端禁用 SSL 验证,可以通过自定义配置类实现。以下是完整解决方案: 1. 创建自定义配置类(禁用 SSL 验证) import feign.Client; import feign.httpclient.ApacheHttpClient; import org.apache.http.conn…

移动端 UI自动化测试学习之Appium框架(包含adb调试工具介绍)

文章目录 前言adb调试工具adb组成常用命令获取程序的包名和界面名文件传输发送文件到手机从手机中拉取文件 获取app启动时间获取手机日志其他命令 Appium 简介工作原理图 环境搭建安装客户端库(appium lib)安装Appium Server安装JDK(自行下载…

【论文解读】DETR: 用Transformer实现真正的End2End目标检测

1st authors: About me - Nicolas Carion‪Francisco Massa‬ - ‪Google Scholar‬ paper: [2005.12872] End-to-End Object Detection with Transformers ECCV 2020 code: facebookresearch/detr: End-to-End Object Detection with Transformers 1. 背景 目标检测&#…

性能测试-jmeter实战1

课程:B站大学 记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师 性能测试-jmeter实战1 为什么需要性能测试呢?性能测试的作用?性能测试体系性能测试基础性能测试工具性能监控…

HTML、XML、JSON 是什么?有什么区别?又是做什么的?

在学习前端开发或者理解互联网工作原理的过程中,我们经常会遇到三个非常重要的概念:HTML、XML 和 JSON。它们看起来有点像,但其实干的事情完全不同。 🏁 一、他们是谁?什么时候诞生的? 名称全称诞生时间谁…

HTML5 全面知识点总结

一、HTML 基础概念 HTML:超文本标记语言,用于创建网页和 Web 应用的结构。 超文本:可以包含文字、图片、音频、视频、链接等多种媒体。 标记语言:通过标签标记网页的各个部分。 二、HTML5 的新特性(区别于 HTML4&am…

记录一个难崩的bug

1.后端配置了 Filter 过滤器,如果再配置了Configuration ,那么会出现冲突吗? 过滤器与Configuration类本身无直接冲突,但需注意注册机制、执行顺序和依赖管理。通过显式控制过滤器的注册方式和优先级,结合Spring Security的链式配…

RabbitMQ 与其他 MQ 的对比分析:Kafka/RocketMQ 选型指南(二)

四、三者性能大比拼 4.1 吞吐量 吞吐量是衡量消息队列处理能力的重要指标,它反映了在单位时间内消息队列能够处理的消息数量。在这方面,Kafka 表现最为出色,其独特的设计使其能够轻松处理每秒数百万条消息 。Kafka 采用分布式架构和分区机制…

【C】箭头运算符

在C语言中,p_tone->power_off 是一种通过指针访问结构体成员的方法,称为箭头运算符(->)。它主要用于以下场景: 1. 语法解释 p_tone:是一个指向结构体(或联合体)的指针。powe…

【Unity】 HTFramework框架(六十六)缺省的运行时组件检视器

更新日期:2025年5月29日。 Github 仓库:https://github.com/SaiTingHu/HTFramework Gitee 仓库:https://gitee.com/SaiTingHu/HTFramework 索引 一、缺省的运行时组件检视器1.自定义运行时组件检视器 二、使用缺省的运行时组件检视器1.定义组…

AI和大数据:是工具,还是操控人心的“隐形之手”?

AI和大数据:是工具,还是操控人心的“隐形之手”? 开场白:聊点现实的 在这个数据至上的时代,我们的生活被AI和大数据悄然改变。从电商推荐、短视频算法,到招聘筛选、智慧城市,它们像一个贴心的…

k8s部署ELK补充篇:kubernetes-event-exporter收集Kubernetes集群中的事件

k8s部署ELK补充篇:kubernetes-event-exporter收集Kubernetes集群中的事件 文章目录 k8s部署ELK补充篇:kubernetes-event-exporter收集Kubernetes集群中的事件一、kubernetes-event-exporter简介二、kubernetes-event-exporter实战部署1. 创建Namespace&a…

Apache 高级配置实战:从连接保持到日志分析的完整指南

Apache 高级配置实战:从连接保持到日志分析的完整指南 前言 最近在深入学习 Apache 服务器配置时,发现很多朋友对 Apache 的高级功能还不够了解。作为一个在运维路上摸爬滚打的技术人,我想把这些实用的配置技巧分享给大家。今天这篇文章会带…

【Stable Diffusion 1.5 】在 Unet 中每个 Cross Attention 块中的张量变化过程

系列文章目录 文章目录 系列文章目录前言特征图和注意力图的尺寸差异原因在Break-a-Scene中的具体实现总结 前言 特征图 (Latent) 尺寸和注意力图(attention map)尺寸在扩散模型中有差异,是由于模型架构和注意力机制的特性决定的。 特征图和注意力图的尺寸差异原…

【监控】Prometheus+Grafana 构建可视化监控

在云原生和微服务架构盛行的今天,监控系统已成为保障业务稳定性的核心基础设施。作为监控领域的标杆工具,Prometheus和Grafana凭借其高效的数据采集、灵活的可视化能力,成为运维和开发团队的“标配”。 一、Prometheus Prometheus诞生于2012…

替代 WPS 的新思路?快速将 Word 转为图片 PDF

在这个数字化办公日益普及的时代,越来越多的人开始关注文档处理工具的功能与体验。当我们习惯了某些便捷操作时,却发现一些常用功能正逐渐变为付费项目——比如 WPS 中的一项实用功能也开始收费了。 这款工具最特别的地方在于,可以直接把 W…

CodeTop之数组中的第K个最大的元素

题目链接 215. 数组中的第K个最大元素 - 力扣(LeetCode) 题目解析 算法原理 解法一: 直接理由java内部的排序函数,Arrays.sort()进行排序, 然后我们直接返回第k个最大的元素 nums[nums.length-k] 解法二: 使用堆 我们先把所有元素丢到大根堆里面…