现在有一个场景需求,需要把在一台服务器上某个用户的对象全部迁移到另一台服务器。有以下几个情况:

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的应用实践的更多相关文章

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

    ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法 (2010-05-28 12:54:34) http://blog.sina.com.cn/s/blog_67d41beb0100ixn ...

  2. (转)oracle使用expdp、impdp和exp、imp导入导出表及表结构

    使用expdp.impdp和exp.imp时应该注重的事项: 1.exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. 2.expdp和impdp是服务端的工具程序,他们只能在 ...

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

    一.expdp/impdp和exp/imp 客户端工具 1.exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. 服务端工具 2.expdp和impdp是服务端的工具程序,他们 ...

  4. oracle导出expdp导入impdp

    conn sys/password as sysdba;创建用户test1CREATE USER test1 IDENTIFIED BY "pass1";GRANT CONNECT ...

  5. 利用Oracle自带的impdp和expdp进行简单备份

    目前有个这样的需求,每天晚上23点将生产库的数据备份到备份机器上,第二天备份机器的数据库可以直接使用,数据是昨天生产库的数据.(生产数据目前不多,全部数据不超过3000w条). 由于没有接触过高深的O ...

  6. [转]oracle pump expdp impdp使用

    用expdp或impdp命令时, 可暂不指出用户名/密码@实例名 as 身份, 然后根据提示再输入,  如:     expdp schemas=scott DIRECTORY=dpdata  dum ...

  7. oracle expdp和impdp使用例子

    情景: 由于生产需求,需要把rmtel用户的数据完全复制一份给rmtel_xzy,但排除rmtel用户 ('CAB_JJXPORT_TAB','T_SERVICEXX','TB_CROSSCONNEC ...

  8. 关于oracle数据库备份还原-impdp,expdp

    初始化: -- 创建表空间 CREATE TABLESPACE 表空间名 DATAFILE '文件名.dat' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNL ...

  9. 使用数据泵expdp、impdp备份和还原oracle数据库

    前面我已经整理过EXP 和 IMP备份和还原Oracle数据库的方法 今天我们只讲使用数据泵 expdp 和impdp的方法,有的同学会问他们有什么差别呢? EXP和IMP是客户端工具程序,它们既可以 ...

随机推荐

  1. Mybatis 同时传入多个参数和对象

    流程 1,mapper 接口文件使用 @param 注解(一个参数就不用使用注解,多个参数要么使用注解,要么使用数组的方式取值) 2,mapper xml 文件使用 mapper 接口文件传参 pub ...

  2. 13.Odoo产品分析 (二) – 商业板块(6) –采购(3)

    接上一篇  查看Odoo产品分析系列--目录 接上一篇Odoo产品分析 (二) – 商业板块(6) –采购(2) 7. 仓库 仓库是在安装采购管理模块时出现的菜单.用于管理工厂库存,包括已经在手的货物 ...

  3. android:Android开发不得不收藏的Utils

    AndroidUtils AndroidUtils Android开发不得不收藏的Utils 之前写这篇文章主要是项目应用到的Utils,发现已经有一个更全面的开源库总结,所以还是非常震惊可以总结的这 ...

  4. django rest framework 与 Vue 整合遇到的坑

    前提是已经有了Django项目与前端Vue打包好的dist文件 好,开始整合!!! 当然还是先设置Django的setting.py 1设置模板路径 2 设置静态文件路径 TEMPLATES = [ ...

  5. WPF控件库:图片按钮的封装

    需求:很多时候界面上的按钮都需要被贴上图片,一般来说: 1.按钮处于正常状态,按钮具有背景图A 2.鼠标移至按钮上方状态,按钮具有背景图B 3.鼠标点击按钮状态,按钮具有背景图C 4.按钮处于不可用状 ...

  6. Android Studio手动打包

    项目写完了,现在需要把应用上传到市场上面,那么怎么把项目打包成apk?(Android的可安装文件). 1. 创建签名文件 2. 填写好签名参数 3. 生成APK 注意:签名的密码和密匙的密码注意保管 ...

  7. AS插件-GsonFormat

    支持 field 类型的修改. 支持快捷键打开 GsonFormat ,默认为 option+s(mac), alt+s(win) 支持 field 名称的修改. 支持添加 field 前缀. 支持多 ...

  8. JSON Web Tokens简单学习

    JWT用于加密生成安全认证的令牌,存储登录验证成功的部分用户信息 一.安装JWT 二.加密 解密 代码 /*存储在加密字符串的信息*/ var payload = new Dictionary< ...

  9. centOS7docker安装oracle

    1.拉取oracle 11g 的镜像: 用root登陆服务器,输入下面的命令,拉取oracle 11g的镜像,有点大,6.8G多: docker pull registry.cn-hangzhou.a ...

  10. logstash关于date时间处理的几种方式总结

    1.第一种,直接在配置文件中自定义时间格式 这是tomcat配置文件中的一段日志时间配置,按照这样的配置,那么输出的日志是这样子的: 然后你继续在logstash中这样子配置 此时logstash就不 ...