合 手工迁移数据库Oracle 11.2.0.4到新机器并升级到12.2.0.1版本
前言
在最近的项目里,客户有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来做演练。
环境介绍
1 2 3 4 5 6 7 8 9 10 | docker rm -f lhrora11204 docker run -itd --name lhrora11204 -h lhrora11204 \ --privileged=true \ lhrbest/oracle_11g_ee_lhr_11.2.0.4:2.0 init docker rm -f lhrora1221 docker run -itd --name lhrora1221 -h lhrora1221 \ --privileged=true \ lhrbest/oracle_12cr2_ee_lhr_12.2.0.1:2.0 init |
参考文档:
手动升级到 Non-CDB Oracle Database 12c Release 2(12.2)的完整核对清单 (Doc ID 2297983.1、2173141.1)
使用 DBUA 升级数据库到 Database 12c 版本2(12.2)的完整核对清单 (Doc ID 2364820.1、2189854.1)
源端准备
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | PURGE DBA_RECYCLEBIN; EXECUTE DBMS_STATS.GATHER_DICTIONARY_STATS; EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS; scp /u01/app/oracle/product/12.2.0.1/dbhome_1/rdbms/admin/emremove.sql oracle@172.17.0.66:/tmp/ scp /u01/app/oracle/product/12.2.0.1/dbhome_1/rdbms/admin/preupgrade.jar oracle@172.17.0.66:/tmp/ -- 删除不需要的组件,减少最后升级数据字典的时间 -- 删除OLAP Catalog(OLAP AMD),12c不再支持 @?/olap/admin/catnoamd.sql -- 删除OEM,需要从12c拷贝:$12c_ORACLE_HOME/rdbms/admin @?/rdbms/admin/emremove.sql -- 删除APEX @?/apex/apxremov.sql -- 执行下面的查询来检查是否有和SDO_GEOMETRY关联的表,如果有返回行数,那么在升级前需要往12.2的ORACLE HOME上打补丁 patch 25293022,或者直接删除相关表 col owner format a15 col table_name format a30 col column_name format a30 SELECT owner,table_name,column_name FROM dba_tab_columns WHERE data_type = 'SDO_GEOMETRY' AND owner != 'MDSYS' ORDER BY 1,2,3; col COMP_ID for a10 col COMP_NAME for a40 col VERSION for a15 col status for a15 set lines 180 set pages 999 select COMP_ID,COMP_NAME,VERSION,STATUS from dba_registry; -- 预检并修复 $ORACLE_HOME/jdk/bin/java -jar /tmp/preupgrade.jar FILE TEXT @/u01/app/oracle/cfgtoollogs/LHR11G/preupgrade/preupgrade_fixups.sql [oracle@lhrora11204 ~]$ $ORACLE_HOME/jdk/bin/java -jar /tmp/preupgrade.jar FILE TEXT Preupgrade generated files: /u01/app/oracle/cfgtoollogs/LHR11G/preupgrade/preupgrade.log /u01/app/oracle/cfgtoollogs/LHR11G/preupgrade/preupgrade_fixups.sql /u01/app/oracle/cfgtoollogs/LHR11G/preupgrade/postupgrade_fixups.sql col COMP_ID for a10 col COMP_NAME for a40 col VERSION for a15 col status for a15 set lines 180 set pages 999 select COMP_ID,COMP_NAME,VERSION,STATUS from dba_registry; COMP_ID COMP_NAME VERSION STATUS ---------- ---------------------------------------- --------------- --------------- OWB OWB 11.2.0.4.0 VALID SDO Spatial 11.2.0.4.0 VALID ORDIM Oracle Multimedia 11.2.0.4.0 VALID XDB Oracle XML Database 11.2.0.4.0 VALID CONTEXT Oracle Text 11.2.0.4.0 VALID EXF Oracle Expression Filter 11.2.0.4.0 VALID RUL Oracle Rules Manager 11.2.0.4.0 VALID OWM Oracle Workspace Manager 11.2.0.4.0 VALID CATALOG Oracle Database Catalog Views 11.2.0.4.0 VALID CATPROC Oracle Database Packages and Types 11.2.0.4.0 VALID JAVAVM JServer JAVA Virtual Machine 11.2.0.4.0 VALID XML Oracle XDK 11.2.0.4.0 VALID CATJAVA Oracle Database Java Packages 11.2.0.4.0 VALID APS OLAP Analytic Workspace 11.2.0.4.0 VALID XOQ Oracle OLAP API 11.2.0.4.0 VALID 15 rows selected. -- 失效对象 select substr(object_name,1,40) object_name,substr(owner,1,15) owner,object_type from dba_objects where status='INVALID' order by owner,object_type; select owner,object_type,count(*) from dba_objects where status='INVALID' group by owner,object_type order by owner,object_type ; -- 编译失效对象 @$ORACLE_HOME/rdbms/admin/utlrp.sql -- 开启bct alter database enable block change tracking using file '/home/oracle/bct.log'; select * from v$block_change_tracking; |
文中所说的数据泵+ogg方式其实是可行的,不能使用微服务,但是可以使用传统模式,请参考 https://www.xmmup.com/shiyongogg-21-3yuanchengshishihuxiangtongbuoracle-11-2-0-4shuangzhu.html
这个升级,目标机器12C 中没有PDB,只有CDB吧?
是的,是非cdb的库,和11架构一样