expdp/impdp 数据泵导入导出

expdp/impdp 数据泵导入导出

原创 小关enter 发布于CSDN论坛。

分类专栏: oracle

本文链接:https://blog.csdn.net/gty931008/article/details/86160808

业务场景:

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

EXPDP数据导出

请自行修改目录路径和自定义的表名,否则出现错误很难查找~

一般expdp流程:

一、新建逻辑目录

最好以system等管理员创建逻辑目录,Oracle不会自动创建实际的物理目录“D:\oracleData”(务必手动创建此目录),仅仅是进行定义逻辑路径dump_dir;

忘记sys用户密码的可以去下如何修改sys用户密码;

建议使用pl、navicat等oracle操作工具来操作;

登陆后sql执行:

 
 
create directory mydata as ‘逻辑目录路径‘; 
例如: 
create directory mydata as ‘/data/oracle/oradata/mydata‘;

二、查看逻辑目录是否创建成功

执行sql:

 
sql>select * from dba_directories

三、用expdp导出数据

用法及解释:

 
expdp 用户名/密码@ip地址/实例  [属性]
 
ip地址不写默认就是本地

userid=test/test            --导出的用户,本地用户!!
directory=dmpfile          --导出的逻辑目录,一定要在oracle中创建完成的,并且给用户授权读写权限
dumpfile=xx.dmp      --导出的数据文件的名称,如果想在指定的位置的话可以写成dumpfile=/home/oracle/userxx.dmp
logfile=xx.log          --日志文件,如果不写这个参数的话默认名称就是export.log,可以在本地的文件夹中找到
schemas=userxx       --使用dblink导出的用户不是本地的用户,需要加上schema来确定导出的用户,类似于exp中的owner,但还有一定的区别
EXCLUDE=TABLE:"IN(‘T1‘,‘T2‘,‘T3‘)"     --exclude
可以指定不导出的东西,table,index等,后面加上不想导出的表名
network_link=db_local          --这个参数是使用的dblink来远程导出,需要指定dblink的名称

列出一些场景:

1)导出用户及其对象
expdp scott/[email protected] schemas=scott dumpfile=expdp.dmp directory=dump_dir
logfile=expdp.log;

2)导出指定表
expdp scott/[email protected] tables=emp,dept dumpfile=expdp.dmp directory=dump_dir
logfile=expdp.log;

3)按查询条件导
expdp scott/[email protected] directory=dump_dir dumpfile=expdp.dmp
tables=empquery=‘where deptno=20‘ logfile=expdp.log;

4)按表空间导
expdp system/[email protected] directory=dump_dir dumpfile=tablespace.dmp
tablespaces=temp,example logfile=expdp.log;

5)导整个数据库
expdp scott/[email protected]/orcl directory=dump_dir dumpfile=ly.dmp full=y
 logfile=expdp.log;

一般用的都是导出整个数据库,本人使用的代码:

 
//包含所有用户的表、视图、索引等
expdp JCPT/[email protected]/orcl directory=mydata dumpfile=ly.dmp full=y  logfile=expdp.log;
//指定用户的表、视图、索引等
expdp JCPT/[email protected]/orcl directory=mydata schemas=jcpt dumpfile=ly.dmp logfile=expdp.log;
 

导出完成后:逻辑目录生成了一个 dmp文件;

IMPDP数据导入

在正式导入数据前,要先确保要导入的用户已存在,如果没有存在,请先用下述命令进行新建用户

流程:

一、创建表空间

使用system登录oracle,执行sql

格式: create tablespace 表间名 datafile ‘数据文件名‘ size 表空间大小

 
create tablespace data_test datafile ‘e:\oracle\oradata\test\test.dbf‘ size 2000M;
                (*数据文件名 包含全路径, 表空间大小 2000M 表是 2000兆) 

二、创建用户并授权

格式: create user 用户名 identified by 密码 default tablespace 表空间表;

 
create user study identified by study default tablespace data_test;

(*我们创建一个用户名为 study,密码为 study, 表空间为 madate-这是在上一步建好的.)

授权给 用户 study     ,执行sql

 
#给用户逻辑目录读写权限
sql>grant read,write on directory mydata to study;
#给用户表空间权限
sql>grant dba,resource,unlimited tablespace to study;

三、impdp导入

命令在cmd或者控制台输入,不是sql语句

写法:

impdp 用户名/密码@ip地址/实例  [属性]

ip地址不写默认就是本地

注释:

1)导入用户(从用户scott导入到用户scott)
impdp scott/[email protected] directory=dump_dir dumpfile=expdp.dmp schemas=scott
logfile=impdp.log;

2)导入表(从scott用户中把表dept和emp导入到system用户中)
impdp system/[email protected] directory=dump_dir dumpfile=expdp.dmp
tables=scott.dept,scott.emp remap_schema=scott:system logfile=impdp.log
table_exists_action=replace (表空间已存在则替换);

3)导入表空间
impdp system/[email protected] directory=dump_dir dumpfile=tablespace.dmp
tablespaces=example logfile=impdp.log;

4)导入整个数据库
impdb system/[email protected] directory=dump_dir dumpfile=full.dmp full=y
logfile=impdp.log;

日常使用的:

 
把用户jcpt中所有的表导入到lyxt用户下
impdp lyxt/[email protected]/orcl directory=mydata dumpfile=LY.DMP   remap_schema=jcpt:lyxt logfile=ims20171122.log table_exists_action=replace

5)追加数据
impdp system/[email protected] directory=dump_dir dumpfile=expdp.dmp
schemas=systemtable_exists_action logfile=impdp.log;

以上是日常工作中实际工作中用到的,希望能够给你得到帮助。

原文地址:https://www.cnblogs.com/tan80000/p/12021731.html

时间: 2024-12-17 05:10:27

expdp/impdp 数据泵导入导出的相关文章

【Oracle】EXPDP和IMPDP数据泵进行导出导入的方法

一.expdp/impdp和exp/imp的区别 1.exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. 2.expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用. 3.imp只适用于exp导出的文件,不适用于expdp导出文件:impdp只适用于expdp导出的文件,而不适用于exp导出文件. 4.对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出. 二.expdp导出步骤 (1)创建逻辑

ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法

Oracle使用EXPDP和IMPDP数据泵进行导出导入的方法 使用expdp和impdp时应该注重的事项: 1.exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. 2.expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用. 3.imp只适用于exp导出的文件,不适用于expdp导出文件:impdp只适用于expdp导出的文件,而不适用于exp导出文件. 4.对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须

Oracle 12c pdb的数据泵导入导出

12c推出了可插拔数据库,在一个容器cdb中以多租户的形式同时存在多个数据库pdb.在为pdb做数据泵导入导出时和传统的数据库有少许不同.           1,需要为pdb添加tansnames           2,导入导出时需要在userid参数内指定其tansnames的值,比如 userid=user/[email protected]   数据泵导入导出例子 1.查看当前的SID,查看pdb并切换到容器数据库,这里的pluggable数据库是pdborcl [[email pro

Oracle 数据泵导入导出总结

Oracle 数据泵(IMPDP/EXPDP)导入导出总结 Oracle数据泵导入导出是日常工作中常用的基本技术之一,它相对传统的逻辑导入导出要高效,这种特性更适合数据库对象数量巨大的情形,因为我日常运维的数据库对象少则几千,多则几万甚至几十万,所以传统exp/imp就会非常耗时,而数据泵方式就因此脱引而出,下面就详细总结一下数据泵的使用方法,希望能给初学者带来帮助. 一.新建逻辑目录 最好以system等管理员创建逻辑目录,Oracle不会自动创建实际的物理目录“D:\oracleData”(

利用expdp/impdp数据泵对oracle进行数据迁移

按照惯例先报系统环境: 导出环境: 操作系统Release版本:CentOS 6.5 OS内核Kernel版本:2.6.32-431.el6.x86.64 Oracle版本信息: SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Rel

在linux环境上对oracle数据库的数据泵导入导出操作

需求:公司搭建的报表库环境数据来自于生产环境oracle数据,因此需要使用kettle将oracle数据每天定时导入到报表数据库中(本文不讨论如何用kettle导数据,不赘述),若要导数据我们需要一套完善的生产oracle数据库的表结构.同时环境搭建以及oracle数据库都在linux环境下部署,因此,需要在linux环境下使用数据泵技术将数据完成导入导出 以上为需求概述 具体实现(即:操作步骤): su - root --切换root用户(由于不知道oracle用户的密码使用root来登录or

6、数据泵导入导出操作

6.0.数据泵导入导出注意事项: 1.EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用: 2.数据泵的导出导入可以使用dba用户(管理所有的表空间),也可以使用普通用户(比如开发权限,只能管理自己的表空间), 但是普通用户需要授权转存储目录可读可写; 3.在下面的实验中使用的是dba用户进行操作: 6.1.登录到oracle实例: [[email protected] ~]$ echo $ORACLE_SID orcl [[email protecte

Oracle之数据泵导入/导出数据

以前习惯用imp/exp导入导出数据,现在我们来搞一把数据泵导入导出的方法.它比之于imp/exp的方式的优点自不必说---速度快! 但是很不幸,我在导出数据的时候报错了,我擦,这特么就尴尬了.于是,神技乍现,康哥就擅长解决问题有木有?呀?乍一看这报错也是没谁了,完全看不懂啊!别害怕,遇到这样的报错就是文件问题,与文件相关的要么权限要么路径,这里是指数据库内部不存在这个文件,但是我在Oracle用户下面创建了啊.没用的,你要在数据库内部创建哦,记住是内部.来,我们操作一把. 来吧朋友,开始我们的

oracle中使用impdp数据泵导入数据提示“ORA-31684:对象类型已经存在”错误的解决

转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/47448751 oracle中使用impdp数据泵导入数据时,假设导入之前已经创建了用户,会提示错误:"ORA-31684:对象类型已经存在".如: 事实上这个问题并不严重,能够先不创建用户,导入时指定一个超级用户导入: impdp system/123456@ORCL DIRECTORY=DUMP_EXP DUMPFILE=EXPDATA.DMP remap_sche