某市人力资源和社会保障局属于政府机构,执行人力资源和社会保障的监督、管理、执行职能。其核心数据库系统经过多年使用运行,正面临着设备老旧、性能缓慢等突出问题。
为提高联网的实时业务交互和数据交换能力,为人社局的各个应用提供安全、可靠的网络环境,并使用和跟踪最新数据库技术,客户决定实现数据库升级的重大业务变更工作,经过多方评估,云和恩墨成为用户的服务供应商,为用户提供数据库升级迁移服务。
最终,通过精密规划、精确实施,云和恩墨为用户实现五小时零故障核心数据库Oracle 12.2大版本升级迁移,迁移总数据量达40T以上,并通过最佳实践确保了用户系统的稳定高效率运行!
面临挑战
在本项目实施之前,用户面临的挑战包括硬件老化、性能低下、故障频繁等:
客户迁移前,数据库系统的硬件为IBM 780服务器,已连续运行多年,在迁移前半年内,连续出现过多次硬件损坏,I/O也一直接近于满负荷状态,性能瓶颈突出;
客户的数据库软件为 Oracle 10g 版本,Oracle已停止对该版本的官方维护支持,对比当前的 12c 云数据库时代,客户版本明显滞后;
根据下图所示,大家可以看到,自2018年开始,事实上Oracle 18c 已经登上了舞台,属于Oracle 12c的时代已经加速到来。
新项目需要将数据库进行升级迁移,需要迁移数据总量超过 40 TB;且需要将数据库版本由 10g 升级至 Oracle 最新的数据库版本,Oracle 12.2。
海量数据跨越一个大版本的升级,再加上时间要求,对升级工作就带来了相当大的挑战。
客户场景和解决方案
用户的场景决定了迁移的方案和时间。对于本案例来说,这也是核心要素。
在硬件方面,主机、网络、存储等全部重新采购,主机仍然采用小型机,全面更换,这样就有了一套独立的新环境。
软件方面,新环境操作系统使用 AIX,同操作系统平台的迁移就简化了数据库的迁移工作。
数据迁移,可以通过搭建 DataGuard 同步到新服务器:
正式割接时,将数据库版本先由原来的10.2.0.4升到11.2.0.4,再由11.2.0.4升级为12.2,然后将非CDB的数据库转化CDB架构。
实施步骤
完善的实施步骤,严谨的测试过程,是项目成功的有力保障,为此云和恩墨经过详细的设计、测试验证、最终实施了成功的迁移过程,以下的实践步骤供大家参考:
1、迁移环境调研
数据库当前环境调研;数据库遗留问题汇总梳理以及新平台数据库的架构设计、版本选型、补丁实施以及调试等工作。
2、迁移计划及实施方案输出
根据前期数据库调研情况并结合客户实际的硬件条件现状,制定合理的迁移升级方案,并制定完善的回退方案,以确保整个核心系统的可用性。
3、测试环境搭建及测试
测试环境搭建,测试环境性能测试,Orion测试,SPA性能测试,迁移升级方案可行性验证。
4、正式环境搭建及验证测试
数据库功能测试,数据库压力测试,正式环境的迁移方案演练,以及配合应用进行业务应用的功能验证。
5、迁移实施和现场保障
完成客户核心生产库所有数据的迁移工作。派驻公司内ACE专家,OCM资深工程师,提供至少两人现场保障服务,解决处理突发故障,兜底保障数据安全以及应用的正常运行。
6、GoldenGate版本升级
现有GoldenGae版本不支持12C数据库,需做版本升级。7、Active DataGuard搭建
数据库迁移完成后,待核心生产库运行稳定后,协助搭建核心生产库的Active DataGuard。
8、质保服务
自项目实施之后,质保期三个月,为用户提供质量保障。
关键点分享
在这样一个大规模的数据库案例实施中,尤其是业内领先的新版本升级,不可避免会遇到一些已知和未知的问题,在实践中需要快速处理、规避,以实现实施控制。
在12.2的升级中,你可能遇到 ORA-01722 号错误,这是其中一个升级脚本遇到的:
这是一个已知问题,根据 Oracle Mos文档 Upgrade to 12.2 Fails with Error:”ORA-01722: Invalid number : NONUPGRADED_TABLEDATA” (文档 ID 2279497.1) 的描述,可以通过如下的方式来解决:
1 2 3 4 5 6 7 | set serveroutput on @?/rdbms/admin/catuptabdata.sql @?/rdbms/admin/utluptabdata.sql execute dbms_preup.run_fixup_and_report('INVALID_SYS_TABLEDATA'); execute dbms_preup.run_fixup_and_report('INVALID_USR_TABLEDATA'); set serveroutput off |
在执行 PDB 插入到 CDB 时,有一个重要的步骤: exec dbms_pdb.sync_pdb() ,这个步骤如果疏漏或出现错误会导致pdb的信息与cdb的信息不一致,数据库会将pdb置于受限模式 (“OPTION WARNING Database option mismatch: PDB installed version NULL” in PDB_PLUG_IN_VIOLATIONS (文档 ID 2020172.1),该文档中有详细的描述,大家可以参考。
相关阅读
数据驱动,成就未来,云和恩墨,不负所托!
推荐阅读
XTTS (Cross Platform Incremental Backup) 测试
云和恩墨
数据驱动,成就未来。整合业界顶尖的技术与合作伙伴资源,围绕数据及相关领域,提供解决方案和专业服务。
IT基础架构
专业服务:云化(分布式)数据中心解决方案
支撑软件:分布式存储软件
数据架构
Oracle DB2 MySQL NoSQL
专项服务:混合架构 / 安全 / 容灾 / 优化 / 整合升级迁移
运维服务:运维服务 | 云化运维
人才培养:个人教育培训 | 在线教育
支撑软件:自动化运维软件 | 数据库监控软件
应用架构
专业服务:中间件 | 数据建模与模型优化 | SQL审核与优化
支撑软件:应用开发质量管控平台
业务架构
数据治理 | 电子商务用户行业分析 | 数据资产运营