Windows 11.2.0.1单机使用ADG(RMAN)迁移至Linux11.2.0.4 RAC

10 篇文章 0 订阅
1 篇文章 0 订阅


前言

Windows 11.2.0.1单机使用ADG(RMAN)迁移至Linux11.2.0.4 RAC,这个案例比较典型,数据库跨了小版本,切换需要做小版本升级,也跨了平台,搭建ADG需要使用RMAN恢复做,相对复杂一点这里记录一下。

关于RAC备库的dg参数这里就不详细说了,注意以下几点就行了:
1.备库convert参数要配置正确,RAC的tempfile和online redo位置是单独存放的。路径要写全。
2.备库配置静态监听的时候可以在节点一新建一个oracle的本地监听,本地监听名和端口号最好不要和grid监听一样,本地监听配置好,grid下的监听就可以停掉。
3.单机到rac配置dg操作可以全部在节点一操作,节点二的库可以停掉。


一、duplicate搭建DG

一开始,不知道Windows 11.2.0.1单机到Linux11.2.0.4做duplicate的时候会报错,所以我还是按往常一样用duplicate的方式复制数据库,可是开始duplicate的时候有报错如下:
在这里插入图片描述
问题描述:windows 11.2.0.1主库duplicate到linux 11.2.0.4报错
解决方法:备库只能使用rman备份恢复搭建,不能使用duplicate
问题原因:RMAN Duplicate Database from Active Primary fails with Ora-17627: Ora-12577: Message 12577 Not Found; Product=Rdbms; Facility=Ora (文档 ID 1344615.1)可能是不一致的word size导致的

这里官方文档的解决方法里说可以用:Use RMAN duplicate database based on backup(基于源库备份集的duplicate).但是当我用duplicate target database for standby;做复制的时候报数据文件路径错误,这个问题还没找到解决方法,还是先用rman 备份恢复的方式来搭建dg。

二、RMAN备份恢复搭建DG

1.备份

Windows备份脚本

run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
crosscheck archivelog all;
crosscheck backupset;
delete noprompt expired backup ;
delete noprompt expired archivelog all;
backup as compressed backupset database format 'D:\backup\db_%U_%T.bak' ;
backup current controlfile  format 'D:\backup\ctl_%U_%T.bak';
sql "alter system switch logfile";
backup as compressed backupset archivelog from time 'sysdate -3' format 'D:\backup\arc_%U_%T.bak';
backup spfile  format 'D:\backup\spfile_%U_%T.bak';
delete noprompt force archivelog until time 'sysdate -7';
delete noprompt obsolete;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}

2.恢复

我们要搭建standby备库,所以恢复控制文件时需要恢复一个standby controlfile。恢复控制文件之前一定要将数据文件和日志文件的convert参数配置好,不然restore后日志文件和redo日志的路径不会正常转换。
备库convert参数

alter system set db_file_name_convert='D:\APP\ADMINISTRATOR\ORADATA\ORCL\','+DATADG/orcl/datafile/','D:\APP\ADMINISTRATOR\ORADATA\ORCL\','+DATADG/orcl/tempfile/' scope=spfile sid='*';
alter system set log_file_name_convert='D:\APP\ADMINISTRATOR\ORADATA\ORCL\','+DATADG/orcl/onlinelog/' scope=spfile sid='*';

standby控制文件恢复
在这里插入图片描述
restore脚本

run{
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
allocate channel ch3 device type disk;
allocate channel ch4 device type disk;
restore database;
switch datafile all;
release channel ch1;
release channel ch2;
release channel ch3;
release channel ch4;
}

恢复结束后,查看数据文件和日志文件位置是否正确。开始持续同步数据。

三、切换

正常就switchover
1.确定主备库是否满足切换状态
在这里插入图片描述在这里插入图片描述
2.开始切换
主库执行切换命令后,主库关闭
在这里插入图片描述
有时候主库执行切换语句后会一直卡在这,一般情况下只需要等待其执行完成就行了。但是如果执行时间过长的话可以观察备库alert日志,当备库日志出现一下输出即代表主库切换结束

在这里插入图片描述

主库执行切换命令后备库状态变为to primary
在这里插入图片描述
备库执行切换命令
在这里插入图片描述
备库切换完后,数据库状态为mount状态

四、升级

备库执行:

sql> alter database open upgrade;

报错:ORA-39701 ORA-1092
在这里插入图片描述
这里我们备库是rac,需要禁用集群参数后重启节点一才能升级。
ALTER SYSTEM SET CLUSTER_DATABASE=FALSE scope=spfile ;

修改参数后重启数据库后重新执行:alter database open upgrade;开始升级。

升级数据字典:
@?/rdbms/admin/catupgrd.sql
在这里插入图片描述数据字典升级完成后,数据库会自动关闭。

升级完成后添加节点二redo,undo

添加节点二日志
Alter database add logfile thread 2 group 4 ('+DATADG/orcl/onlinelog/redo04.log') size 50m;
Alter database add logfile thread 2 group 5 ('+DATADG/orcl/onlinelog/redo05.log') size 50m;
Alter database add logfile thread 2 group 6 ('+DATADG/orcl/onlinelog/redo06.log') size 50m;

create undo tablespace undotbs2 datafile '+DATADG' size 1g autoextend on;

启动节点二日志
alter database enable thread 2;

启动节点二:
因为之前我们在升级数据库之前将RAC参数CLUSTER_DATABASE设置为了FALSE导致用集群命令srvctl start database -d orcl启动时报错,启动时两个节点都不能用srvctl启动
在这里插入图片描述
只能在本地用sqlplus登录启动节点一实例,修改RAC参数CLUSTER_DATABASE为TRUE,然后重启节点一使参数生效,才能启动节点二。

刷新集群参数:
因为这次是单机迁移到rac,需要刷新集群参数。

两节点open状态下执行
SQL> @?/rdbms/admin/catclust.sql

编译无效对象:
启动节点一数据库
SQL>startup

@?/rdbms/admin/utlrp

在这里插入图片描述
升级完成后,分别重启各个节点,验证数据库是否正常。

五、实际迁移过程中遇到的问题

1.迁移基本上都是在晚上进行,迁移结束后一般都是凌晨了,此时没什么业务量,所以有些问题不会立马暴露出来。

第二天,一个业务无法正常使用,软件厂家说是某个视图的问题,查看该视图是无效状态,重新编译后依然无效。PLSQL执行报错:get clob。
原因:wm_concat函数在升级前后有差异
解决方法:将wm_concat用listagg函数或其他函数替换

迁移前后最好要做一下源库和从库的无效对象的统计对比,以防业务对象在升级完成后失效,导致业务故障。


总结

多做。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值