Pythian Blog: Technical Track

Testing the 19c Grid Infrastructure by Performing a Dry-Run Upgrade

Editor’s Note: Because our bloggers have lots of useful tips, every now and then we update and bring forward a popular post from the past. We originally published today’s post on August 14, 2019. In reviewing the Grid Infrastructure Installation and Upgrade Guide for Linux, I discovered the dry-run upgrade mode to test upgrades. With dry-run being a new feature, I tested it first using GUI. Below I will step you through this process:
[oracle@racnode-dc2-1 grid]$ /u01/app/19.3.0.0/grid/gridSetup.sh -dryRunForUpgrade
 Launching Oracle Grid Infrastructure Setup Wizard...
 The response file for this session can be found at:
 /u01/app/19.3.0.0/grid/install/response/grid_2019-08-06_00-20-31AM.rsp
 You can find the log of this install session at:
 /u01/app/oraInventory/logs/GridSetupActions2019-08-06_00-20-31AM/gridSetupActions2019-08-06_00-20-31AM.log
 [oracle@racnode-dc2-1 grid]$
From the response file above grid_2019-08-06_00-20-31AM.rsp, create dryRunForUpgradegrid.rsp:
[oracle@racnode-dc2-1 grid]$ grep -v "^#" /u01/app/19.3.0.0/grid/install/response/grid_2019-08-06_00-20-31AM.rsp | grep -v "=$" | awk 'NF' > /home/oracle/dryRunForUpgradegrid.rsp
 [oracle@racnode-dc2-1 ~]$ cat /home/oracle/dryRunForUpgradegrid.rsp
 oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0
 INVENTORY_LOCATION=/u01/app/oraInventory
 oracle.install.option=UPGRADE
 ORACLE_BASE=/u01/app/oracle
 oracle.install.crs.config.scanType=LOCAL_SCAN
 oracle.install.crs.config.ClusterConfiguration=STANDALONE
 oracle.install.crs.config.configureAsExtendedCluster=false
 oracle.install.crs.config.clusterName=vbox-rac-dc2
 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.config.clusterNodes=racnode-dc2-1:,racnode-dc2-2:
 oracle.install.crs.configureGIMR=true
 oracle.install.asm.configureGIMRDataDG=false
 oracle.install.crs.config.storageOption=FLEX_ASM_STORAGE
 oracle.install.crs.config.sharedFileSystemStorage.ocrLocations=
 oracle.install.crs.config.useIPMI=false
 oracle.install.asm.diskGroup.name=CRS
 oracle.install.asm.diskGroup.AUSize=0
 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
 [oracle@racnode-dc2-1 ~]$
Next, create directory /u01/app/19.3.0.0/grid for all nodes:
[root@racnode-dc2-1 ~]# id oracle
 uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54318(asmdba),54322(dba),54323(backupdba),54324(oper),54325(dgdba),54326(kmdba)
 [root@racnode-dc2-1 ~]# mkdir -p /u01/app/19.3.0.0/grid
 [root@racnode-dc2-1 ~]# chown oracle:oinstall /u01/app/19.3.0.0/grid
 [root@racnode-dc2-1 ~]# chmod 775 /u01/app/19.3.0.0/grid
 [root@racnode-dc2-1 ~]# ll /u01/app/19.3.0.0/
 total 4
 drwxrwxr-x 2 oracle oinstall 4096 Aug 6 02:07 grid
 [root@racnode-dc2-1 ~]#
Extract grid software for node1 ONLY:
[oracle@racnode-dc2-1 ~]$ unzip -qo /media/swrepo/LINUX.X64_193000_grid_home.zip -d /u01/app/19.3.0.0/grid/
 [oracle@racnode-dc2-1 ~]$ ls /u01/app/19.3.0.0/grid/
 addnode clone dbjava diagnostics gpnp install jdbc lib OPatch ords perl qos rhp rootupgrade.sh sqlpatch tomcat welcome.html xdk
 assistants crs dbs dmu gridSetup.sh instantclient jdk md opmn oss plsql racg root.sh runcluvfy.sh sqlplus ucp wlm
 bin css deinstall env.ora has inventory jlib network oracore oui precomp rdbms root.sh.old sdk srvm usm wwg
 cha cv demo evm hs javavm ldap nls ord owm QOpatch relnotes root.sh.old.1 slax suptools utl xag
 [oracle@racnode-dc2-1 ~]$ du -sh /u01/app/19.3.0.0/grid/
 6.0G /u01/app/19.3.0.0/grid/
 [oracle@racnode-dc2-1 ~]$
Run gridSetup.sh -silent -dryRunForUpgrade:
[oracle@racnode-dc2-1 ~]$ env|grep -i ora
 USER=oracle
 MAIL=/var/spool/mail/oracle
 PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/oracle/.local/bin:/home/oracle/bin
 PWD=/home/oracle
 HOME=/home/oracle
 LOGNAME=oracle
 [oracle@racnode-dc2-1 ~]$ date
 Tue Aug 6 02:35:47 CEST 2019
 [oracle@racnode-dc2-1 ~]$ /u01/app/19.3.0.0/grid/gridSetup.sh -silent -dryRunForUpgrade -responseFile /home/oracle/dryRunForUpgradegrid.rsp
 Launching Oracle Grid Infrastructure Setup Wizard...
 [WARNING] [INS-13014] Target environment does not meet some optional requirements.
 CAUSE: Some of the optional prerequisites are not met. See logs for details. /u01/app/oraInventory/logs/GridSetupActions2019-08-06_02-35-52AM/gridSetupActions2019-08-06_02-35-52AM.log
 ACTION: Identify the list of failed prerequisite checks from the log: /u01/app/oraInventory/logs/GridSetupActions2019-08-06_02-35-52AM/gridSetupActions2019-08-06_02-35-52AM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
 The response file for this session can be found at:
 /u01/app/19.3.0.0/grid/install/response/grid_2019-08-06_02-35-52AM.rsp
 You can find the log of this install session at:
 /u01/app/oraInventory/logs/GridSetupActions2019-08-06_02-35-52AM/gridSetupActions2019-08-06_02-35-52AM.log
 As a root user, execute the following script(s):
 1. /u01/app/19.3.0.0/grid/rootupgrade.sh
 Execute /u01/app/19.3.0.0/grid/rootupgrade.sh on the following nodes:
 [racnode-dc2-1]
 Run the script on the local node.
 Successfully Setup Software with warning(s).
 [oracle@racnode-dc2-1 ~]$
Run rootupgrade.sh for node1 ONLY and review log:
[root@racnode-dc2-1 ~]# /u01/app/19.3.0.0/grid/rootupgrade.sh
 Check /u01/app/19.3.0.0/grid/install/root_racnode-dc2-1_2019-08-06_02-44-59-241151038.log for the output of root script
 [root@racnode-dc2-1 ~]# cat /u01/app/19.3.0.0/grid/install/root_racnode-dc2-1_2019-08-06_02-44-59-241151038.log
 Performing root user operation.
 The following environment variables are set as:
 ORACLE_OWNER= oracle
 ORACLE_HOME= /u01/app/19.3.0.0/grid
 Copying dbhome to /usr/local/bin ...
 Copying oraenv to /usr/local/bin ...
 Copying coraenv to /usr/local/bin ...
 Entries will be added to the /etc/oratab file as needed by
 Database Configuration Assistant when a database is created
 Finished running generic part of root script.
 Now product-specific root actions will be performed.
 Relinking oracle with rac_on option
 Performing Dry run of the Grid Infrastructure upgrade.
 Using configuration parameter file: /u01/app/19.3.0.0/grid/crs/install/crsconfig_params
 The log of current session can be found at:
 /u01/app/oracle/crsdata/racnode-dc2-1/crsconfig/rootcrs_racnode-dc2-1_2019-08-06_02-45-31AM.log
 2019/08/06 02:45:44 CLSRSC-464: Starting retrieval of the cluster configuration data
 2019/08/06 02:45:52 CLSRSC-729: Checking whether CRS entities are ready for upgrade, cluster upgrade will not be attempted now. This operation may take a few minutes.
 2019/08/06 02:47:56 CLSRSC-693: CRS entities validation completed successfully.
 [root@racnode-dc2-1 ~]#
Next, check grid home for node2:
[oracle@racnode-dc2-2 ~]$ du -sh /u01/app/19.3.0.0/grid/
 6.6G /u01/app/19.3.0.0/grid/
 [oracle@racnode-dc2-2 ~]$
Then, check oraInventory for ALL nodes:
[oracle@racnode-dc2-2 ~]$ cat /u01/app/oraInventory/ContentsXML/inventory.xml
 <?xml version="1.0" standalone="yes" ?>
 <!-- Copyright (c) 1999, 2019, 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="OraGI12Home1" LOC="/u01/app/12.2.0.1/grid" TYPE="O" IDX="1" CRS="true"/>
 <HOME NAME="OraDB12Home1" LOC="/u01/app/oracle/12.2.0.1/db1" TYPE="O" IDX="2"/>
 <HOME NAME="OraGI19Home1" LOC="/u01/app/19.3.0.0/grid" TYPE="O" IDX="3"/>
 </HOME_LIST>
 <COMPOSITEHOME_LIST>
 </COMPOSITEHOME_LIST>
 </INVENTORY>
 [oracle@racnode-dc2-2 ~]$
Check crs activeversion: 12.2.0.1.0
[oracle@racnode-dc2-1 ~]$ . /media/patch/gi.env
 The Oracle base has been set to /u01/app/oracle
 ORACLE_SID=+ASM1
 ORACLE_BASE=/u01/app/oracle
 GRID_HOME=/u01/app/12.2.0.1/grid
 ORACLE_HOME=/u01/app/12.2.0.1/grid
 Oracle Instance alive for sid "+ASM1"
 [oracle@racnode-dc2-1 ~]$ crsctl query crs activeversion -f
 Oracle Clusterware active version on the cluster is [12.2.0.1.0]. The cluster upgrade state is [NORMAL]. The cluster active patch level is [927320293].
 [oracle@racnode-dc2-1 ~]$
Check log location:
[oracle@racnode-dc2-1 ~]$ cd /u01/app/oraInventory/logs/GridSetupActions2019-08-06_02-35-52AM/
 [oracle@racnode-dc2-1 GridSetupActions2019-08-06_02-35-52AM]$ ls -alrt
 total 17420
 -rw-r----- 1 oracle oinstall 129 Aug 6 02:35 installerPatchActions_2019-08-06_02-35-52AM.log
 -rw-r----- 1 oracle oinstall 0 Aug 6 02:35 gridSetupActions2019-08-06_02-35-52AM.err
 drwxrwx--- 3 oracle oinstall 4096 Aug 6 02:35 temp_ob
 -rw-r----- 1 oracle oinstall 0 Aug 6 02:39 oraInstall2019-08-06_02-35-52AM.err
 drwxrwx--- 17 oracle oinstall 4096 Aug 6 02:39 ..
 -rw-r----- 1 oracle oinstall 157 Aug 6 02:39 oraInstall2019-08-06_02-35-52AM.out
 -rw-r----- 1 oracle oinstall 0 Aug 6 02:43 oraInstall2019-08-06_02-35-52AM.err.racnode-dc2-2
 -rw-r----- 1 oracle oinstall 142 Aug 6 02:43 oraInstall2019-08-06_02-35-52AM.out.racnode-dc2-2
 -rw-r----- 1 oracle oinstall 9341920 Aug 6 02:43 gridSetupActions2019-08-06_02-35-52AM.out
 -rw-r----- 1 oracle oinstall 13419 Aug 6 02:43 time2019-08-06_02-35-52AM.log
 -rw-r----- 1 oracle oinstall 8443087 Aug 6 02:43 gridSetupActions2019-08-06_02-35-52AM.log
 drwxrwx--- 3 oracle oinstall 4096 Aug 6 02:56 .
 [oracle@racnode-dc2-1 GridSetupActions2019-08-06_02-35-52AM]$
Since I have not performed an actual upgrade, I don't know if 19.3.0.0 grid home in oraInventory will be problematic. It was problematic when performing a test with silent mode after the initial test with GUI. To resolve the issue, you can detach 19.3.0.0 grid home.
export ORACLE_HOME=/u01/app/19.3.0.0/grid
 $ORACLE_HOME/oui/bin/runInstaller -detachHome -silent ORACLE_HOME=$ORACLE_HOME
In conclusion, testing a grid upgrade using dryRunForUpgrade functionality is a good method to identify any possible issues before performing an actual upgrade.

No Comments Yet

Let us know what you think

Subscribe by email