Oracle RAC ADG备库版本降级方案(19.20 → 19.7)
Oracle RAC ADG备库版本降级方案(19.20 → 19.7)
一、前期准备
1.1环境验证
主库版本:19.7
备库版本:19.20
检查兼容性:确认Oracle 19.20补丁是否支持回滚至19.7
1.2备份与快照
对备库数据库进行全量备份(RMAN备份)。
对备库的Oracle软件目录($ORACLE_HOME)和集群配置(Grid Infrastructure)进行快照。
二、降级步骤
2.1停止ADG同步
在备库执行
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
2.2卸载当前补丁(19.20)
进入OPatch目录
su – grid
cd $ORACLE_HOME/OPatch
查看已安装补丁
opatch lspatches
一次性卸载补丁
opatchauto rollback <UNZIPPED PATCH LOCATION>/35319490
如果上述失败,可考虑分别尝试卸载grid和db的补丁:
先停掉集群服务:
#crsctl stop crs –f
#ps -ef|grep d.bin确认无进程,如果有在kill -9
To roll back the patch from the Grid home:
# opatchauto rollback <UNZIPPED_PATCH_LOCATION>/35319490 -oh <path to GI home>
To roll back the patch from the Oracle RAC database home:
# opatchauto rollback <UNZIPPED_PATCH_LOCATION>/35319490 -oh <oracle_home1_path>,<oracle_home2_path>
grid集群版本和oracle数据库版本都检查一下
opatch lspatches
注意:若补丁不可回滚,需卸载整个19.20软件并重新安装19.7。
2.4安装目标补丁(19.7)
解压补丁包
unzip pXXXXXXX_190000_Linux-x86-64.zip
# 应用补丁
cd XXXXXX
opatchauto apply <UNZIPPED PATCH LOCATION>/35319490
2.6启动备库日志应用
srvctl stop database -d dgemr -o immediate
srvctl start database -d dgemr
alter pluggable database all open instances=all;
-- 启动日志应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
三、验证与测试
3.1版本一致性检查
-- 主库和备库执行
SELECT * FROM v$version;
3.2 ADG同步状态
SELECT * FROM V$ARCHIVE_GAP;
SELECT * V$ARCHIVE_DEST_STATUS;
SELECT NAME, VALUE FROM V$DATAGUARD_STATS WHERE NAME IN ('transport lag', 'apply lag', 'estimated startup time');
-- 主库查询同步延迟
SELECT DEST_NAME, STATUS, ARCHIVED_THREAD#, ARCHIVED_SEQ#
FROM V$ARCHIVE_DEST_STATUS
WHERE DEST_ID = 2;
-- 备库查询应用进度
SELECT PROCESS, STATUS, THREAD#, SEQUENCE#
FROM V$MANAGED_STANDBY;
3.3数据一致性验证
-- 主备库执行数据抽样比对
SELECT COUNT(*) FROM schema_name.table_name;
四、遇到问题
- 节点1卸载19.20成功,节点2卸载后启动crs失败:
处理办法:强制停止crs,再重启crs
#crsctl stop crs –f
#crsctl start crs
2.打补丁19.7,节点1成功,节点2失败
原因是目录权限存在问题,应该是节点2在卸载19.20后失败导致权限没有正常变更导致。
经历的报错:一定查看相应日志,根据提示处理:
缺少目录:
权限无法拷贝:
最终处理办法:
参考:一次惊险的oracle19c rac升级补丁(19.11->19.20) - 墨天轮
[grid@dgrac1 ~]$scp -rp /u01/gridhome/inventory/oneoffs//* dgrac2:/u01/gridhome/inventory/oneoffs/
分别对grid和db的家目录打补丁:
#opatchauto apply <UNZIPPED_PATCH_LOCATION>/35319490 -oh <path to GI home>
#opatchauto apply <UNZIPPED_PATCH_LOCATION>/35319490 -oh <oracle_home1_path>,<oracle_home2_path>
chown -R /u0l/grid/product/19c/gridhome_1
grid打补丁:
/u01/grid/product/19c/gridhome_1/OPatch/opatchauto apply /u0l/software/19.7/30899722 -oh /u0l/grid/product/19c/gridhome_1
chmod 6751 $ORACLE_HOME/bin/oracle
db打补丁:
/u01/app/oracle/product/19c/dbhome_1/OPatch/opatchauto apply /u0l/software/19.7/30899722 -oh /u0l/grid/product/19c/gridhome_1
最后启动:
#crsctl start crs
#ps -ef|grep d.bin正常