资讯专栏INFORMATION COLUMN

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

IT那活儿 / 2103人阅读
利用Oracle ADG升级11.2.0.4到19.8案例分享
[
需求背景
]


一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_convertnewcmsdb,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.删除第一步中建立的还原点

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130081.html

相关文章

  • DBASK问答集萃第四期

    摘要:问题九库控制文件扩展报错库的扩展报错,用的是裸设备,和还是原来大小,主库的没有报错,并且大小没有变,求解释。专家解答从报错可以看出,控制文件从个块扩展到个块时报错,而裸设备最大只支持个块,无法扩展,可以尝试将参数改小,避免控制文件报错。 链接描述引言 近期我们在DBASK小程序新关联了运维之美、高端存储知识、一森咖记、运维咖啡吧等数据领域的公众号,欢迎大家阅读分享。 问答集萃 接下来,...

    SKYZACK 评论0 收藏0
  • RAC补丁日常更新成功反遇异常处理

    RAC补丁日常更新成功反遇异常处理 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; m...

    IT那活儿 评论0 收藏2488
  • 记一次升级Oracle驱动引发的死锁

    摘要:问题描述近期项目需要从虚拟机环境迁移到容器环境,其中有一个项目在迁移到容器环境之后的两天之内出现了次死锁的问题,部分关键日志如下日志还是挺明显的,线程获得了锁,等待获取而正好相反,从而导致死锁问题分析以上的错误 问题描述 近期项目需要从虚拟机环境迁移到容器环境,其中有一个项目在迁移到容器环境之后的两天之内出现了2次死锁(deadlock)的问题,部分关键日志如下: Found one ...

    Caicloud 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<