ORACLE12C集群升级

作者简介:高文博,OCM,从事ORACLE专业14年,主要服务于各大升级运营商。现任职北京海天起点技术服务股份有限公司山东办事处主任,为山东省内企事业客户提供海量级ORACLE数据库及相关产品的运维支持,参与出版《Oracle云管理平台——企业管理器12c实战指南》一书。

概述

某公司地市基础数据ORACLE12C使用的华为fusionstorage集群,原来采用4台主机计算、存储混合搭建,但在后期使用中不能满足地市查询压力,因此准备按6主机2计算4存储重新搭建,因此需将原来的数据迁移到新搭建的4个存储节点上。

整个过程准备使用ORACLE12c新特性,添加新的DISKGROUP后,在线重定义数据文件来实施。但在新建磁盘组时,后台报错ORA-600 [kfgbPublishRecoveryTs_1],ASM实例被RBAL进程重启;经查询该报错为bug,详见
Bug 19155797 – ORA-600 [kfgbPublishRecoveryTs_1] in ASM RBAL mounting a diskgroup (
文档 ID 19155797.8)

需patch,经过论证,最后决定直接升级到12.1.0.2.160119

处理过程

patch和opatch准备

从metalink下载patch和最新的opatch,并上传到服务器

p22191349_121020_Linux-x86-64.zip

p6880880_121010_Linux-x86-64.zip

将opatch压缩包更改属主,分别复制到 $ORACLE_HOME 和$GRID_HOME并解压

GRID用户

ORACLE用户

对于patch包,由于使用opatchauto,因此要把patch放到grid、oracle都能读到的地方,由于其他目录空间有限,本次直接在/grid下用root创建777权限文件夹patch来存放并解压。

使用grid用户解压patch

以上操作在全部4个节点上进行一遍。

创建OCM response file

创建文档可参看How to Create an OCM Response file to Apply a Patch in Silent Mode – opatch silent (文档 ID 966023.1)

备份lsinventory

以上操作4个节点都要运行,并确保命令输出最后一行是”OPatch succeeded

Prepatch check

检查是否存在冲突的patch版本,由于我们这个是12.1.0.2的初始版本,没有打过任何patch所以应该不存在冲突问题,但正规步骤应执行。

ROOT用户

以上操作4个节点都执行,并确保没有冲突

Patch

为保险起见,4个节点停止所有pdb、停止crs中的db服务

ORACLE用户 4个节点

GRID用户

其他CRS资源不用停,patch期间rootcrs.pl会停止所有crs资源。

停止service db后,可以运行升级命令

ROOT用户

主要报错:

报错1 CheckActiveFilesAndExecutables failed

以上报错是因为oracle、grid相关资源没有停干净导致,具体可检查粗体部分log中以下内容

可通过fuser /oracle/app/oracle/product/12.1.0/dbhome_1/lib/libclntsh.so.12.1 查看占用进程,并kill掉

处理好后,可执行运行命令

ROOT用户

重新运行patch

报错2 ROLLING PATCH FAILED

查看粗体处的日志中的以下部分

以上报错为ORACLE bug参考CRS-1153: There was an error setting Oracle Clusterware to rolling patch mode. (文档 ID 1943498.1)

可通过以下命令关闭rolling patch

ROOT用户

ROOT用户

报错3 OPatchSession cannot load inventory for the given Oracle Home

该问题应该和ORACLE_HOME和oraInst.loc有关,但由于是使用ocm response命令,无法在opatchauto过程中手动指定oraInst.loc位置,因此只能重置ORACLE_HOME

GRID用户

该命令执行成功后,会导致报错4的发生。

报错4 PRCI-1123 : 本地节点上不存在 CRS 主目录

该报错可参看opatchauto Fails With Error : “PRCI-1123 : CRS home does not exist on the local node” as CRS=true is not set (文档 ID 2003905.1)

MOS文档上的命令会报错,但会返回正确命令,复制后得到以下命令

以上报错3、4可能是因为在集群安装时有些遗留问题,特别是ORACLE_HOME和oraInst.loc。

以下是顺利的patch输出:

NOTE

由于使用了opatchauto,因此在patch过程中,要始终监控并保留类似”/grid/app/12.1.0/grid/cfgtoollogs/opatchauto/22191349/opatch_gi_2016-01-29_01-21-50_deploy.debug.log“.的deploy.debug.log

因为在里面有失败点以后的后续操作步骤,用于不能opatchauto的手工patch,比如:

DataPatch

在patch完后,需运行datapatch来更新SQL,类似原来升级后的catbundle.sql psu apply

报错

参看MOS
Datapatch on RAC Database fails with error:”PLS-00201 , ORA-01109 & ORA-01219″ (
文档
ID 2081228.1)

修改参数

检查patch情况

 

未经允许不得转载:Oracle一体机用户组 » ORACLE12C集群升级

相关推荐