升级到12c云数据库的最佳实践

    xiaoxiao2025-08-24  27

    目录

    升级方案的选型

    各个阶段主要任务

    项目成功的关键因素

    升级的过程中我们会经历这样一个过程:一开始,怀着美好的愿望,我们开始升级项目;但在实施过程中会碰到或多或少的问题,饱受挫折;在努力解决问题后,系统最终能够成功上线。

    第一部 分升级方案的选型

    随着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等产品有丰富的实施和运维经验。

    本文来自云栖社区合作伙伴"DBAplus",原文发布时间:2015-12-24

    最新回复(0)