暂无图片
暂无图片
8
暂无图片
暂无图片
暂无图片

利用Oracle ADG升级11.2.0.4到19.8案例分享

IT那活儿 2020-11-26
6466
[
需求背景
]

一Oracle单机数据库,版本为11.2.0.4,数据量超4TB,无备份,无空间进行备份存放备份集,且无条件进行NBU备份。客户欲迁移升级到另一套19C中。

由于无临时中转的空间,迁移方案仅剩下数据泵+dblink和adgonline duplicate+升级数据字典两种,由于数据泵需要较长的停机时间,所以本案采用了adg+数据字典升级的方案。

[
升级过程
]

    adg数据迁移

    1.目标端软件安装

安装完整的19CRAC软件,打RU,但不建数据库;同时在目标端安装一个单机的11.2.0.4db软件,因为duplicate只支持同版本复制,跨版本会出现如下错误:

     2.源端配置ADG相关参数,配置网络及TNS等

具体配置本处省略。

     

     3.配置简单的Pfile并启动目标端数据库到nomount状态

DB_NAME=newcmsdb

DB_UNIQUE_NAME=newcmsdbadg

DB_BLOCK_SIZE=8192

使用11gdb软件启动数据库

     4.在线复制数据库

$rman target sys/**@newcmsdb auxiliary sys/**@newcmsdbadg

run{

allocatechannel prmy1 type disk;

allocatechannel prmy2 type disk;

allocatechannel prmy3 type disk;

allocatechannel prmy4 type disk;

allocateauxiliary channel stby type disk;

duplicatetarget database for standby from active database

spfile

parameter_value_convert'newcmsdb','newcmsdbadg'

setdb_unique_name='newcmsdbadg'

setdb_file_name_convert='/oradata1/newcmsdb/','+DATA/newcmsdbadg/datafile1/','/oradata/newcmsdb/','+DATA/newcmsdbadg/datafile2/'

setlog_file_name_convert='/oradata1/newcmsdb/','+DATA/newcmsdbadg/ONLINELOG/'

setcontrol_files='+data'

setlog_archive_max_processes='5'

setfal_client='newcmsdbadg'

setfal_server='newcmsdb'

setstandby_file_management='AUTO'

setlog_archive_config='dg_config=(newcmsdb,newcmsdbadg)'

setlog_archive_dest_1='location=+data'

setdb_create_file_dest='+data'

setlog_archive_dest_2='service=newcmsdb ASYNCvalid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=newcmsdb';

}

以上命令会自动复制spfile并按脚本中的set命令修改spfile,然后以spfile重启数据库,自动复制controlfile,并启动到mount状态。

注意:

源端数据文件存放在不同目录,一定要注意不同目录中是否存在同名的数据文件,如果存在同名文件,在参数db_file_name_convert的时候,就需要转换到不同的目录,如果转换到相同目录,会导致数据文件覆盖,但是在duplicate过程中不会报错,在最后recover的过程中会报数据文件头损坏:

Rereading datafile 5 header failed with ORA-01210

MRP0: Background Media Recovery terminated with error 1110

Errors in file oracle/app/oracle/diag/rdbms/newcmsdbadg/cmsdb/trace/cmsdb_pr00_13040.trc:

ORA-01110: data file 5: '+DATA/newcmsdbadg/datafile/musicdata01.dbf'

ORA-01122: database file 5 failed verification check

ORA-01110: data file 5: '+DATA/newcmsdbadg/datafile/musicdata01.dbf'

ORA-01210: data file header is media corrupt

使用DBV检查坏块,但是文件头1号块并未损坏

[oracle@node1 ~]$ dbv file=+DATA/newcmsdbadg/datafile/musicdata02.dbf userid=sys/**

DBVERIFY: Release 11.2.0.4.0 - Production on Wed Nov 11 13:13:07 2020

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

DBVERIFY - Verification starting : FILE = +DATA/newcmsdbadg/datafile/musicdata02.dbf   

DBVERIFY - Verification complete

Total Pages Examined         : 4189440

Total Pages Processed (Data) : 4156396

Total Pages Failing   (Data) : 0

Total Pages Processed (Index): 126

Total Pages Failing   (Index): 0

Total Pages Processed (Other): 12829

Total Pages Processed (Seg)  : 0

Total Pages Failing   (Seg)  : 0

Total Pages Empty            : 20089

Total Pages Marked Corrupt   : 0

Total Pages Influx           : 0

Total Pages Encrypted        : 0

Highest block SCN            : 0 (0.0)

源端查询,发现在不同目录有同名文件

SQL> select file#,name from v$datafile where name like '%musicdata02.dbf';

     FILE#   NAME

---------- ------------------------------------------------------------

         5  oradata/newcmsdb/musicdata02.dbf

       122  oradata1/newcmsdb/musicdata02.dbf

由于convert到相同目录,导致多次写入,覆盖了文件头,此类问题,如果少数两个文件有问题,可考虑在源端重新备份数据文件到目标端,如果文件较多,只能考虑修改convert参数,重新进行duplicate了。

  1. 在源端进行19C升级相关的检查和整改

  • 禁用ddl触发器

  • 如果使用了APEX组件,需提前升级APEX

  • 查Dba_Registry,检查数据库组件状态

  • 查失效对象,最好先进行重编译或者删除

  • 下载并执行dbupgdiag.sql

  • 目标端19C 打补丁29213893

  • 修改参数job_queue_processes=0

  • 检查是否存在物化视图,查看是否正在刷新

  • 如果存在只读表空间,修改为可读写

  • 如果参数CLUSTER_DATABASE=TRUE,修改为false

  • 清空审计表sys.aud$

  • 清空回收站purge dba_recyclebin;

  • 删除em

emctlremove dbconsole

SQL>SETECHO ON

SQL>SETSERVEROUTPUT ON

SQL>@emremove.sql --在新版本的oracle_home中有该脚本

  • 搜集数据字典统计信息EXEC DBMS_STATS.GATHER_DICTIONARY_STATS

  • 执行预升级检查脚本(脚本会检查包括上述内容)

$ORACLE_HOME/jdk/bin/java-jar 新$ORACLE_HOME/rdbms/admin/preupgrade.jarFILE TEXT DIR output_dir

执行该脚本,会生成3个文件

/home/oracle/preupgrade.log

/home/oracle/preupgrade_fixups.sql

/home/oracle/postupgrade_fixups.sql

--检查log文件,并执行preupgrade_fixups.sql

根据提示整改需手工修复的内容


     6.recover数据库,并failover成主库


    数据字典升级


    1.升级前在11g数据库中创建还原点,万一升级有异常,可回退

    2.拷贝spfile、密码文件等文件到19C oracle_home

    3.使用19c软件启动数据库startup upgrade

    4.升级数据字典

cd$ORACLE_HOME/bin

./dbupgrade

      5.执行脚本@?/rdbms/admin/utlusts.sql

      6.重编译失效对象

      7.执行postupgrade_fixups.sql脚本

      8.升级时区,11204时区是14,19C时区为32

$ORACLE_HOME/rdbms/admin/utltz_countstar.sql

$ORACLE_HOME/rdbms/admin/utltz_upg_check.sql

$ORACLE_HOME/rdbms/admin/utltz_upg_apply.sql

      9.修改参数文件,以及其他相关收尾工作

altersystem set compatible='19.0.0' scope=spfile;

altersystem set cluster_database=true scope=spfile;

10.删除第一步中建立的还原点

最后修改时间:2020-12-08 12:26:25
文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论