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 动静分离
Tomcat 能处理静态资源和动态资源,但是处理静态资源效率并不高,处于优化性能,提高访问效率,可以让 Tomcat 处理动态资源,让 Nginx 处理静态资源 1,配置虚拟主机 该配置的意思是:js ...
- Keystone, Start, Failed to Load Bson
If you have installed the Keystone.js, and properly installed mongodb, but when tried to start the k ...
- IIS做反向代理重定向到NodeJS服务器
1. 安装ARR 2. 建立虚拟目录并配置URL Rewrite 3. 启动ARR
- tornado 模板引擎
在tornado的模板引擎中,有两种方式,UImethod与UImodule 自定义方法 在模板中调用方法: tornado:与Django一样使用{{}},但是对于for循环之类,Django以{% ...
- 【redis专题(9)】事务
Redis支持简单的事务,所谓简单是因为其不支持回滚(回滚是用队列模仿的),与mysql有以下区别 rollback与discard的区别: 如果已经成功执行了2条语句, 第3条语句出错 Rollba ...
- java----八种排序算法
1.直接插入排序 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中. 将第一个数和第二个数排序,然后构成一个有序序列 将第三个数插入进去,构成一个新的有序序列. 对第四个数.第五个数……直 ...
- java质数判断
import java.util.Scanner; /** * Created by Admin on 2017/3/25. */ public class test01 { public stati ...
- c/c++ 广义表
广义表 列表里面有列表,比如(1,(2,(3,4)),5) 用链表可以实现 结果如图 guangyibiao.h #ifndef __GUANGYIBIAO__ #define __GUANGYIBI ...
- Windows Server 2016-配置Windows Defender防病毒排除项
Windows Server 2016 的计算机上的 Windows Defender 防病毒自动注册你在某些排除项,由你指定的服务器角色定义. 这些排除项不会显示在Windows 安全中心应用中所示 ...
- Shell编程基础知识(一)
一.基本的运行Linux程序的3种方法: (1) 使文件具有可执行权限,直接运行文件.eg: chmod a+x testfile.sh ./testfile.sh (2) 直接调用命令解释器来 ...