Upgrading grid infrastructure from 12.1 to 12.2 in Exadata

Posted in: Technical Track

1 Pre-requisites / preparation

  • 12.2 Grid Infrastructure and Database Upgrade steps for Exadata Database Machine running and later on Oracle Linux (Doc ID 2111010.1)
  • Patches to apply before upgrading Oracle GI and DB to (Doc ID 2180188.1)

1.1 Install GI 12.2 from exadatadb01.

sudo su - 
dcli -g /tmp/dbs_group -l root "ls -ltr /u01/app/"
dcli -g /tmp/dbs_group -l root mkdir -p /u01/app/
dcli -g /tmp/dbs_group -l root chown oracle:oinstall /u01/app/
dcli -g /tmp/dbs_group -l root "ls -altr /u01/app/"

# Install GI using this gold image : /software/V840012-01.zip

sudo su - oracle
unzip -q /software/V840012-01.zip -d /u01/app/
1.2 Upgrade OPatch if OPatch is not already at the latest version:
 [[email protected] ~]$ unzip -q /software/27475857/Database/OPatch/12.2/*_Linux-x86-64.zip -d /u01/app/

1.3 Check that Oracle has a 10240 limits for the “soft stack” (if not, set it, log off and log on).

[[email protected]~]$ dcli -g ~/dbs_group -l root grep stack /etc/security/limits.conf | grep soft
exadatadb01: * soft stack 10240
exadatadb02: * soft stack 10240
exadatadb03: * soft stack 10240
exadatadb04: * soft stack 10240

1.4 Verify that 1500 huge pages are available.

[[email protected]~]$ dcli -g ~/dbs_group -l root grep -i huge /proc/meminfo
AnonHugePages: 0 kB
HugePages_Total: 200000
HugePages_Free: 132171
HugePages_Rsvd: 38338
HugePages_Surp: 0
Hugepagesize: 2048 kB
 1.5 Fix the ntp failures in prerequisites check.
— Verifying NTP daemon is synchronized with at least one external time source … FAILED.
It was resolved by setting entry to /etc/ntp.conf (on all db nodes):
tos maxdist 16
and restarting ntpd
service ntpd stop
service ntpd start

1.6 Run the prerequisites.

sudo su - oracle
cd /u01/app/
./runcluvfy.sh stage -pre crsinst -upgrade -rolling -src_crshome /u01/app/ -dest_crshome /u01/app/ -dest_version -fixup -verbose

2 Upgrade GI to 12.2

2.1 Set the ASM memory prerequisites.
sqlplus / as sysasm
alter system set sga_max_size = 3G scope=spfile sid='*';
alter system set sga_target = 3G scope=spfile sid='*';
alter system set memory_target=0 sid='*' scope=spfile;
alter system set memory_max_target=0 sid='*' scope=spfile /* required workaround */;
alter system reset memory_max_target sid='*' scope=spfile;
alter system set use_large_pages=true sid='*' scope=spfile /* and later(Linux only) */;

2.2 Reset mis-count.

sudo su - oracle
. oraenv <<< +ASM1
crsctl unset css misscount

2.3 Check for any rebalance operation (there should be none).

sudo su - oracle
. oraenv <<< +ASM1
sqlplus / as sysasm
select count(*) from gv$asm_operation;

2.4 Gridsetup – verify the response file.

[[email protected] ~]$ egrep -v "^#|^$" /tmp/giresponse.rsp | head -10
[[email protected] ~]$

2.5 Gridsetup – run from exadatadb01.

sudo su - oracle
cd /u01/app/
./gridSetup.sh -silent -responseFile /tmp/giresponse.rsp -J-Doracle.install.mgmtDB=false -J-Doracle.install.crs.enableRemoteGIMR=false -applyPSU /software/27475857/Database/

2.6 rootupgrade.sh on exadatadb01/2/3:


2.7 rootupgrade.sh on exadatadb04, it will be the last one.


2.8 Check if GI is relinked with RDS:

sudo su - oracle
dcli -g /tmp/dbs_group -l oracle /u01/app/

=> the command should return "rds" for each node

# If not, do it:

dcli -g /tmp/dbs_group -l oracle ORACLE_HOME=/u01/app/ \ make -C /u01/app/ -f ins_rdbms.mk ipc_rds ioracle

2.9 Check the status of the cluster and the installed version.

sudo su - oracle
/u01/app/ check cluster -all
/u01/app/ query crs activeversion

2.10 Modify ASM.

sudo su - oracle
srvctl modify asm -count ALL

2.11 Update compatible.asm on the diskgroups.

$ . oraenv <<< +ASM1
$ sqlplus / as sysasm
SQL> select name, COMPATIBILITY from v$asm_diskgroup ;
SQL> select name, COMPATIBILITY from v$asm_diskgroup ;

2.12 Update inventory.

$ . oraenv <<< +ASM1
$ /u01/app/ -ignoreSysPrereqs -updateNodeList ORACLE_HOME=/u01/app/ "CLUSTER_NODES={exadatadb01,exadatadb02,exadatadb03,exadatadb04}" CRS=true LOCAL_NODE=exadatadb01

3 Known issues

3.1 The spfile was not being used by the ASM instances.
ASMCMD> spget
# If the command above doesn’t return anything, which means the spfile is not being used. We need to set the spfile, restart the cluster if needed.
ASMCMD> DATA/exadata-clu1/ASMPARAMETERFILE/registry.253.909449003
3.2 The password file of ASM instances was not in ASM diskgroup, you will see the failures in prerequisites check.
Verifying Verify that the ASM instance was configured using an existing ASM
parameter file. ...FAILED
PRCT-1011 : Failed to run "asmcmd". Detailed error:
ASMCMD-8001: diskgroup 'u01' does not exist or is not mounted
[[email protected] grid]$ asmcmd pwcopy /u01/app/ +DBFS_DG/orapwASM
[[email protected] grid]$ asmcmd pwset --asm +DBFS_DG/orapwASM
[[email protected] grid]$ asmcmd pwget --asm
3.3 The patch 21255373 had been applied to GI, while when doing the prerequisites, it always reports the failures. According to Oracle support, this can be ignored. So the binary installation will have the option “-skipPrereqs”.
[[email protected] grid]$ ./gridSetup.sh -silent -skipPrereqs -responseFile /tmp/giresponse.rsp -J-Doracle.install.mgmtDB=false -J-Doracle.install.crs.enableRemoteGIMR=false -applyPSU /software/27475857/Database/
3.4 The postscripts was not successful as the SCAN and SCAN_LISTENERS were not up.
/u01/app/ -executeConfigTools -responseFile /tmp/giresponse.rsp -silent

INFO: [Jun 16, 2018 2:48:41 AM] Read: Verifying Single Client Access Name (SCAN) …FAILED (PRVF-5056)
INFO: [Jun 16, 2018 2:48:41 AM] Verifying Single Client Access Name (SCAN) …FAILED (PRVF-5056)
WARNING: [Jun 16, 2018 2:48:41 AM] Skipping line: Verifying Single Client Access Name (SCAN) …FAILED (PRVF-5056)

Need to manaully start the SCAN and SCAN_LISTENERS then run the post scripts

[[email protected] grid]$ srvctl start scan
[[email protected] grid]$ srvctl start scan_listener

3.5 Add the ASM instance entry into /etc/oratab.
For some reason, the ASM instance entry had been removed from /etc/oratab and never been added back. We need to add it manually to all nodes.


Want to talk with an expert? Schedule a call with our team to get the conversation started.

2 Comments. Leave new

This is a good article but I do have one question.

What is the purpose of this step ?
“2.8 Check if GI is relinked with RDS:”


Also what the purpose of the option : “-J-Doracle.install.mgmtDB=false -J-Doracle.install.crs.enableRemoteGIMR=false”, when MGMTDB is in use by customer ?


Leave a Reply

Your email address will not be published. Required fields are marked *