【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程序时,为了管理内存而划分的几个不同作用域。这些区域各自承担特定的任务,…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
