datapump跨平台升级迁移的总结

简介: 最近测试了使用datapump来迁移百G数据的场景,因为实际需要,需要把Unix下10gR2的库迁移到Linux下11gR2,所以这个过程相对来说牵制也较多。考虑了多种方案,最后权衡后决定使用datapump来迁移。
最近测试了使用datapump来迁移百G数据的场景,因为实际需要,需要把Unix下10gR2的库迁移到Linux下11gR2,所以这个过程相对来说牵制也较多。考虑了多种方案,最后权衡后决定使用datapump来迁移。
其实整个迁移的过程还算顺利,完整模拟了整个生产环境的迁移情况,datapump的全库导入还是比较方便省心,只要导出得当,导入基本不需要太多的检查选项,导入的过程中的可操作选项也非常有限。如果数据库里存在大量的结构信息,而且关系错综复杂,使用datapump还是比较通用快捷。
datapump对于中小型的迁移场景来说还是比较合适,里面的一个优势就是并行,但是实际中的并行情况粒度还不够细,
比如对于下面的这个表,尽管数据量还是比较大,但是导入的时候还是按照表为单位,无法在表级更细粒度做更多的工作。

Worker 10 Status:

  Process Name: DW09

  State: EXECUTING                     

  Object Schema: TEST

  Object Name: SWD_BACKPOINT_LOG

  Object Type: DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA

  Completed Objects: 1

  Completed Rows: 10,795,489

  Completed Bytes: 2,873,852,728

  Percent Done: 32

  Worker Parallelism: 1

当然数据量百G迁移还是很快到,使用datapump迁移时,首先会导入哪些结构型信息,然后导入数据,最后创建索引,大体的性能消耗点就在这三个方面。
对于迁移中存在的一些小问题也总结了一下。
1.首先就是归档的情况,在归档模式下,这个导入的过程是两份写数据,一份写入日志,一份写入数据文件,所以IO会有很大的压力。归档还是需要重点关注。

ORA-19815: WARNING: db_recovery_file_dest_size of 214748364800 bytes is 100.00% used, and has 0 remaining bytes available.

2.数据问题
如果导入的过程中出现了下面的报错信息,其实还是很无奈的。不过这类数据着实是少数,而且出现这个问题也是约束的校验方式不够严格导致。

ORA-12899: value too large for column DES (actual: 51, maximum: 50)

ORA-12899: value too large for column DES (actual: 53, maximum: 50)

ORA-12899: value too large for column DIST_SEX (actual: 3, maximum: 2)
如果数据量不大,也可以适当对字段进行扩展,当然是在业务允许范围内,或者由应用来评估是否需要这批超出限制的数据。
3.数据库日志中的警告
在数据导入的过程中,留意到数据库日志里面有如下的告警信息:

WARNING: Oracle executable binary mismatch detected.

 Binary of new process does not match binary which started instance

issue alter system set "_disable_image_check" = true to disable these messages


这个问题主要在数据库open时打patch有关,所以唯一能让我想起来的就是,前些天做orion测试的时候,因为配置的误导,自己relink了整个$ORACLE_HOME,所以对于这个问题的彻底解决还是可以重装数据库软件。
4.导入过程中的控制粒度不足
如果全库导入的过程中,没有太多的选项限制,就可能出现下面的警告信息

ORA-31684: Object type USER:"OUTLN" already exists

ORA-31684: Object type USER:"ANONYMOUS" already exists

ORA-31684: Object type USER:"OLAPSYS" already exists

ORA-31684: Object type USER:"SYSMAN" already exists

ORA-31684: Object type USER:"MDDATA" already exists

ORA-31684: Object type USER:"MGMT_VIEW" already exists

ORA-31684: Object type USER:"SCOTT" already exists

这种情况在绝大多数的情况下还是没有问题的,就怕这类的数据冲突,所以为了稳妥起见还是需要跳过这些本来数据库中就有的默认用户。如果查看导入的明细日志,其实整个过程都会检查然后忽略,其实我们可以更彻底的屏蔽这些不必要的变更。
在这个基础上,就是考虑更好的性能,更短的窗口时间,可以做一些对比测试来逐步完善,当然这种测试时间还是比较紧的,所以需要更多的预备工作,保证在生产迁移中能够平滑过渡。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
8月前
|
SQL 人工智能 Oracle
NineData支持全版本的企业级Oracle客户端,现已发布!
Oracle数据库是一款全球领先的关系型数据库管理系统,NineData发布对Oracle数据库的SQL开发支持。开发者可以使用NineData便捷查询云端、本地、多个版本的Oracle数据库。NineData在近期的迭代中提供了对Oracle数据库的支持。具有可视化工具、AI智能优化、SQL智能提示、企业协同等多种强大能力,并且无需安装,登录即可使用,同时在安全性上也为您提供了相当可靠的保障。
355 0
NineData支持全版本的企业级Oracle客户端,现已发布!
|
SQL 关系型数据库 Linux
信创迁移适配预研-达梦数据库DM8服务与客户端工具安装使用
信创迁移适配预研-达梦数据库DM8服务与客户端工具安装使用
381 0
信创迁移适配预研-达梦数据库DM8服务与客户端工具安装使用
|
Oracle 容灾 安全
实战篇:生产库升级,容灾库 Oracle DataGuard 如何升级?
实战篇:生产库升级,容灾库 Oracle DataGuard 如何升级?
实战篇:生产库升级,容灾库 Oracle DataGuard 如何升级?
|
SQL 关系型数据库 数据库
【DB吐槽大会】第63期 - PG 缺乏跨版本兼容性评估工具
大家好,这里是DB吐槽大会,第63期 - PG 缺乏跨版本兼容性评估工具
|
SQL 监控 Oracle
PostgreSQL Oracle 兼容性之 - performance insight - AWS performance insight 理念与实现解读 - 珍藏级
PostgreSQL , perf insight , 等待事件 , 采样 , 发现问题 , Oracle 兼容性
780 0
|
SQL 监控 数据可视化
解读PostgreSQL Oracle 兼容性之 - performance insight(性能洞察)
标签 PostgreSQL , perf insight , 等待事件 , 采样 , 发现问题 , Oracle 兼容性 背景 通常普通的监控会包括系统资源的监控: cpu io 内存 网络 等,但是仅凭资源的监控,当问题发生时,如何快速的定位到问题在哪里?需要更高级的监控: 更高级的监控方法通常是从数据库本身的
869 0
|
Oracle 关系型数据库 应用服务中间件
Oracle APEX 系列文章5:在阿里云上打造属于你自己的APEX完整开发环境 (进一步优化)
本文是钢哥的Oracle APEX系列文章中的第五篇,完整 Oracle APEX 系列文章如下: Oracle APEX 系列文章1:Oracle APEX, 让你秒变全栈开发的黑科技 Oracle APEX 系列文章2:在阿里云上打造属于你自己的APEX完整开发环境 (准备工作) Oracl.
1791 0