使用rman备份恢复迁移Oracle 11.2.0.4到新机器并使用AutoUpgrade自动升级到12.2.0.1版本

3    1252    3

Tags:

👉 本文共约3703个字,系统预计阅读时间或需14分钟。

前言

在最近的项目里,客户有2套11.2.0.4的数据库,需要迁移上云,数据量较大(一个600g,一个2T),停机时间6小时以内,还有很多其它的库需要同时切割,目前想到的迁移方案有:
1、XTTS进行全量+增量迁移

缺点:物理迁移,在最后一次增量的时候,源端数据库需要设置为只读模式,只能读,不能写。云端数据库在最后一次增量之前都不能使用。

由于客户需要提前做POC测试,而且网络不是直达的,需要经过中转机,所以,该方案放弃。

​ 2、使用数据泵+OGG方式

缺点:逻辑迁移,对于特殊的列不能同步(例如long列),需要正式切割前进行大量的实验观察,否则可能造成个别数据不一致。

这个方案,我想着使用OGG的微服务会比较好,结果安装了好几个版本的OGG微服务(从12.3到21.3),兼容性都不支持11.2.0.4,无奈只能放弃!

​ 3、进行全量+增量的rman备份恢复,最后做数据字典升级。可以使用手动脚本升级,也可以使用DBUA升级,也可以使用最新的AutoUpgrade工具升级。

缺点:数据字典升级时间稍微长点,预估1~2小时左右,但可控在切割时间内。

优点:方案成熟,变数少,可以做压缩备份,减少中间网络传输的时间。

本文我们使用方案3来做演练,升级方式选择AutoUpgrade工具。

手动脚本升级可以参考:https://www.xmmup.com/shougongqianyishujukuoracle-11-2-0-4daoxinjiqibingshengjidao12-2-0-1banben.html

环境介绍

使用rman备份恢复迁移Oracle 11.2.0.4到新机器并使用AutoUpgrade自动升级到12.2.0.1版本

参考文档:

Oracle Database AutoUpgrade allows DBAs to upgrade one or many databases without human intervention, all with one command and a single configuration file.

AutoUpgrade enables customers to upgrade one or many Oracle databases at the command-line with a single command and a single configuration file. AutoUpgrade will run the preupgrade tasks, perform automated fixups where needed, execute the database upgrade, and finish by taking care of post-upgrade tasks. It includes automatic retry and fallback, the possibility to schedule upgrades for future points in time, and the ability to set, change or remove initialization parameters as desired. It saves time and money by upgrading hundreds of databases with one command and replacing bespoke high maintenance upgrade solutions.

源端准备

执行过程:

使用rman备份恢复迁移Oracle 11.2.0.4到新机器并使用AutoUpgrade自动升级到12.2.0.1版本

使用rman备份恢复迁移Oracle 11.2.0.4到新机器并使用AutoUpgrade自动升级到12.2.0.1版本

看来,源库不需要做任何操作。

源端全备

拷贝全备文件+密码文件+tnsnames.ora+sqlnet.ora到目标端

目标端恢复全备

注意,如果从这里重新做还原恢复操作,那么应该注意以下内容:

1、删除之前闪回恢复区中的所有文件,否则会自动注册闪回恢复区中的归档文件,会引起恢复错误!!!

源端增量备份

目标端恢复增量备份

目标端PSU升级

如果不升级,会报错:

解决办法:打最新的PSU补丁。

最新的PSU请参考:https://www.xmmup.com/oracle-database-or-gi-update-revision-psu-spucpu-bundle-patches-patchsets-and-base-releases.html

使用rman备份恢复迁移Oracle 11.2.0.4到新机器并使用AutoUpgrade自动升级到12.2.0.1版本

目标端升级(核心步骤)

参考:https://docs.oracle.com/en/database/oracle/oracle-database/21/upgrd/examples-of-autoupgrade-workflows.html#GUID-04742E36-180F-4BEA-B693-9F4ED6A2073D

1、执行升级命令

Notes:执行升级过程中,可以通过 lsj 和 status -job 102 来检查升级情况。

或者通过python来创建一个HTTPServer网页来监控升级情况:

打开网页,输入:http://172.17.0.4:80/state.html,网页会自动刷新执行情况:

使用rman备份恢复迁移Oracle 11.2.0.4到新机器并使用AutoUpgrade自动升级到12.2.0.1版本

等待升级完成即可,时间大概1-2小时,跟数据库组件的个数、类型和是否含有特殊组件有关。

也可以查看告警日志、组件的状态来预估升级的进度,升级时间的长短和组件的个数相关!

使用rman备份恢复迁移Oracle 11.2.0.4到新机器并使用AutoUpgrade自动升级到12.2.0.1版本

使用rman备份恢复迁移Oracle 11.2.0.4到新机器并使用AutoUpgrade自动升级到12.2.0.1版本

image-20211207155520499

升级后操作

最后组件的状态:

使用rman全备+增备+dbupgrade成功异机升级到12.2.0.1.

总体来说,使用AutoUpgrade自动升级比手动或dbua升级要省事的多!

总结

1、在源端删除不必要的组件,会加快升级的速度,例如APEX(Oracle Application Express)可以删掉,对于Spatial需要保证无数据,否则也很耗费时间,可以考虑删除OE用户,或删除example表空间:

2、重新从全备开始测试时,记得删除目标库上的闪回空间中内容,否则会导致恢复出现问题。

3、重新跑升级脚本时,记得删除之前的日志目录,或先备份再删除目录。

4、查看autoupgrade的版本:

5、DBA自己控制并行度:

所有参数参考:https://docs.oracle.com/en/database/oracle/oracle-database/21/upgrd/autoupgrade-utility-configuration-files.html#GUID-5C5542C0-F21E-4DBF-A878-27F5F4AF6519

但是,我配置后感觉没有起到作用,并行度依然是8,有点奇怪,可能还有啥机制吧!

6、升级的核心命令不要放后台执行,容易出现问题!意思就是不要用nohup和&放后台执行,问题比较多。可以使用screen等命令完成。

7、从可控角度来说,感觉AutoUpgrade没有手工执行的DBA可控性强!AutoUpgrade就把手工需要跑的内容集合在一块了,更像一个黑匣子了!不过,我们可以查看日志或者使用手工方式来补救(https://www.xmmup.com/shougongqianyishujukuoracle-11-2-0-4daoxinjiqibingshengjidao12-2-0-1banben.html),所以,出错或卡住了不要慌。。。

8、最后升级脚本的时间跟数据库组件的个数、类型和是否含有特殊组件有关,另外也跟机器性能也有一定的关系,我在云主机上测试的,30分钟即可升级完毕。如果很久没都没进度,那么就得找找日志了。

9、如果在原Oracle 11g数据库系统中,有使用WM_CONCAT函数,那么在升级到12c后会报错:ORA-00904: "WM_CONCAT": invalid identifier,解决办法请参考:https://www.xmmup.com/ora-00904-wm_concat-invalid-identifiercuowujiejue.html

10、只有在编译失效对象完成后,dba_registry中的statu列才会变为VALID。若编译过程很慢,那您得找一下原因了,找找是否有大量存储过程,而存储过程中含有dblink连接等问题,等这些问题修复后,再编译起来就很快了。编译脚本:

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

3 条回复

  1. 头像 小麦苗说道:

    最后升级脚本的时间跟数据库组件的个数、类型和是否含有特殊组件有关,另外也跟机器性能也有一定的关系,我在云主机上测试的,30分钟即可升级完毕。

  2. 头像 xnyfred说道:

    这个升级,目标端12C 也是没有PDB的CDB吧?

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

17 − 9 =

 

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部