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

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. java调用matlab

    object result[]; result = pClass1.job_3in1(2, c, ws2, 1275, a, 0); string adg[]; adg = result[1].toS ...

  2. 导入MySQL数据库提示"Unknown character set: 'utf8mb4'"错误

      错误提示:导入MySQL数据库提示"Unknown character set: 'utf8mb4'"错误   分析: 看来是因为数据库版本的问题导致的,之前网站MYSQL5. ...

  3. Android为TV端助力 最详细的动画大全,包括如何在代码和在XML中使用

    一.动画类型 Android的animation由四种类型组成:alpha.scale.translate.rotate XML配置文件中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画 ...

  4. windows server 2008 r2安装windows media player

    1.打开“服务器管理器”: 2.依次单击“功能” →  “添加功能”: 3.勾选“桌面体验”和“优质Windows音频视频体验”: 4.单击“安装”按钮:安装完毕,根据提示重新启动计算机即可.

  5. 对display主要属性的探究,以及vertical-aligin

    display 首先要简单说明一下display的主要3个主要属性,分别为block,inline-block,inline,这里只提及主要,关于其他的inherit,none等可以自行了解 inli ...

  6. MySQL 博客文章目录(2017-02-18更新)

    1MySQL安装配置 Linux MySQL源码安装缺少ncurses-devel包 Linux平台卸载MySQL总结 Linux 卸载mysql-libs包出现错误 CentOS 7 安装MySQL ...

  7. [20190101]块内重整.txt

    [20190101]块内重整.txt --//我不知道用什么术语表达这样的情况,我仅仅一次开会对方这么讲,我现在也照用这个术语.--//当dml插入数据到数据块时,预留一定的空间(pctfree的百分 ...

  8. 穷举,迭代,while循环

    1. 2.大马驼2石粮食,中等马驼1石粮食,两头小马驼1石粮食,要用100匹马,驼100石粮食,该如何分配? 3. 4. 5. 6.

  9. 自动化测试基础篇--Selenium多窗口、句柄问题

    摘自https://www.cnblogs.com/sanzangTst/p/7680402.html 有时我们在打开浏览器浏览网页时,当点击网页上某些链接时,它不是直接在当前页面上跳转,而是重新打开 ...

  10. SpringBoot实现热部署(修改class不需要重启)

    热部署: devtools可以实现页面热部署(即页面修改后会立即生效, 这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实 ...