ORACLE RAC (GRID, DATABASE) ROLLING UPGRADE PATCH

Oracle RAC Veritabanı zamanında patchler geçilmemiş ise, upgrade gerçekleştirmeden önce pre-upgrade aşamasında bir çok patch uygulamanızı sizden isteyecektir, bu patcleri tek tek arayıp bulup uygulamak yerine en güncel PSU Patch leri My Oracle Supporttan kendi veritabanı makinemize uygun olanları GRID ve DATABASE seviyesinde, en güncellerini uygulayarak o güne kadar Oracle tarafından veritabanımız için yayınlanmış tüm patchleri uygulamış oluruz.

Benim senaryomda 2 Nodlu 11.2.0.4 RAC veritabanı için 19c Upgrade öncesi güncel PSU ların uygulanması aşağıda gerçekleştirilecektir. Burada RAC veritabanı için GRID yazılımı sahibi grid user ve Database yazılımı ise oracle user şeklindedir bu durumda GRID patch sırasında bir problem söz konusu olmaktadır ve opatch auto çalışmadığından manuel olarak patch geçilmesi durumu söz konusudur, aşağıda manuel patch geçilmesi ele alınmıştır.

İşleme başlamadan önce hem DATABASE hem de GRID için en güncel OPATCH yazılımını indirip kullanmalıyız.

GRID için p31718723_112040_GRID_Linux-x86-64  PSU uygulanması;

GRID yazılımı grid user üzerinden kurulmuş ise opatch auto komutu çalışmayacaktır, çünkü opatch auto komutu grid yazılımı ve db yazılımı oracle user sahipliğinde olduğu zaman çalışması üzerine tasarlanmıştır, bu durum söz konusu ise manual patch apply işlemi uygulanmalıdır. Bu işlem için MOS dokümanı Oracle Grid Infrastructure 11.2.0.4.x Patch Set Update SUPPLEMENTAL README (Doc ID 1641136.1).

Patch işlemine başlanmadan önce çalışan Enterprise Manager agentları varsa mutlaka durdurulması gerekmektedir.

$ <ORACLE_HOME>/bin/emctl stop dbconsole

$ srvctl stop database –d oggtdb

İlk Node için CRS duruduralım

[[email protected] bin]# ./crsctl stop crs

Sonrasındaki aşağıdaki betikleri çalıştıralım;

[email protected] install]# /u01/app/11.2.0/grid/perl/bin/perl /u01/app/11.2.0/grid/crs/install/rootcrs.pl -unlock

Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
CRS-4544: Unable to connect to OHAS
CRS-4000: Command Stop failed, or completed with errors.
Successfully unlock /u01/app/11.2.0/grid

[[email protected] install]# /u01/app/11.2.0/grid/perl/bin/perl /u01/app/11.2.0/grid/crs/install/roothas.pl -unlock

Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
Successfully unlock /u01/app/11.2.0/grid

Sonrasında ilk node için lokal olarak grid user ile (GRID yazılım sahibi olan user);

[[email protected] OPatch]$ ./opatch napply -oh /u01/app/11.2.0/grid -local /u01/orainstall/patchset/31718723/29509309/

[[email protected] OPatch]$ ./opatch napply -oh /u01/app/11.2.0/grid -local /u01/orainstall/patchset/31718723/29938455/

[[email protected] OPatch]$ ./opatch napply -oh /u01/app/11.2.0/grid -local /u01/orainstall/patchset/31718723/31537677/

veya

[[email protected] OPatch]$ ./opatch napply -oh $GRID_HOME -local /u01/orainstall/patchset/31718723/
[[email protected] ~]$ cd /u01/orainstall/patchset/
[[email protected] patchset]$  31718723/29938455/custom/server/29938455/custom/scripts/prepatch.sh -dbhome /u01/app/oracle/product/11.2.0/db/

31718723/29938455/custom/server/29938455/custom/scripts/prepatch.sh completed successfully.

[[email protected] patchset]$ cd $ORACLE_HOME/OPatch
[[email protected] OPatch]$ ./opatch napply -oh /u01/app/oracle/product/11.2.0/db/ -local /u01/orainstall/patchset/31718723/29938455/custom/server/29938455/

[[email protected] OPatch]$ /u01/orainstall/patchset/31718723/29938455/custom/server/29938455/custom/scripts/postpatch.sh -dbhome /u01/app/oracle/product/11.2.0/db


Reading /u01/app/oracle/product/11.2.0/db/install/params.ora..
Reading /u01/app/oracle/product/11.2.0/db/install/params.ora..
Parsing file /u01/app/oracle/product/11.2.0/db/bin/racgwrap
Parsing file /u01/app/oracle/product/11.2.0/db/bin/srvctl
Parsing file /u01/app/oracle/product/11.2.0/db/bin/srvconfig
Parsing file /u01/app/oracle/product/11.2.0/db/bin/cluvfy
Verifying file /u01/app/oracle/product/11.2.0/db/bin/racgwrap
Verifying file /u01/app/oracle/product/11.2.0/db/bin/srvctl
Verifying file /u01/app/oracle/product/11.2.0/db/bin/srvconfig
Verifying file /u01/app/oracle/product/11.2.0/db/bin/cluvfy
Reapplying file permissions on /u01/app/oracle/product/11.2.0/db/bin/racgwrap
Reapplying file permissions on /u01/app/oracle/product/11.2.0/db/bin/srvctl
Reapplying file permissions on /u01/app/oracle/product/11.2.0/db/bin/srvconfig
Reapplying file permissions on /u01/app/oracle/product/11.2.0/db/bin/cluvfy
Reapplying file permissions on /u01/app/oracle/product/11.2.0/db/bin/diskmon.bin
Reapplying file permissions on /u01/app/oracle/product/11.2.0/db/bin/lsnodes
Reapplying file permissions on /u01/app/oracle/product/11.2.0/db/bin/osdbagrp
Reapplying file permissions on /u01/app/oracle/product/11.2.0/db/bin/rawutl
Reapplying file permissions on /u01/app/oracle/product/11.2.0/db/srvm/admin/ractrans
Reapplying file permissions on /u01/app/oracle/product/11.2.0/db/srvm/admin/getcrshome
Reapplying file permissions on /u01/app/oracle/product/11.2.0/db/bin/gnsd
Reapplying file permissions on /u01/app/oracle/product/11.2.0/db/bin/crsdiag.pl
Postpatch completed successfully

Root user ile

[[email protected] ~]# /u01/app/oracle/product/11.2.0/db/rdbms/install/rootadd_rdbms.sh

[[email protected] ~]# /u01/app/11.2.0/grid/perl/bin/perl /u01/app/11.2.0/grid/crs/install/rootcrs.pl -patch

Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
Installing Trace File Analyzer
CRS-4123: Oracle High Availability Services has been started.

Aynı işlemleri 2. Node içinde tekrar ediyoruz ve GRID PSU patch işlemi tamamlanmış oluyor.

DATABASE için p31537677_112040_DB_Linux-x86-64 PSU uygulanması;

PSU patch yazılımını uygun bir konuma indirerek oracle user sahipliğinde unzip edielim, sonrasında aşağıdaki adımlar ile devam edeceğiz.

$ unzip p31537677_112040_DB_PSULinux-x86-64.zip
$ cd 31537677/
$ export PATH=/u01/app/oracle/product/11.2.0/db/OPatch:$PATH

$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./

Oracle Interim Patch Installer version 11.2.0.3.27
Copyright (c) 2021, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle Home       : /u01/app/oracle/product/11.2.0/db
Central Inventory : /u01/app/oraInventory
   from           : /u01/app/oracle/product/11.2.0/db/oraInst.loc
OPatch version    : 11.2.0.3.27
OUI version       : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0/db/cfgtoollogs/opatch/opatch2021-05-20_15-11-52PM_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

Başarılı olduğunu gördük artık DATABASE PSU patch ugulamasına geçebiliriz.

RAC veritabanı için öncelikle 1. Noddaki DB yi kapatıp aşağıdaki gibi patch geçilir sonrasında 2. Node DB İnstance kapatılarak yine aşağıdaki gibi patch geçilir. Böylece hiç kesinti alınmadan Patch işlemi tamamlanmış olur.

$ . /home/oracle/.bash_profile
$ opatch apply

DB durumunu kontrol edelim;

$ srvctl status database -d oggtdb


Instance OGGTDB1 is running on node oggtdb1
Instance OGGTDB2 is running on node oggtdb2

Aşağıdaki işlemler DB seviyesinde olduğu için tek bir nod da yapılması gerekiyor;

$ cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @catbundle.sql psu apply
SQL> QUIT

$ cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql

SQL > @dbmsjdev.sql
SQL > exec dbms_java_dev.disable

GRID ve Database PSU patch işlemimiz tamamlandığına göre artık upgrade işlemini bir çok FAILED hatasını almadan gerçekleştirebiliriz..