【Oracle】Oracle导入导出dmp文件
文章目录
- 前言
- 一、什么是dmp?
- 二、imp/impdp、exp/expdp对比及示例
- 1.区别
- 2.imp/impdp对比及示例
- a. imp
- b. impbp
- 3.exp/expdp对比及示例
- a. exp
- b.expdp
- 3.其他事项
- 三、执行导入导出前置条件
- 1.创建角色并授权
- 2.创建目录映射
前言
在工作中,经常会遇到需要备份库,库表迁移的场景,对于oracle会使用dmp文件进行数据迁移和备份。基于一次迁移数据库的经历,整理记录dmp相关知识点,供后续工作参考使用。
一、什么是dmp?
● dmp是"Data Pump"的缩写,它是Oracle独有的一种数据导入导出文件格式。.dmp文件是一种数据库导出文件的扩展名,通常用于存储数据库中的表、数据、视图等对象的结构和内容。是一种特定数据库系统的二进制信息,因此不能直接用文本编辑器打开。
●.dmp文件一般包含数据定义语言(DDL)和数据操作语言(DML)。具体来说,DDL是用来定义数据库对象,例如表、视图、用户等等;DML则是用来操作这些对象,例如插入、删除、更新数据等。常用来进行数据库迁移或者备份操作。
●其他数据库也有类似备份文件,比如MySQL数据库使用.sql文件或者.dump文件来表示数据库导出文件,而SQL Server数据库使用.bak文件来表示备份文件。
二、imp/impdp、exp/expdp对比及示例
imp/exp(Oracle导入导出实用程序)是使用传统的导出技术,而impdp/expdp(数据泵导入实用程序)是使用Oracle Data Pump技术。Data Pump是Oracle在10g版本中引入的高性能、可扩展的导入导出工具,即 Oracle 10g 之前的版本不可以使用 impdp/expdp。
1.区别
●imp和exp是传统的导入和导出工具,而impdp和expdp是数据泵工具,采用了新的架构和方法。
●imp和exp是基于基于二进制文件的,而impdp和expdp则是使用数据泵作业来执行数据移动操作,可以提供更高的性能和扩展性。
●imp和exp不支持在分布式环境中执行,而impdp和expdp可以在分布式环境中执行。
●数据泵通常指的是一种高性能的数据导入和导出工具,用于在数据库系统中进行快速的数据迁移和加载操作。数据泵工具能够提供比传统的导入导出工具更快速、更灵活的数据传输方式,通常支持并行处理、大容量数据传输和高性能加载等特点。
2.imp/impdp对比及示例

a. imp
可通过 imp help=y 命令查询相关参数
- imp常用参数说明,可以根据需要指定不同的参数来控制导入的方式和内容。
| 参数 | 使用说明 |
|---|---|
| TOUSER | 指定要导入数据的用户名。 |
| FROMUSER | 指定导入数据来自的用户名。 |
| FILE | 指定要导入的文件路径和名称。例如,FILE=/path/to/import.dmp。 |
| IGNORE | 指定是否忽略导入过程中遇到的错误。可以是Y或N。 |
| INDEXES | 指定是否导入索引。可以是Y或N。 |
| ROWS | 控制是否导入表中的行数据。可以是Y或N。 |
| DATA_ONLY | 指定只导入数据,不包括对象定义。可以是Y或N。 |
| IGNORECASE | 指定导入时是否忽略大小写。可以是Y或N。 |
| FULL | 指定导入前先删除现有对象。可以是Y或N。 |
| LOG | 指定导入操作的日志文件路径和名称。例如,LOG=/path/to/import.log。 |
| BUFFER | 指定读取导入文件时的缓冲区大小。 |
| REMAP_SCHEMA | 指定要将导入的对象映射到的新模式名。 |
| REMAP_TABLESPACE | 指定要将导入的表空间映射到的新表空间名。 |
| TABLES | 指定要导入的特定表。举例:IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N(or TABLES=(T1:P1,T1:P2) 表分区可用) |
- 命令格式:
imp 用户名/密码@数据库实例 FILE=导入文件的路径.dmp FROMUSER=源用户名 TOUSER=目标用户名
- 命令示例:
--windows环境下
imp username/password@SERVICENAME:1521 file=e:\temp.dmp rows=y
log=E:/test/dmp/kf_workflow_0512.log full = y;
-linux环境路径进行替换
b. impbp
可通过 impbp help=y 命令查询相关参数
- impbp常用参数说明,可以根据需要指定不同的参数来控制导入的方式和内容。
| 参数 | 使用说明 |
|---|---|
| ATTACH | 指定是否附加到正在运行的 impdp 作业。 |
| DIRECTORY | 指定导入和导出文件所在的目录对象。 |
| DUMPFILE | 指定要导入的数据泵文件名。 |
| REMAP_DATAFILE | 指定要将源数据文件映射到的目标数据文件。 |
| REMAP_SCHEMA | 指定要将源模式映射到的目标模式。 |
| REMAP_TABLESPACE | 指定要将源表空间映射到的目标表空间。 |
| TABLE_EXISTS_ACTION | 对于已存在的表,指定要采取的操作(SKIP、APPEND、TRUNCATE、REPLACE)。 |
| TRANSFORM | 指定要应用的数据转换选项。 |
| CONTENT | 指定要导入的对象类型(ALL、DATA_ONLY、METADATA_ONLY)。 |
| PARALLEL | 指定并行执行导入作业的程度。 |
| LOGFILE | 指定导入操作的日志文件名。 |
| INCLUDE/EXCLUDE | 指定要导入或排除的对象。 |
| QUERY | 指定导入时使用的查询条件。For example, QUERY=employees:“WHERE department_id > 10”. |
- 命令格式:
--命令参考
impdp 用户名/密码@数据库实例 DIRECTORY=目录名称 DUMPFILE=导入文件的名称.dmp REMAP_SCHEMA=源用户名:目标用户名
--举例
impdp user/password@SID DIRECTORY=DMPDATA DUMPFILE=fileName.dmp remap_tablespace=um_dev:um remap_schema=u_um_dev:u_um
参数说明:
- user/password@SID 用户名/用户密码@数据库实例;
- directory=dmpdata 导入的目录,DMPDATA为数据库虚拟路径(
参考目录三中的目录映射),即导入dmpdata下的文件也就是’/data/u01/dmpdata/'; - dumpfile=filename.dmp 导入的文件名,结合上面的 directory=dmpdata 就将’/data/u01/dmpdata/filename.dmp’;导入目标服务器(需要注意大小写);
- remap_tablespace=um_dev:um----->um_dev:导出表空间 ,um:导入表空间;
- remap_schema=u_um_dev:u_um ----> u_um_dev:导出用户 u_um:导入用户。
- 命令示例:
impdp kf_gs_workflow_0604/a@gfmisdev directory='DUMP_DIR' DUMPFILE='GSU_WORKFLOW_20240604.dmp' LOGFILE='GSU_WORKFLOW_20240604.log' REMAP_SCHEMA=GSU_WORKFLOW:kf_gs_workflow_0604 REMAP_TABLESPACE=GRP:USERS
3.exp/expdp对比及示例

a. exp
可通过 exp help=y 命令查询相关参数
- imp常用参数说明,可以根据需要指定不同的参数来控制导入的方式和内容。
| 参数 | 使用说明 |
|---|---|
| TABLES | 指定要导出的表格。例如,TABLES=table1,table2。 |
| FILE | 指定导出文件的路径和名称。例如,FILE=/path/to/export.dmp。 |
| LOG | 指定导出过程的日志文件路径和名称。例如,LOG=/path/to/export.log。 |
| QUERY | 指定要导出数据的查询条件。例如,QUERY=“ SELECT * FROM TABLE WHERE column_name=‘value’”。 |
| ROWS | 控制是否导入表中的行数据。可以是Y或N。 |
| STATISTICS | 指定是否导出统计信息。可以是ALL、ESTIMATE或NONE。 |
| GRANTS | 指定是否导出对象的授权信息。可以是Y、N或FULL。 |
| CONSISTENT | 指定是否导出一致性视图。可以是Y或N。 |
| INDEXES | 指定是否导出索引。可以是Y或N。 |
| COMPRESS | 指定是否压缩导出文件。可以是Y或N。 |
- 命令格式:
exp username/password@[database] FILE=[导出文件路径] TABLES=[要导出的表名]
- 命令示例:
--完全导出:
exp user/password@SID file=E:/test/dmp/kf_workflow_0512.dmp full=y--导出A、B表
exp user/password@SID file= E:/test/dmp/kf_workflow_0512.dmp tables=(A,B)
b.expdp
可通过 expdp help=y 命令查询相关参数
- imp常用参数说明,可以根据需要指定不同的参数来控制导入的方式和内容。
| 参数 | 使用说明 |
|---|---|
| SCHEMAS | 指定要导出的模式名。例如,SCHEMAS=schema1,schema2。 |
| INCLUDE | 指定要包括的对象类型。例如,INCLUDE=TABLE,VIEW将只导出表和视图。 |
| EXCLUDE | 指定要排除的对象类型。例如,EXCLUDE=INDEX将排除索引的导出。 |
| DIRECTORY | 指定导出文件的目录对象。例如,DIRECTORY=datapump_dir。 |
| DUMPFILE | 指定导出文件的名称。例如,DUMPFILE=export.dmp。 |
| LOGFILE | 指定导出操作的日志文件名称。例如,LOGFILE=export.log。 |
| PARALLEL | 指定并行导出的进程数。 |
| DIRECTORY | 指定导出文件的目录对象。例如,DIRECTORY=datapump_dir。 |
| COMPRESSION | 指定导出文件是否压缩。可以是ALL、DATA_ONLY、METADATA_ONLY或NONE。 |
| CONTENT | 指定导出内容。可以是ALL、DATA_ONLY、METADATA_ONLY或METADATA_ONLY_EXCLUDING_DATA。 |
| QUERY | 指定导出的数据查询条件。例如,QUERY=“WHERE column_name=‘value’”。 |
| FILESIZE | 指定导出文件的最大文件大小。 |
| JOB_NAME | 指定导出作业的名称。 |
| VERSION | 给定系统版本号的对象。例如,VERSION=SCN,SCN为版本号。 |
- 命令格式:
expdp 用户名/密码@数据库实例 DIRECTORY=目录名称 DUMPFILE=导出文件名.dmp EXCLUDE=TABLE:"IN ('table1','table2')" INCLUDE=TABLE:"IN ('EMPLOYEES', 'DEPARTMENTS')" FULL=Y
- 命令示例:
--按用户导
expdp user/password@SID schemas=u_mom_um dumpfile=expdp.dmp directory=dmp logfile=expdlog.log;--按表名导
expdp user/password@SID tables=test1,test2 dumpfile=expdp.dmp directory=dmp logfile=expdlog.log;--按查询条件导
expdp user/password@SID directory=dmp dumpfile=expdp.dmp Tables=test query='WHERE id<20' logfile=expdlog.log;--按表空间导
expdp user/password@SID directory=dmp dumpfile=expdp.dmp TABLESPACES={#表空间1},{#表空间2} logfile=expdlog.log;--导整个库
expdp user/password@SID directory=dmp dumpfile=expdp.dmp FULL=y logfile=expdlog.log;
- 具体命令示例:
--按照表空间导
expdp user/password@SID directory=DMPDATA dumpfile=tbs2022.dmp TABLESPACES=tbs logfile=expdlog.log;--用EXCLUDE、INCLUDE时,对应的符号需要进行转译
expdp GSU_ELEMENT/yth2023 schemas=GSU_ELEMENT dumpfile=GSU_ELEMENT_20240604.dmp EXCLUDE=TABLE:\"IN\(\'GFM_TB_RESULT\',\'GAP_PAYEE_ACCOUNT\'\)\" directory=GSZX logfile=GSU_ELEMENT_20240604.log
3.其他事项
- 在执行导入导出时需要进入oracle去执行。
--linux
su oracle ;--到这就可执行导入导出
sqlplus / as sysdba;--windows:
win + r,cmd,enter; --到这可执行导入导出
sqlplus 用户名/口令@数据库名 as sysdba;
- 在执行导入、导出的命令时,可通过nohup来执行,nohup是一个在Unix和类Unix操作系统上用来忽略HUP(挂起)信号并运行命令的实用程序。通过使用nohup,您可以使命令在后台运行,即使当前Shell终端窗口关闭,也能继续运行。
- 使用exp 导出文件需要使用imp导入,数据泵类型需要一致。
- 用
EXCLUDE、INCLUDE时,对应的符号需要进行转译;
三、执行导入导出前置条件
如果数据库用户已经存在,并有相关目录跳过此步骤。
1.创建角色并授权
--创建角色
create user orcl identified by orclorcl;--授权
grant dba ,connect ,resource ,select any table,create view to orcl;--查看用户创建情况
select * from all_users;
2.创建目录映射
CREATE DIRECTORY my_dir AS '/path/to/directory';
- 查询现有目录是否满足条件
select * from DBA_DIRECTORIES;
- 创建文件夹
--linux
mkdir /data/u01/dmpdata--windows下自行创建文件,记下目录
- 文件夹创建后给oracle用户授权
chown -R oracle /data/u01/dmpdata
- 数据库里执行SQL创建导入/导出目录(目录映射)
--目录对象在数据库中注册,并映射到实际物理目录的路径。
create or replace directory DMPDATA as '/data/u01/dmpdata';
- 为建立的目录赋权限,须要以其余用户运行,建议在sys用户下执行
grant read,write on directory DMPDATA to {#用户名};
相关文章:
【Oracle】Oracle导入导出dmp文件
文章目录 前言一、什么是dmp?二、imp/impdp、exp/expdp对比及示例1.区别2.imp/impdp对比及示例a. impb. impbp 3.exp/expdp对比及示例a. expb.expdp 3.其他事项 三、执行导入导出前置条件1.创建角色并授权2.创建目录映射 前言 在工作中,经常会遇到需要备…...
渗透测试模拟实战-tomexam网络考试系统
渗透测试,也称为“pentest”或“道德黑客”,是一种模拟攻击的网络安全评估方法,旨在识别和利用系统中的安全漏洞。这种测试通常由专业的安全专家执行,他们使用各种技术和工具来尝试突破系统的防御,如网络、应用程序、主…...
“神经网络之父”和“深度学习鼻祖”Geoffrey Hinton
“神经网络之父”和“深度学习鼻祖”Geoffrey Hinton在神经网络领域数十年如一日的研究,对深度学习的推动和贡献显著。 一、早期贡献与突破 反向传播算法的引入:Hinton是将反向传播(Backpropagation)算法引入多层神经网络训练的…...
[消息队列 Kafka] Kafka 架构组件及其特性(一)
工作中的消息队列用的是Kafka,一直没有系统的了解,这边集中整理一下。 目录 Kafka主要组件有十个部分。 1.Broker(服务器) 2.Record(消息) 3.Producer(生产者) 4.Consumer&…...
【Flutter 面试题】 JIT 与 AOT分别是什么?
【Flutter 面试题】 JIT 与 AOT分别是什么? 文章目录 写在前面口述回答写在前面 🙋 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主,51CTO专家博主。2023博客之星TOP153。 👏🏻 正在学 Flutter 的同学,你好! 😊 Flutter 面试宝典(…...
QT获取最小化,最大化,关闭窗口事件
QT获取最小化,最大化,关闭窗口事件 主程序头文件: 实现: changeEvent,状态改变事件 closeEvent触发点击窗口关闭按钮事件 其代码它参考: /*重写该函数*/ void MainWindow::changeEvent(QEvent *event) {…...
Oracle作业调度器Job Scheduler
Oracle数据库调度器 (Oracle Database Scheduler) 在数据库管理系统中,数据库调度器负责调度和执行数据库中的存储过程、触发器、事件等。它可以确保这些操作在正确的时间和条件下得到执行,以满足业务需求。 1、授权用户权限 -- 创建目录对象 tmp_dir…...
Vue 组件之间的通信
在 Vue.js 中,组件是构建应用程序的基本单位。然而,当你的应用程序变得复杂时,组件之间的通信变得至关重要。本文将介绍几种 Vue 组件之间通信的方式,帮助你更好地管理和组织代码。 父子组件通信 父组件可以通过 props 向子组件传…...
Elementary OS 7.1简单桌面调整
Elementary OS的Pantheon桌面环境提供了一种非常独特和直观的用户体验。默认情况下,Pantheon桌面并没有提供传统的窗口最小化、最大化按钮。但是可以通过安装和使用特定的工具来调整和自定义这些设置。 可以通过以下步骤来启用窗口的最小化和最大化按钮:…...
【C++ | 析构函数】类的析构函数详解
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰:2024-06-06 1…...
ceph radosgw 原有zone placement信息丢失数据恢复
概述 近期遇到一个故障环境,因为某些原因,导致集群原有zone、zonegroup等信息丢失(osd,pool等状态均健康)。原有桶和数据无法访问,经过一些列fix后修复, 记录过程 恢复realm和pool相关信息 重…...
【动手学深度学习】残差网络(ResNet)的研究详情
目录 🌊1. 研究目的 🌊2. 研究准备 🌊3. 研究内容 🌍3.1 残差网络 🌍3.2 练习 🌊4. 研究体会 🌊1. 研究目的 了解残差网络(ResNet)的原理和架构;探究残…...
freertos初体验 - 在stm32上移植
1. 说明 freertos内核 非常精简,代码量也很少,官方也针对主流的编译器和内核准备好了移植文件,所以 freertos 的移植是非常简单的,很多工具(例如CubeMX)点点鼠标就可以生成一个 freertos 的工程࿰…...
ubuntu使用 .deb 文件安装VScode
使用 .deb 文件安装 下载 VSCode 的 .deb 文件: wget -q https://go.microsoft.com/fwlink/?LinkID760868 -O vscode.deb使用 dpkg 安装: sudo dpkg -i vscode.deb如果有依赖项问题,使用以下命令修复: sudo apt-get install -f...
9.1.1 简述目标检测领域中的单阶段模型和两阶段模型的性能差异及其原因
9.1目标检测 场景描述 目标检测(Object Detection)任务是计算机视觉中极为重要的基础问题,也是解决实例分割(Instance Segmentation)、场景理解(Scene Understanding)、目标跟踪(Ob…...
系统化自学Python的实用指南
目录 一、理解Python与设定目标 二、搭建学习环境与基础准备 三、入门学习阶段 四、中级进阶阶段 五、项目实践与持续深化 六、持续学习与拓展 一、理解Python与设定目标 Python概述:详细介绍Python的历史沿革、设计理念、主要特点(如易读、易维护…...
加密货币初创企业指南:如何寻找代币与市场的契合点
撰文:Mark Beylin,Boost VC 编译:Yangz,Techub News 原文来源:香港Web3媒体Techub News 在 Y Combinator 创始人 Paul Graham 《Be Good》一文中概述了初创企业如何找到产品与市场契合点的方法,即制造人…...
【十二】图解mybatis日志模块之设计模式
图解mybatis日志模块之设计模式 概述 最近经常在思考研发工程师初、中、高级工程师以及系统架构师各个级别的工程师有什么区别,随着年龄增加我们的技术级别也在提升,但是很多人到了高级别反而更加忧虑,因为it行业35岁年龄是个坎这是行业里的共…...
RainBond 制作应用并上架【以ElasticSearch为例】
文章目录 安装 ElasticSearch 集群第 1 步:添加组件第 2 步:查看组件第 3 步:访问组件制作 ElasticSearch 组件准备工作ElasticSearch 集群原理尝试 Helm 安装 ES 集群RainBond 制作 ES 思路源代码Dockerfiledocker-entrypoint.shelasticsearch.yml制作组件第 1 步:添加组件…...
JVM相关:Java内存区域
Java 虚拟机(JVM)在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。 Java运行时数据区域是指Java虚拟机(JVM)在执行Java程序时,为了管理内存而划分的几个不同作用域。这些区域各自承担特定的任务,…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
