Oracle 关于expdp和impdp的应用实践
现在有一个场景需求,需要把在一台服务器上某个用户的对象全部迁移到另一台服务器。有以下几个情况:
1、原用户下的表分属于不同的表空间(由于维护人员在过程中修改过用户的默认表空间)
2、原用户的数据库量过大,导出慢。
3、迁出、迁入的oracle版本为11g
针对以上情况,迁移方法步骤如下:
1、由于用户下的数据库过大,故建议使用expdp方式来进行导出,需要先去建立一个DIRECTORY,用于放置导出的文件位置
2、由于是要导出某个用户下的全部对象,语句写法参考如下:
expdp PNC_GAS/PNC_GAS@ORCL schemas=PNC_GAS dumpfile=ncgas20180116.dmp DIRECTORY=dbbackup
3、由于被导出的用户下的表可能分属于不同表空间,故需要先查询原用户的表到底分属哪些表空间,查询语法如下:
select distinct tablespace_name 所使用表空间 from user_tables;
需要注意的是,以上语句是需要先登录到原用户后再去执行命令查询
4、然后在被迁入的服务器上建立一个新用户,建立一个新的表空间并指定为新用户的默认表空间(这里新建的用户名可以和原用户保持一致)
5、新定义的表空间需要注意被导入的数据占据的空间大小,最好留足足够空间。以下命令为新建一个最大为32G,当数据增加时默认以10m的大小扩张
CREATE TABLESPACE GAS DATAFILE
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\GAS.DBF' SIZE 32768M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;
建议使用toad for oracle工具去建用户和表空间,可视化操作很方便
6、建立完新用户和新表空间后,需要执行导入命令。以下命令支持将同一个用户不同表空间的数据导入至同一用户的同一表空间
IMPDP GAS/GAS@ORCL DIRECTORY=dbbackup
schemas=GAS dumpfile=YAGAS20180116.dmp
REMAP_TABLESPACE=USERS:YA_GAS_WEB
REMAP_TABLESPACE=SYSTEM:YA_GAS_WEB
REMAP_TABLESPACE=GAS:YA_GAS_WEB
REMAP_TABLESPACE=YAN_GAS:YA_GAS_WEB
以上命令把原用户下4个表空间下的对象全部导入至新用户的同一表空间下
7、最后,需要验证新用户下的这个表空间下的表及数量是否与原用户下不同表空间的表及数量和相同。查询各个表空间的表语句如下:
select table_name 表名 ,tablespace_name 所使用表空间 from user_tables where tablespace_name='您要查询的表空间名'
需要注意的是:该命令也是在登录了所要查询的用户之后去执行的。查询的是当前登录用户的某个表空间下的表信息
我在经历了以上步骤后,验证了新旧用户及表空间下的表及其他对象,发现数据未出现丢失,经实际验证以上步骤操作有效!
补充:以上步骤是基于对数据导出及导入的理解探索式得到结果,过程中遇到了一些错误,在这里做下分享:
1、导入命令时,默认导入表的表空间大小不足,会报以下错误,当把表空间改大以后命令会继续执行起走。
以下错误是我在没有指定命名空间的情况下出现的,可参考语句:
expdp PNC_GAS/PNC_GAS@ORCL schemas=PNC_GAS dumpfile=ncgas20180116.dmp DIRECTORY=dbbackup

2、expd命令默认会把原用户与新用户相同表空间的对象导入过去:意思是在不特殊指定表空间情况下,参考以下语句
IMPDP YA_ZC/ya_zc@ORCL DIRECTORY=dbbackup schemas=YA_ZC dumpfile=yazc201801162144.dmp REMAP_TABLESPACE=GAS:YAN_GAS
该语句把原用户表空间为GAS下的对象迁移到新用户的YAN_GAS表空间下;
该语句同时会把原用户本身在表空间名为YAN_GAS下的对象自动导入到新用户下的YAN_GAS表空间中;执行了以上命令后,再去执行以下命令
IMPDP YA_ZC/ya_zc@ORCL DIRECTORY=dbbackup schemas=YA_ZC dumpfile=yazc201801162144.dmp REMAP_TABLESPACE=YAN_GAS:YAN_GAS
会出现以下截图的警告:

这就是因为上一个命令已经把原表空间YAN_GAS下的对象已迁移到了新表空间YAN_GAS之下了。
参考网站:Oracle expdp/impdp导出导入命令及数据库备份
Oracle 关于expdp和impdp的应用实践的更多相关文章
- ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法
ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法 (2010-05-28 12:54:34) http://blog.sina.com.cn/s/blog_67d41beb0100ixn ...
- (转)oracle使用expdp、impdp和exp、imp导入导出表及表结构
使用expdp.impdp和exp.imp时应该注重的事项: 1.exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. 2.expdp和impdp是服务端的工具程序,他们只能在 ...
- 【Oracle】EXPDP和IMPDP数据泵进行导出导入的方法
一.expdp/impdp和exp/imp 客户端工具 1.exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. 服务端工具 2.expdp和impdp是服务端的工具程序,他们 ...
- oracle导出expdp导入impdp
conn sys/password as sysdba;创建用户test1CREATE USER test1 IDENTIFIED BY "pass1";GRANT CONNECT ...
- 利用Oracle自带的impdp和expdp进行简单备份
目前有个这样的需求,每天晚上23点将生产库的数据备份到备份机器上,第二天备份机器的数据库可以直接使用,数据是昨天生产库的数据.(生产数据目前不多,全部数据不超过3000w条). 由于没有接触过高深的O ...
- [转]oracle pump expdp impdp使用
用expdp或impdp命令时, 可暂不指出用户名/密码@实例名 as 身份, 然后根据提示再输入, 如: expdp schemas=scott DIRECTORY=dpdata dum ...
- oracle expdp和impdp使用例子
情景: 由于生产需求,需要把rmtel用户的数据完全复制一份给rmtel_xzy,但排除rmtel用户 ('CAB_JJXPORT_TAB','T_SERVICEXX','TB_CROSSCONNEC ...
- 关于oracle数据库备份还原-impdp,expdp
初始化: -- 创建表空间 CREATE TABLESPACE 表空间名 DATAFILE '文件名.dat' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNL ...
- 使用数据泵expdp、impdp备份和还原oracle数据库
前面我已经整理过EXP 和 IMP备份和还原Oracle数据库的方法 今天我们只讲使用数据泵 expdp 和impdp的方法,有的同学会问他们有什么差别呢? EXP和IMP是客户端工具程序,它们既可以 ...
随机推荐
- Nginx 日志格式配置介绍
Nginx日志格式配置介绍 by:授客 QQ:1033553122 测试环境 CentOS 6.5-x86_64 nginx-1.10.0 配置例子 log_format main '$ ...
- drawable自定义字体颜色
一个很基础简单的问题,但是以前没用过,都是代码控制效果的,最近新的项目发现设置了color属性没效果,后来查了会资料才发现得单独设置,记录一下,虽然是小问题 上面的xml控制背景的变化,一开始我设置在 ...
- WPF:完美自定义MeaagseBox 动画 反弹 背景模糊 扁平化
不知道为什么,WPF的MeaageBox的风格还停留在Win 2000的风格... 很久前就想自己封装一个MessageBox出来,但是都只是简单的封装,不怎么具有通用性.这次终于搞完了. 使用方法和 ...
- Flutter 布局详解
本文主要介绍了Flutter布局相关的内容,对相关知识点进行了梳理,并从实际例子触发,进一步讲解该如何去进行布局. 1. 简介 在介绍Flutter布局之前,我们得先了解Flutter中的一些布局相关 ...
- python 饥饿的小易(网易笔试题)
本周早些时候,学弟给我发了一道网易的笔试题,饥饿的小易,感觉有点意思-分享给大家 题目描述: 小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃.最开始小易在一个初始位置x_0.对于小易所处的当前 ...
- python变量类型&字符串的内建函数使用
python常用数据类型: 数字(整数int,浮点数float) 字符串 元组 列表 字典 一.格式化输出 1.1第一种格式化输出 %d整数 %f浮点数(用.*表示精确到多少位小数) %s字符串 % ...
- $.ajax({})方法中的回调函数beforeSend,success,complete,error使用示例
在与后台交互的时候,经常使用到jquery的$.ajax()方法来请求数据.回调函数用的比较多的是success,但是beforeSend.complete.error函数也是很有用的.下面是使用例子 ...
- JAVA的三个版本EE,SE,ME
1998年 SUN发布三个不同版本JAVA,分别是: Java J2EE(Java Platform,Enterprise Edition) JAVA企业版,应用为开发和部署可移植.健壮.可伸缩且安全 ...
- shell 获取时间
获取当前时间 t=$(date +"%Y-%m-%d %H-%M-%S") echo $t 获取前一天的当前时间 time=$(date -d "-1 day" ...
- 《Java大学教程》—第6章 类和对象
6.2 对象:结构化编程-->数据-->封装(聚合,信息隐藏)-->对象(方法及其操作的数据都聚合在一个单元中,作为更高层的组织单元)-->类(创建对象的模板)6.3 类:* ...