Upgrading the Oracle Grid Infrastructure on the Physical Standby from 18c to 19c

In this part of the series, we will upgrade the Oracle Grid Infrastructure on the Physical Standby Database from 18c to 19c. This is the second part of a 7-part series that includes:


Part 1. Upgrade Oracle Grid Infrastructure on the RAC Cluster from 18c to 19c


Part 2. Upgrading the Oracle Grid Infrastructure on the Physical Standby from 18c to 19c


Part 3. Upgrade Oracle RAC Database from 18c to 19c


Part 4. Upgrade Oracle Physical Standby Database from 18c to 19c


Part 5. Installing the Latest Oracle 19c Update Patches – Opatch/OJVM/GI/DB/JDK on Oracle 19c RAC on Linux


Part 6. Installing the Latest Oracle 19c Update Patches – Opatch/OJVM/GI/DB/JDK on Oracle 19c Standby on Linux


Part 7. Updating the Database’s COMPATIBLE parameter and ASM Diskgroups’ COMPATIBLE.ASM and COMPATIBLE.RDBMS to 19.0.0.0



For the purpose of this guide, note the following:

-To make following this guide easier, put all your downloaded software in /usr/software/oracle and all the Oracle patches in /usr/software/patches.

-GI stands for Grid Infrastructure, also known as Oracle Restart when being used in a standalone database. I will refer to both as simply GI.

-DB stands for Database.

-DB Home owner is Linux OS user “oracle”.

-OS Version: Oracle Linux Server release 7.5

-Source GI/DB Version: 18.14.0.0

-Target GI/DB Version: 19.3.0.0

-Source 18c DB Home: /oracle/oraBase/oracle/18.0.0/database

-Target 19c DB Home: /oracle/oraBase/oracle/19.0.0/database

-GI Home owner is Linux OS user “grid”.

-Source 18c GI Home: /oracle/oraBase/18.0.0/grid

-Target 19c GI Home: /oracle/oraBase/19.0.0/grid

-ALWAYS make a backup of the database and the oracle software before you start.


Primary RAC DB Name: PROD

RAC Node 1: rac1

SID: PROD1

RAC Node 2: rac2

SID: PROD2

Standby DB Name: PRODDR

Physical Standby Node: stdby1

SID: PRODDR1


1. Prerequisites and Preparations


1.1 Download the following software:

19.3 GI and DB Software

oracle-database-preinstall-19c for Linux 7

-The latest OPatch from Oracle Support

-The latest AutoUpgrade Tool (Doc ID 2485457.1)

-The latest 19c Update Patches

-The latest JDK for GI and DB Homes


Note: The JDK is for GI and DB Homes, not to be confused with the JDK that is installed directly on the OS. That is not covered here.


1.2 Install oracle-database-preinstall-19c


[root@stdby1 ~]# cd /usr/software/oracle/

[root@stdby1 oracle]# yum install -y oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpm
Loaded plugins: langpacks, ulninfo
Examining oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpm: oracle-database-preinstall-19c-1.0-3.el7.x86_64
Marking oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package oracle-database-preinstall-19c.x86_64 0:1.0-3.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=====================================================================================================================================================================================================================================
 Package                                                       Arch                                  Version                                   Repository                                                                       Size
=====================================================================================================================================================================================================================================
Installing:
 oracle-database-preinstall-19c                                x86_64                                1.0-3.el7                                 /oracle-database-preinstall-19c-1.0-3.el7.x86_64                                 76 k

Transaction Summary
=====================================================================================================================================================================================================================================
Install  1 Package

Total size: 76 k
Installed size: 76 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : oracle-database-preinstall-19c-1.0-3.el7.x86_64                                                                                                                                                                   1/1
  Verifying  : oracle-database-preinstall-19c-1.0-3.el7.x86_64                                                                                                                                                                   1/1

Installed:
  oracle-database-preinstall-19c.x86_64 0:1.0-3.el7

Complete!

1.3 Create the GI and DB 19c Home Directories.


mkdir -p /oracle/oraBase/19.0.0/grid
chown -R grid.oinstall /oracle/oraBase/19.0.0

mkdir -p /oracle/oraBase/oracle/19.0.0/database
chown -R oracle.oinstall /oracle/oraBase/oracle/19.0.0

mkdir -p /usr/software/oracle/patches
chmod -R 777 /usr/software/oracle

1.4 Extract the GI and DB software into the 19c GI and 19c DB Homes.


su - grid
cd /oracle/oraBase/19.0.0/grid
unzip -oq /usr/software/oracle/LINUX.X64_193000_grid_home.zip

su - oracle
cd /oracle/oraBase/oracle/19.0.0/database
unzip -oq /usr/software/oracle/LINUX.X64_193000_db_home.zip

1.5 Update the OPatch in grid home.


[root@stdby1 oracle]# su - grid
[grid@stdby1 patches]$ /oracle/oraBase/19.0.0/grid/OPatch/opatch version
OPatch Version: 12.2.0.1.17

OPatch succeeded.

[grid@stdby1 patches]$ mv /oracle/oraBase/19.0.0/grid/OPatch /oracle/oraBase/19.0.0/grid/OPatch.12.2.0.1.17
[grid@stdby1 patches]$ unzip -oq /usr/software/oracle/patches/p6880880_230000_Linux-x86-64.zip -d /oracle/oraBase/19.0.0/grid/
[grid@stdby1 patches]$ /oracle/oraBase/19.0.0/grid/OPatch/opatch version
OPatch Version: 12.2.0.1.42

OPatch succeeded.

1.6 Extract the patches as grid user.


[grid@stdby1 ~]$ env|grep ORA
ORACLE_SID=+ASM
ORACLE_BASE=/oracle/oraBase/grid
ORA_NLS33=/oracle/oraBase/18.0.0/grid/ocommon/nls/admin/data
ORACLE_HOME=/oracle/oraBase/18.0.0/grid

[grid@stdby1 ~]$ unset ORACLE_SID
[grid@stdby1 ~]$ unset ORACLE_BASE
[grid@stdby1 ~]$ unset ORACLE_HOME
[grid@stdby1 ~]$ unset ORA_NLS33

[grid@stdby1 software]$ cd /usr/software/oracle/patches/
[grid@stdby1 patches]$ unzip -oq p36209493_190000_Linux-x86-64.zip <-- APR24 OJVM/GI/DB Combo
[grid@stdby1 patches]$ unzip -oq p36195566_190000_Linux-x86-64.zip <-- APR24 JDK Bundle

2. Upgrading the Oracle Grid Infrastructure on Standby node stdby1.


2.1 As grid user, execute following command to determine any additional preinstallation steps are needed. It will generate a fixup script.


[grid@stdby1 grid]$ ./runcluvfy.sh stage -pre hacfg -fixup -verbose

Verifying Physical Memory ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   15.4187GB (1.6167724E7KB)  8GB (8388608.0KB)         passed
Verifying Physical Memory ...PASSED
Verifying Available Physical Memory ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   12.5867GB (1.3198076E7KB)  50MB (51200.0KB)          passed
Verifying Available Physical Memory ...PASSED
Verifying Swap Size ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   16GB (1.6777212E7KB)      15.4187GB (1.6167724E7KB)  passed
Verifying Swap Size ...PASSED
Verifying Free Space: stdby1:/usr,stdby1:/etc,stdby1:/sbin,stdby1:/tmp ...
  Path              Node Name     Mount point   Available     Required      Status
  ----------------  ------------  ------------  ------------  ------------  ------------
  /usr              stdby1   /             29.0947GB     25MB          passed
  /etc              stdby1   /             29.0947GB     25MB          passed
  /sbin             stdby1   /             29.0947GB     10MB          passed
  /tmp              stdby1   /             29.0947GB     1GB           passed
Verifying Free Space: stdby1:/usr,stdby1:/etc,stdby1:/sbin,stdby1:/tmp ...PASSED
Verifying Free Space: stdby1:/var ...
  Path              Node Name     Mount point   Available     Required      Status
  ----------------  ------------  ------------  ------------  ------------  ------------
  /var              stdby1   /var          20.3623GB     5MB           passed
Verifying Free Space: stdby1:/var ...PASSED
Verifying User Existence: grid ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  stdby1   passed                    exists(921)

  Verifying Users With Same UID: 921 ...PASSED
Verifying User Existence: grid ...PASSED
Verifying Group Existence: dba ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  stdby1   passed                    exists
Verifying Group Existence: dba ...PASSED
Verifying Group Existence: oinstall ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  stdby1   passed                    exists
Verifying Group Existence: oinstall ...PASSED
Verifying Group Membership: dba ...
  Node Name         User Exists   Group Exists  User in Group  Status
  ----------------  ------------  ------------  ------------  ----------------
  stdby1       yes           yes           yes           passed
Verifying Group Membership: dba ...PASSED
Verifying Group Membership: oinstall(Primary) ...
  Node Name         User Exists   Group Exists  User in Group  Primary       Status
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       yes           yes           yes           yes           passed
Verifying Group Membership: oinstall(Primary) ...PASSED
Verifying Run Level ...
  Node Name     run level                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   5                         3,5                       passed
Verifying Run Level ...PASSED
Verifying Architecture ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   x86_64                    x86_64                    passed
Verifying Architecture ...PASSED
Verifying OS Kernel Version ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   4.1.12-124.85.1.el7uek.x86_64  4.1.12                    passed
Verifying OS Kernel Version ...PASSED
Verifying OS Kernel Parameter: semmsl ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       256           256           250           passed
Verifying OS Kernel Parameter: semmsl ...PASSED
Verifying OS Kernel Parameter: semmns ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       32000         32000         32000         passed
Verifying OS Kernel Parameter: semmns ...PASSED
Verifying OS Kernel Parameter: semopm ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       100           100           100           passed
Verifying OS Kernel Parameter: semopm ...PASSED
Verifying OS Kernel Parameter: semmni ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       128           128           128           passed
Verifying OS Kernel Parameter: semmni ...PASSED
Verifying OS Kernel Parameter: shmmax ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       4398046511104  4398046511104  8277874688    passed
Verifying OS Kernel Parameter: shmmax ...PASSED
Verifying OS Kernel Parameter: shmmni ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       4096          4096          4096          passed
Verifying OS Kernel Parameter: shmmni ...PASSED
Verifying OS Kernel Parameter: shmall ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       1073741824    1073741824    1073741824    passed
Verifying OS Kernel Parameter: shmall ...PASSED
Verifying OS Kernel Parameter: file-max ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       6815744       6815744       6815744       passed
Verifying OS Kernel Parameter: file-max ...PASSED
Verifying OS Kernel Parameter: ip_local_port_range ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       between 9000 & 65500  between 9000 & 65500  between 9000 & 65535  passed
Verifying OS Kernel Parameter: ip_local_port_range ...PASSED
Verifying OS Kernel Parameter: rmem_default ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       4194304       4194304       262144        passed
Verifying OS Kernel Parameter: rmem_default ...PASSED
Verifying OS Kernel Parameter: rmem_max ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       4194304       4194304       4194304       passed
Verifying OS Kernel Parameter: rmem_max ...PASSED
Verifying OS Kernel Parameter: wmem_default ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       262144        262144        262144        passed
Verifying OS Kernel Parameter: wmem_default ...PASSED
Verifying OS Kernel Parameter: wmem_max ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       1048576       1048576       1048576       passed
Verifying OS Kernel Parameter: wmem_max ...PASSED
Verifying OS Kernel Parameter: aio-max-nr ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       1048576       1048576       1048576       passed
Verifying OS Kernel Parameter: aio-max-nr ...PASSED
Verifying OS Kernel Parameter: panic_on_oops ...
  Node Name         Current       Configured    Required      Status        Comment
  ----------------  ------------  ------------  ------------  ------------  ------------
  stdby1       1             1             1             passed
Verifying OS Kernel Parameter: panic_on_oops ...PASSED
Verifying Package: kmod-20-21 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   kmod(x86_64)-20-28.0.3.el7  kmod(x86_64)-20-21        passed
Verifying Package: kmod-20-21 (x86_64) ...PASSED
Verifying Package: kmod-libs-20-21 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   kmod-libs(x86_64)-20-28.0.3.el7  kmod-libs(x86_64)-20-21   passed
Verifying Package: kmod-libs-20-21 (x86_64) ...PASSED
Verifying Package: binutils-2.23.52.0.1 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   binutils-2.27-44.base.0.3.el7_9.1  binutils-2.23.52.0.1      passed
Verifying Package: binutils-2.23.52.0.1 ...PASSED
Verifying Package: compat-libcap1-1.10 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   compat-libcap1-1.10-7.el7  compat-libcap1-1.10       passed
Verifying Package: compat-libcap1-1.10 ...PASSED
Verifying Package: libgcc-4.8.2 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   libgcc(x86_64)-4.8.5-44.0.3.el7  libgcc(x86_64)-4.8.2      passed
Verifying Package: libgcc-4.8.2 (x86_64) ...PASSED
Verifying Package: libstdc++-4.8.2 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   libstdc++(x86_64)-4.8.5-44.0.3.el7  libstdc++(x86_64)-4.8.2   passed
Verifying Package: libstdc++-4.8.2 (x86_64) ...PASSED
Verifying Package: libstdc++-devel-4.8.2 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   libstdc++-devel(x86_64)-4.8.5-44.0.3.el7  libstdc++-devel(x86_64)-4.8.2  passed
Verifying Package: libstdc++-devel-4.8.2 (x86_64) ...PASSED
Verifying Package: sysstat-10.1.5 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   sysstat-10.1.5-20.0.3.el7_9  sysstat-10.1.5            passed
Verifying Package: sysstat-10.1.5 ...PASSED
Verifying Package: ksh ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   ksh                       ksh                       passed
Verifying Package: ksh ...PASSED
Verifying Package: make-3.82 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   make-3.82-24.el7          make-3.82                 passed
Verifying Package: make-3.82 ...PASSED
Verifying Package: glibc-2.17 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   glibc(x86_64)-2.17-326.0.9.el7_9  glibc(x86_64)-2.17        passed
Verifying Package: glibc-2.17 (x86_64) ...PASSED
Verifying Package: glibc-devel-2.17 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   glibc-devel(x86_64)-2.17-326.0.9.el7_9  glibc-devel(x86_64)-2.17  passed
Verifying Package: glibc-devel-2.17 (x86_64) ...PASSED
Verifying Package: libaio-0.3.109 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   libaio(x86_64)-0.3.109-13.el7  libaio(x86_64)-0.3.109    passed
Verifying Package: libaio-0.3.109 (x86_64) ...PASSED
Verifying Package: libaio-devel-0.3.109 (x86_64) ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   libaio-devel(x86_64)-0.3.109-13.el7  libaio-devel(x86_64)-0.3.109  passed
Verifying Package: libaio-devel-0.3.109 (x86_64) ...PASSED
Verifying Package: nfs-utils-1.2.3-15 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   nfs-utils-1.3.0-0.68.0.1.el7.2  nfs-utils-1.2.3-15        passed
Verifying Package: nfs-utils-1.2.3-15 ...PASSED
Verifying Package: smartmontools-6.2-4 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   smartmontools-7.0-2.el7   smartmontools-6.2-4       passed
Verifying Package: smartmontools-6.2-4 ...PASSED
Verifying Package: net-tools-2.0-0.17 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  stdby1   net-tools-2.0-0.25.20131004git.el7  net-tools-2.0-0.17        passed
Verifying Package: net-tools-2.0-0.17 ...PASSED
Verifying Users With Same UID: 0 ...PASSED
Verifying Current Group ID ...PASSED
Verifying Root user consistency ...
  Node Name                             Status
  ------------------------------------  ------------------------
  stdby1                           passed
Verifying Root user consistency ...PASSED

Pre-check for Oracle Restart configuration was successful.

CVU operation performed:      stage -pre hacfg
Date:                         Jun 24, 2024 4:09:33 PM
CVU home:                     /oracle/oraBase/19.0.0/grid/
User:                         grid

If any of the above fails, correct it and rerun the runcluvfy.sh command.


2.2 Create the response file for GI Upgrade in /usr/software/oracle/19c_grid_upgrade_standalone.rsp


Below is my sample response file.


oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0
INVENTORY_LOCATION=/oracle/oraInventory
oracle.install.option=UPGRADE
ORACLE_BASE=/oracle/oraBase/grid
oracle.install.crs.config.scanType=LOCAL_SCAN
oracle.install.crs.config.ClusterConfiguration=STANDALONE
oracle.install.crs.config.configureAsExtendedCluster=false
oracle.install.crs.config.gpnp.configureGNS=false
oracle.install.crs.config.autoConfigureClusterNodeVIP=false
oracle.install.crs.config.gpnp.gnsOption=CREATE_NEW_GNS
oracle.install.crs.configureGIMR=false
oracle.install.asm.configureGIMRDataDG=false
oracle.install.crs.config.sharedFileSystemStorage.ocrLocations=
oracle.install.crs.config.useIPMI=false
oracle.install.asm.diskGroup.AUSize=1
oracle.install.asm.gimrDG.AUSize=1
oracle.install.asm.configureAFD=false
oracle.install.crs.configureRHPS=false
oracle.install.crs.config.ignoreDownNodes=false
oracle.install.config.managementOption=NONE
oracle.install.config.omsPort=0
oracle.install.crs.rootconfig.executeRootScript=false

In the response file, change these values to match your system’s configurations:

INVENTORY_LOCATION

ORACLE_BASE


The inventory_loc variable in /etc/oraInst.loc will provide the value for INVENTORY_LOCATION


[grid@stdby1 grid]$ cat /etc/oraInst.loc
inventory_loc=/oracle/oraInventory
inst_group=oinstall

2.3 Setting ownership for grid home.


Some directories and files in grid home might get changed to root owner during previous installations/upgrades. They need to be owned by grid user.



[root@stdby1 ~]# chown -R grid.oinstall /oracle/oraBase/19.0.0/grid

2.4 As oracle user, stop the database.


[oracle@stdby1 ~]$ srvctl stop db -d PRODDR

2.5 Run the gridSetup.sh on the node stdby1 to upgrade the grid home.



[grid@stdby1 ~]$ unset ORACLE_HOME
[grid@stdby1 ~]$ unset ORACLE_SID
[grid@stdby1 ~]$ cd /oracle/oraBase/19.0.0/grid
[grid@stdby1 grid]$ ./gridSetup.sh -silent -ignorePrereqFailure -responseFile /usr/software/oracle/19c_grid_upgrade_standalone.rsp
Launching Oracle Grid Infrastructure Setup Wizard...

The response file for this session can be found at:
 /oracle/oraBase/19.0.0/grid/install/response/grid_2024-06-24_04-16-35PM.rsp


As a root user, execute the following script(s):
        1. /oracle/oraBase/19.0.0/grid/rootupgrade.sh

Execute /oracle/oraBase/19.0.0/grid/rootupgrade.sh on the following nodes:
[stdby1]



Successfully Setup Software.
[WARNING] [INS-43080] Some of the configuration assistants failed, were cancelled or skipped.
   ACTION: Refer to the logs or contact Oracle Support Services.
As install user, execute the following command to complete the configuration.
        /oracle/oraBase/19.0.0/grid/gridSetup.sh -executeConfigTools -responseFile /usr/software/oracle/19c_grid_upgrade_standalone.rsp [-silent]

2.5.1 As root, execute /oracle/oraBase/19.0.0/grid/rootupgrade.sh on stdby1.


[root@stdby1 ~]#  /oracle/oraBase/19.0.0/grid/rootupgrade.sh
Check /oracle/oraBase/19.0.0/grid/install/root_stdby1_2024-06-24_16-19-16-941958199.log for the output of root script

2.5.2 Once rootupgrade.sh has completed, run gridSetup.sh with executeConfigTools option as grid user.


[grid@stdby1 grid]$ /oracle/oraBase/19.0.0/grid/gridSetup.sh -executeConfigTools -responseFile /usr/software/oracle/19c_grid_upgrade_standalone.rsp -silent
Launching Oracle Grid Infrastructure Setup Wizard...

You can find the logs of this session at:
/oracle/oraInventory/logs/GridSetupActions2024-06-24_04-30-43PM

You can find the log of this install session at:
 /oracle/oraInventory/logs/UpdateNodeList2024-06-24_04-30-43PM.log
You can find the log of this install session at:
 /oracle/oraInventory/logs/UpdateNodeList2024-06-24_04-30-43PM.log
Successfully Configured Software.

2.5.3 Add this 19c Home entry to /etc/oratab if it doesn’t exist.


+ASM:/oracle/oraBase/19.0.0/grid:N              # line added by Agent

2.5.4 Detached the old 18c GI Home.



[grid@stdby1 grid]$ /oracle/oraBase/19.0.0/grid/oui/bin/runInstaller -detachhome ORACLE_HOME=/oracle/oraBase/18.0.0/grid ORACLE_HOME_NAME="OraGI18Home1"
Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB.   Actual 16383 MB    Passed
The inventory pointer is located at /etc/oraInst.loc

[grid@stdby1 grid]$ cat /oracle/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2024, Oracle and/or its affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand. -->
<INVENTORY>
<VERSION_INFO>
   <SAVED_WITH>12.2.0.7.0</SAVED_WITH>
   <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME NAME="OraDB18Home1" LOC="/oracle/oraBase/oracle/18.0.0/database" TYPE="O" IDX="2"/>
<HOME NAME="OraGI19Home1" LOC="/oracle/oraBase/19.0.0/grid" TYPE="O" IDX="3" CRS="true"/>
<HOME NAME="OraGI18Home1" LOC="/oracle/oraBase/18.0.0/grid" TYPE="O" IDX="1" REMOVED="T"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>

2.6 Check GI Status.



[grid@stdby1 grid]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       stdby1              STABLE
ora.FRA.dg
               ONLINE  ONLINE       stdby1              STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       stdby1              STABLE
ora.asm
               ONLINE  ONLINE       stdby1              Started,STABLE
ora.ons
               OFFLINE OFFLINE      stdby1              STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
      1        ONLINE  ONLINE       stdby1              STABLE
ora.diskmon
      1        OFFLINE OFFLINE                               STABLE
ora.evmd
      1        ONLINE  ONLINE       stdby1              STABLE
ora.proddr.cat.svc
      1        OFFLINE OFFLINE                               STABLE
ora.proddr.db
      1        OFFLINE OFFLINE                               Instance Shutdown,ST
                                                             ABLE
ora.proddr.dog.svc
      1        OFFLINE OFFLINE                               STABLE
ora.proddr.pig.svc
      1        OFFLINE OFFLINE                               STABLE
--------------------------------------------------------------------------------

2.7 Update /home/grid/.bash_profile to point to the new 19c home.


ORACLE_HOME=/oracle/oraBase/19.0.0/grid
GRID_HOME=/oracle/oraBase/19.0.0/grid

[grid@stdby1 ~]$ . ~/.bash_profile
[grid@stdby1 ~]$ env|egrep "ORACLE_HOME|GRID_HOME"
GRID_HOME=/oracle/oraBase/19.0.0/grid
ORACLE_HOME=/oracle/oraBase/19.0.0/grid

2.8 Check GI Software Version


[grid@stdby1 grid]$ crsctl query has softwareversion
Oracle High Availability Services version on the local node is [19.0.0.0.0]

[grid@stdby1 ~]$ crsctl query has releaseversion
Oracle High Availability Services release version on the local node is [19.0.0.0.0]

2.9 Update Listener Config Files.


2.9.1 As user grid, stop the listener.


[grid@stdby1 ~]$ srvctl stop listener
[grid@stdby1 ~]$ srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is not running

2.9.2 Update listener.ora to point to the new 19c home.


[grid@stdby1 ~]$ cat /oracle/oraBase/19.0.0/grid/network/admin/listener.ora
# listener.ora Network Configuration File: /oracle/oraBase/19.0.0/grid/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = stdby1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCPS)(HOST = stdby1)(PORT = 1522))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = PRODDR)
      (ORACLE_HOME = /oracle/oraBase/oracle/19.0.0/database)
      (SID_NAME = PRODDR1)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = PRODDR_DGMGRL)
      (ORACLE_HOME = /oracle/oraBase/oracle/19.0.0/database)
      (SID_NAME = PRODDR1)
    )
  )


ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON              # line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER=ON            # line added by Agent

ADMIN_RESTRICTIONS_LISTENER=ON

2.9.3 As user grid, start the listener.


[grid@stdby1 ~]$ srvctl start listener
[grid@stdby1 ~]$ srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is running on node(s): stdby1

[grid@stdby1 ~]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 24-JUN-2024 16:58:50

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=stdby1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                24-JUN-2024 16:58:18
Uptime                    0 days 0 hr. 0 min. 32 secF
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/oraBase/19.0.0/grid/network/admin/listener.ora
Listener Log File         /oracle/oraBase/grid/diag/tnslsnr/stdby1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=stdby1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=stdby1)(PORT=1522)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "+ASM_FRA" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "PRODDR" has 1 instance(s).
  Instance "PRODDR1", status UNKNOWN, has 1 handler(s) for this service...
Service "PRODDR_DGMGRL" has 1 instance(s).
  Instance "PRODDR1", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

If use oracle wallet, make sure to update your /oracle/oraBase/19.0.0/grid/network/admin/sqlnet.ora with the correct ORACLE_HOME.


Congratulation! GI on the Standby Database has been upgraded to 19c!