目录:
- 升级方案的选型
- 各个阶段主要任务
- 项目成功的关键因素
升级的过程中我们会经历这样一个过程:一开始,怀着美好的愿望,我们开始升级项目;但在实施过程中会碰到或多或少的问题,饱受挫折;在努力解决问题后,系统最终能够成功上线。
第一部 分升级方案的选型
随着oracle 数据库版本的更迭,提供了越来越多的升级、迁移方法。
10.2.0.5 ,11.1.0.7,11.2.0.2 或以上 能够直接升级到12.1.0.1/12.1.0.2 版本;
其它版本需要2次升级; 如: 10.2.0.3 -> 10.2.0.5 -> 12.1.0.2
12c 中引入新的升级前准备脚本,可生成检查、及修复的脚本。
MOS Note:884522.1
1.预检查preupgrd.sql
2.再执行preupgrade_fixups.sql
之前的catupgrd.sql 脚本将弃用, 通过指定“PARALLEL=NO” 仍然可以使用catupgrd.sql。
catctl.pl 并行调用拆分出的多个子脚本实现更快的升级,减少最高40%的停机时间。
如: 启动并行度为8的升级脚本。
下面,我们介绍各个升级方法:
1.跨字节序的迁移:
Oracle9i 开始 基本选项是 逻辑导出导入(exp/imp).
- 支持oracle5及以上版本
- 11g开始不支持exp(exp程序存在于oracle目录中),imp 依然支持
8TB 从9i 迁移升级到11g 需要超过24小时。
1.Oracle10g 开始 expdp/impdp 是更好的选项。
2.跨平台的可传输表空间(xTTS)
8T数据迁移升级需要8个小时(与exp/imp 相比时间缩短为1/3)。
12c 中Data pump 引入新特性:完整可传输导出/导入(Full Transportable Export/Import)
VIEWS_AS_TABLES : 指定导出view内容到表;
TRANSFORM : 可选择关闭归档,表压缩等
LOGTIME: 记载操作时间、状态到日志
下面我们来了解一下可传输表空间
Oracle8i 开始支持TTS (可传输表空间),10g开始支持XTTS (跨平台可传输表空间);
75TB 数据库从10g AIX 迁移升级到Oracle12c 耗时48小时,非常快。
XTTS (跨平台可传输表空间)需要使用RMAN 工具进行文件的转换,
支持的操作系统查询视图:V$TRANSPORTABLE_PLATFORM
TTS完成数据迁移后,还需要重建Meta信息(视图、同义词、触发器、角色等)
TTS 在以下场景,需要慎重考虑:
1.过多Views, synonyms, sequences 等对象;
2.表空间中对象过多,导致expdp/impdp 缓慢;
TTS痛点- 停机时间过长:
1.拷贝大量的数据;
2.跨平台转换过多的表空间;
新技术: rman 转换跨平台的增量备份可解决该问题:
当然该技术有版本要求:
– Oracle 11.2.0.3 for Exadata only – Linux x86-64 with Oracle 11.2.0.4 -- 我们有过正式案例,需要选择正确的 – all platforms starting with Oracle 12c
停机时间为最后一次的“增量备份及恢复”, 停机时间大大减少。
再看12c中引入的完整可传输导出/导入(Full Transportable Export/Import),使得迁移/升级更容易,更快,且更高效。
单个命令完成数据库的迁移:
1.跨平台(同时使用可传输表空间的机制和数据泵功能 )
2.支持12c多用户
3.源库11.2.0.3/4版本
4.Target 版本必须要12.1.0.1 及以上。
5.能够对所有需要的用户数据和元数据进行数据库迁移。
零停机升级方案
真实的零停机方案很难实现。
OGG 等复制技术能够在较短的时间内,完成升级。
OGG是付费软件;
Goldengate 12.1 支持 Oracle 11.1.0.6 及以上;
支持非Oracle数据库(DB2, Teradata ,Mysql,Sybase)
OGG 实现10TB 数据库 5分钟内的迁移。
流程:1. 抽取进程(源端): 捕捉提交的事务数据,并写入到trail文件
流程:2.通过Data pump 或TTS 搭建目标库
流程:3.投递进程(源端): 可选择压缩、加密的方式传输trail文件内容。
流程:4. 复制进程(目标端): 使用传输过来的Trail 文件,应用记录到目标数据库中。
各种升级方案对比: 根据不同的应用场景选择不同的技术方案。
第二部分 各阶段主要任务
需求分析:停机窗口,是否存在平台切换,应用有无重大变更,新老环境的物理距离,网络带宽
生产环境:数据量,数据增长情况,字符集,db_block_size,无效对象,组件状态
第三部分 项目成功的关键因素
项目成功的3个关键因素: 人、例会、协作
项目团队需要不同的角色,具备相应的技能。
定期组织例会,沟通项目进展、问题分析、后续改进措施。
Q & A
Q1:Oracle数据库迁移到mysql有现成的经验可以放分享吗?
A1:goldengate可以支持oracle到mysql的复制迁移。
Q2:ogg12c集成模式怎么保证事物的一致性?
A2:goldengate 源端 抽取进程按照事务 commit 的顺序来抽取数据,目标端也是按照该顺序进行执行,来保持一致性。
Q3:升级后的sql变化(执行计划,性能。。),在12c有没有新特性或好的建议?
A3:12c 在sql plan 这块是有新特性的。如: 自适应执行计划。但实际测试下来,该新特性在某些时候,反而会引起执行计划的变化。所以,测试阶段非常重要. SPA/ DB replay 依然是最佳的工具。
Q4:我在用的时候遇到了ora00001错误,当更新和插入一条数据的时候,以前的经典模式好像没发生过。
A4:集成抽取模式,oracle 数据库需要安装补丁。同时也建议使用最新版本,规避已知问题。 OGG出现问题,一般的解决时间较长,从我的个人经验来讲,升级到最新版本可以节省较多的解决问题时间。OGG 建议的补丁: Best Practices and Performance Tuning Recommendations for Oracle GoldenGate Integrated Replicat (Doc ID 1953623.1).pdf
Q5:如果需求没那么复杂,OGG 12比OGG 11好么?
A5:OGG 12c支持更多的异构数据库和大数据平台。也 支持ms sql server 2012/2014及mysql社区版;支持从ADG(Oracle Active Data Guard)进行数据捕获。增强的管理和监控:使用ogg plug-in for OEM(oracle enterprise manager),可以在OEM界面中实现GoldenGate的启停、编辑参数文件、查看运行日志等功能。版本越新越好,OGG升级也很方便。
周国宏:
- 【DBA+社群】原创专家团成员
- Oracle 10g/11g ocm, Oracle ACS 技术架构师,负责国内通讯行业和金融行业大型客户的支持工作。
- 拥有14年ORACLE数据库架构设计、开发测试、运维经验。专注Oracle数据库升级设计与实施、性能调优、问题诊断、技术培训、高可用架构设计和优化、自动化运维等工作; 同时对甲骨文一体机、Goldengate、Timesten、Mysql、DB12c等产品有丰富的实施和运维经验。