运维 —— expdp、impdp

article/2025/10/23 6:52:50

一、exp/imp与expdp/impdp

1)exp和imp是客户端工具程序,它们既可以在可以客户端使用,也可以在服务端使用。

2)expdp和impdp是服务端的工具程序,他们只能在ORACLE服务端使用, 不能在客户端使用。

3)字符集的问题到expdp/impdp数据泵已经消除,因为expdp/impdp真正的导出导入操作都是在数据库服务器上完成的

4)expdp/impdp工具需要提前创建一个路径,然后命令中加入参数directory。这个路径的创建原因是因为expdp/impdp是工作于服务器端,而这个路径就是对应的服务器端路径。

5)exp默认是传统路径,这种模式下,是用select来查询数据,然后写入buffer cache,在将这些数据写入evaluate buffer,最后传到export客户端,再写入dump文件。      

exp直接路径模式下,直接从硬盘读取数据,然后写入PGA,格式就是export的格式,不需要转换,数据再直接传到export客户端,写入dump文件。这种模式没有经过evaluation buffer,少了一个过程,导出速度提高也是很明显。

exp没有并行参数,要进行并行导出,可以写多条命令同时导出,这种方式可用于特定的数据迁移情况,按表或表空间进行快速数据迁移。  

expdp是Oracle 10g上推出的一种先进的数据导出方式,比exp有较大的性能提升,expdp可以看成是exp的升级版,相当于exp + direct mode + parallel。

二、操作

1、创建目录和引用目录

sys@ORCL> create or replace directory dmpdir as '/home/oracle';
Directory created.
sys@ORCL> col OWNER for a10
sys@ORCL> col DIRECTORY_NAME for a30
sys@ORCL> col DIRECTORY_PATH for a50
sys@ORCL> select * from dba_directories where directory_name = 'DMPDIR';

2、常规导入导出

共有参数为:目录,dump文件名,log文件名,含义明显,不再讲解,如:directory=DUMP_DIR  dumpfile=abc.dmp  logfile=abc.log

以下用...代替表示,如

expdp scott/tiger@db10g ...
impdp scott/tiger@db10g ...

1)按数据表

expdp scott/tiger@db10g tables=EMP,DEPT ...
impdp scott/tiger@db10g tables=EMP,DEPT ...

加参数TABLE_EXISTS_ACTION=APPEND可以将数据导入到已存在的表中

2)按用户

exp/imp中用owner,数据泵中用schema

expdp scott/tiger@db10g schemas=SCOTT ...
impdp scott/tiger@db10g schemas=SCOTT ...

3)按整个数据库

expdp system/password@db10g full=Y ...
impdp system/password@db10g full=Y ...

3、高级导入导出

1)include & exclude & parfile

用于指定导入导出对象。

expdp scott/tiger@db10g schemas=SCOTT include=TABLE:"IN ('EMP', 'DEPT')" ...
expdp scott/tiger@db10g schemas=SCOTT exclude=TABLE:"= 'BONUS'" ...

如果用命令行方式,应用转义字符 \

include=TABLE:\"IN (\'EMP\', \'DEPT\')\"

或者用parfile参数加*.par文件方式,就不需要用转义字符
expdp scott/tiger parfile=mypar.par

root> cat mypar.par
directory=data
logfile=t1.log
dumpfile=t1.dmp
full=yes
exclude=table:"IN('CUSTOMER','ORDOR)"
exclude=schema: "IN ('WMSYS', 'OUTLN')"

也因为如此,强烈推荐使用参数文件在parfile参数中。

Windows:

c:>  expdp scott/tiger exclude=TABLE:"IN (\'CUSTOMER\', \'ORDOR\')"

UNIX/Linux:

root>  expdp scott/tiger exclude=TABLE:\"IN (\'CUSTOMER\', \'ORDOR\')\"

2) like & in

用于指定导入导出对象。

INCLUDE=TABLE,VIEW,PACKAGE:"LIKE '%API'"

或者

INCLUDE=TABLE
INCLUDE=VIEW
INCLUDE=PACKAGE:"LIKE '%API'"

EXCLUDE=SCHEMA:"LIKE 'SYS%'"
EXCLUDE=SCHEMA:"IN ('OUTLN','SYSTEM','SYSMAN','FLOWS_FILES','APEX_030200','APEX_PUBLIC_USER','ANONYMOUS')"

3)表空间不同用户的数据导入导出

导出参数文件expdp.par

dumpfile=eSchemasXJ.dmp
logfile=eSchemasXJ.log
directory=dpdumpdir
schemas=xj

导出语句:expdp system/123456 parfile=expdp.par

导入用户已存在:

导入参数文件

dumpfile=eSchemasXJ.dmp
logfile=iSchemasXJ.log
directory=dpdumpdir
remap_schema=xj:xja

导入语句:impdp system/123456 parfile=impdp.par

数据导入成功,但将出现一个错误:

ORA-31684: 对象类型 USER:"XJA" 已存在。

导入用户不存在:

导入参数文件为:

dumpfile=eSchemasXJ.dmp
logfile=iSchemasXJ.log
directory=dpdumpdir
remap_schema=xj:xjb

导入成功,无错误。将创建xjb用户,且密码与xj相同。

4)表空间之间用户的数据导入导出(remap_schema与remap_tablespace同时都要有)

导出参数文件expdp.par

dumpfile=eSchemasXJ.dmp
logfile=eSchemasXJ.log
directory=dpdumpdir
schemas=xj  //xj用户下的数据

导出语句:expdp system/123456 parfile=expdp.par

导入用户已存在:

导入参数文件

dumpfile=eSchemasXJ.dmp
logfile=iSchemasXJ.log
directory=dpdumpdir
remap_schema=xj:yyu1 //已存在的用户
remap_tablespace=users:yyds

导入语句:impdp system/123456 parfile=impdp.par

数据导入成功,但将出现一个错误:

ORA-31684: 对象类型 USER:"YYU1" 已存在。

导入用户不存在:

导入参数文件为:

dumpfile=eSchemasXJ.dmp
logfile=iSchemasXJ.log
directory=dpdumpdir
remap_schema=xj:xjx //目标用户不能是xj,因为整个数据库中,用户名称具有唯一性
remap_tablespace=users:yyds

导入成功,无错误。将创建xjx用户,且密码与xj相同。

5)表空间的数据导入导出

导出参数文件

dumpfile=eTablespaceYyds.dmp
logfile=eTablespaceYyds.log
directory=dpdumpdir
tablespaces=yyds

导入表空间已存在:

导入参数文件

dumpfile=eTablespaceYyds.dmp
logfile=iTablespaceYyds.log
directory=dpdumpdir
tablespaces=yyds //此句要与不要效果一样,提示表什么的已存在

以上是导入yyds。如果已创建了表空间zgms,则以下命令将报错,因为用户已存在

dumpfile=eTablespaceYyds.dmp
logfile=iTablespaceYyds.log
directory=dpdumpdir
remap_tablespace=yyds:zgmis

改为加上remap_schema=xx:xxx ?用户很多怎么搞?

导入表空间不存在:

导入参数文件

dumpfile=eTablespaceYyds.dmp
logfile=iTablespaceYyds.log
directory=dpdumpdir
tablespaces=newtb

报错,导入失败。

6)全库数据导入导出

导出参数文件

dumpfile=eTablespaceYyds.dmp
logfile=eTablespaceYyds.log
directory=dpdumpdir
full=yes
parallel= 4

导入参数

dumpfile=eTablespaceYyds.dmp
logfile=iTablespaceYyds.log
directory=dpdumpdir
full=yes
导入前,原数据库不能有表空间,数据文件。?


http://chatgpt.dhexx.cn/article/XL32Cs84.shtml

相关文章

expdp / impdp 用法详解

一、注意事项: EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。 EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。 IMP只适用于EXP导出的文件,不适…

expdp/impdp 数据泵导入导出

业务场景: 在工作中,涉及到oracle数据库迁移,使用navicat等其他工具 容易报错,一系列问题很麻烦,今天记录一下操作流程及个人理解(文章参考了很多文档和博客); EXPDP数据导出 请自…

rest_framework--过滤器filters--搜索

rest_framework–过滤器filters–搜索 view from rest_framework.pagination import PageNumberPagination from rest_framework import mixins from rest_framework import viewsets from rest_framework import filtersfrom .models import Goods from .serializers import G…

gateway整合filters

Unable to find GatewayFilterFactory with name AddRequestParamter 首先确定你要做的是用nacos整合gateway,然后使用gateway配置filters对请求进行修改。 一、首先在gateway微服务的application.yml或者bootstrap.yml文件进行filter的配置 // A code block ser…

php apply filters,WordPress学习——apply_filters()详解

前两天学习了 add_filters() 函数,详见>>> WordPress学习——add_filter()详解 ,今天趁热打铁再来学习下它的使用。一般情况下 add_filters() 有两种方式触发,一种是当程序运行到特定时候 WordPress 程序会判断用户是否对某些参数做了新的定义,如果有则优先使用用…

filters过滤器

这是通过过滤器写的一个只显示10个字的效果图。 1):什么时候用到过滤器? 绑定一些复杂数据类型的时候用到过滤器 2):以下两种方式定义过滤器: 第一种:Vue.filter()定义全局过滤器&#xff0…

vue filters的使用

filters 过滤器:「Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示&…

【前端】Vue---过滤器filters详解

一、认识过滤器: 格式化数据的一个工具 过滤器的作用:用于文本格式化,仅仅作为格式化操作,不做复杂的业务处理过滤器的使用方式:通过管道符号(|)来使用过滤器的使用位置:mustache插值和v-bing的表达式 二、过滤器的使用 //如何使用使用过滤器?我们用一个叫做管道…

Fiddler工具 — Fiddler过滤器(Filters)详解

1、Filters介绍 Filters:过滤器,帮助我们过滤请求。 如果需要过滤掉与测试项目无关的抓包请求,更加精准的展现抓到的请求,而不是杂乱的一堆,那功能强大的 Filters 过滤器能帮到你。 总结:Filters过滤器的…

Vue项目中过滤器(filters)的用法

过滤器使用场景 在调取接口的返回数据的时候,我们经常能够得到各种Number类型的数据。 这种格式的数据,很多时候都是表明对应的类型。 如果直接返回到页面上展示,对于操作人员来讲,没有任何意义。 所以,一般的情况…

vue初学篇----过滤器(filters)

过滤器使用&#xff0c;直接上代码 <template><div class"filters"><h1 v-text"filtersTitle"></h1><input v-model"filtersText"/><div>{{filtersText | filtersTextChange}}</div></div> <…

mysql删掉数据库失败_如何删除MySQL数据库?

mysql删掉数据库失败 MySQL is a very popular opensource database it is used by a lot of different types and size companies. In this post, we will look at how to drop or delete MySQL databases? MySQL是一种非常流行的开源数据库,许多类型和规模的公司都在使用它…

数据库如何删除数据

1、drop (删除表)&#xff1a;删除内容和定义&#xff0c;释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表。 drop语句将删除表的结构被依赖的约束&#xff08;constrain),触发器&#xff08;trigger)索引&#xff08;index);依赖于该表的存储过程…

Mongo删除数据库/集合

Mongo 删除数据库/集合 1.使用mongo 连接数据库 2.show dbs 查看所有的数据库 3.删除mongo数据库 1.先切换到mongo数据库 use mongo 2.执行 db.dropDatabase()命令 结果:{ "dropped" : "mongo", "ok" : 1 } 3.执行show dbs 发现mongo库已被删…

mysql 如何删除数据库中所有的表

方法1&#xff1a; SELECT concat(DROP TABLE IF EXISTS , table_name, ;) FROM information_schema.tables WHERE table_schema mydb;mydb换成你想删除的数据库的名字 这样可以生成一个批量处理的sql语句&#xff0c;你需要再运行一次这个结果集 就可以删除所有的表而不删除…

Oracle数据库----删除数据库

一、使用DBCA删除数据库 1、单击“开始”→“Oracle_OraDB12Home1”→“Database Configuration Assistant”&#xff0c;进入删除步骤的第一步&#xff0c;选择“删除数据库”。 2、单击“下一步”按钮&#xff0c;如图所示。在数据库列表中选择需要删除的数据&#xff0c;例…

PostgreSql强制删除数据库的操作

记得先断开数据库 先执行这个SQL语句 SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE datname你的数据库的名字 AND pid<>pg_backend_pid();再执行 DROP DATABASE 你的数据库的名字;

MySQL删除数据库的命令_删除数据库的命令是什么?

删除数据库的命令是“DELETE DATA”,具体格式为“DROP DATABASE [IF EXISTS] 数据库名;”,可以删除数据库中的所有表格并同时删除数据库。如果要使用“DROP DATABASE”,需要获得数据库DROP权限。 当数据库不再使用时应该将其删除,以确保数据库存储空间中存放的是有效数据。…

MySQL 删除数据库

使用普通用户登陆 MySQL 服务器&#xff0c;你可能需要特定的权限来创建或者删除 MySQL 数据库&#xff0c;所以我们这边使用 root 用户登录&#xff0c;root 用户拥有最高权限。 当数据库不再使用时应该将其删除&#xff0c;以确保数据库存储空间中存放的是有效数据。删除数据…

删除数据库的外键

注意&#xff1a; 删除外键的表名是添加外键的 “表1名”&#xff1b;删除外键的表的外键名与添加外键的外键名在这里是不同的&#xff0c;删除使用的外键名是上图所示的黄框中的 text1_ibfk_1 这个字段&#xff1b; 也可以使用命令&#xff1a;SHOW CREATE TABLE 表名&#xf…