We know that during the ODA patching, a new grid version will be installed. To avoid the /u01 file system to fill up, we need to cleanup the old version. In this blog, I will show you how you can do it and also few changes coming with version 19.29, as you might need a reboot before.
Remember that until 19.28, the patch of the server was done with odacli update-server command, and this will patch the whole server (OS, ILOM, BIOS, …) and the grid in the same step.
Starting 19.29 you will run the server and the grid patching separately. odacli update-servercomponents will patch the server (OS, ILOM, HMP, firmware for local disk and controller, …) and odacli update-gihome will patch and install the new grid version. A reboot of the node will only be performed after the servercomponents update due to the ILOM and BIOS update.
Once the patching process was successfully done, we can cleanup old grid version. In my example, I patched the ODA from version 19.28 to 19.30.
Check usage
First of all we check usage of the grid files. The new grid version is 19.30, so I expect to have file using 19.30 grid.
[root@ODA01 ~]# lsof | grep "/u01/app/19.30.0.0/" | wc -l 29545
Before any cleanup, I need to ensure the old 19.28 grid infrastructure is not used any more.
[root@ODA01 ~]# lsof | grep "/u01/app/19.28.0.0/" | wc -l 3295
Which is definitely note the case.
I check which process are still using old grid infra.
[root@ODA01 ~]# lsof | grep "/u01/app/19.28.0.0/" | grep -i oakd | wc -l 3233 [root@ODA01 ~]# lsof | grep "/u01/app/19.28.0.0/" | grep -iv oakd | wc -l 62 [root@ODA01 ~]# lsof | grep "/u01/app/19.28.0.0/" | grep -iv oakd java 86061 root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 2390 LegacyRun root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 2394 LegacyRun root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 2440 LegacyRun root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 2545 LegacyRun root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 2546 LegacyRun root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 2547 LegacyRun root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 2548 LegacyRun root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 4274 ForkJoinP root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 16159 process root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86062 TFAServer root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86063 ParGC\x20 root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86064 ParGC\x20 root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86065 ParGC\x20 root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86066 VM\x20Thr root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86068 Reference root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86069 Finalizer root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86071 Signal root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86072 Service root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86073 C2\x20Com root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86074 C1\x20Com root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86075 Sweeper root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86078 VM\x20Per root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86079 Common-Cl root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86145 process root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86252 LogFlushe root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86253 DataCorru root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86296 INCompres root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86297 Cleaner-1 root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86298 Checkpoin root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86396 pool-3-th root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86397 pool-3-th root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86398 pool-3-th root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86551 TFAIndexe root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 86983 TFAMonito root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87763 ActionHan root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87776 ClusterEv root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87777 Repositor root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87782 PeriodicC root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87786 InstanceM root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87788 Thread-13 root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87790 DiskUsage root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87794 process root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87797 pool-2-th root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87799 PurgeMana root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87800 TFAMaster root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87804 LegacyTel root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87805 TFAPlugin root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87806 pool-2-th root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87807 TFAInvent root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87808 TFADbUtlS root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87809 TFADbUtlP root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 87810 RetryUplo root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 88715 Tailing root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 88718 Tailing root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 88719 Tailing root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 88720 Tailing root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 91944 pool-6-th root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 98253 pool-2-th root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 98254 pool-2-th root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 98331 pool-2-th root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar java 86061 98388 pool-2-th root 26r REG 252,10 16284857 1713748 /u01/app/19.28.0.0/grid/jlib/srvm.jar [root@ODA01 ~]# lsof | grep "/u01/app/19.28.0.0/" | grep -i oakd | tail -n3 oakd 65702 71035 oakd root 118r REG 252,10 174592 1717769 /u01/app/19.28.0.0/grid/rdbms/mesg/diaus.msb oakd 65702 71035 oakd root 119r REG 252,10 174592 1717769 /u01/app/19.28.0.0/grid/rdbms/mesg/diaus.msb oakd 65702 71035 oakd root 120r REG 252,10 174592 1717769 /u01/app/19.28.0.0/grid/rdbms/mesg/diaus.msb [root@ODA01 ~]#
So OAK and TFA are still running on old grid version and using old grid jar library.
This comes from the fact that after the server components patches, the server is rebooted, the oak, tfa and other process will start with the existing grid version, 19.28. The grid patch will not reboot the server and not restart those processes, so they will still run with old grid infra.
This is why before any cleanup and starting 19.29 only, we need to reboot the ODA.
Reboot the DOA:
[root@ODA01 ~]# systemctl reboot [root@ODA01 ~]#
After reboot we can see that only new grid version is used:
[root@ODA01 ~]# uptime 16:16:17 up 3 min, 1 user, load average: 2.06, 1.58, 0.65 [root@ODA01 ~]# lsof | grep "/u01/app/19.28.0.0/" | wc -l 0 [root@ODA01 ~]# lsof | grep "/u01/app/19.30.0.0" | wc -l 45798 [root@ODA01 ~]#
Cleanup old grid
Current space for /u1 is 6.2 GB:
[root@ODA01 ~]# df -h / /opt /u01 Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroupSys-LogVolRoot 30G 5.1G 23G 19% / /dev/mapper/VolGroupSys-LogVolOpt 48G 26G 20G 57% /opt /dev/mapper/VolGroupSys-LogVolU01 49G 41G 6.2G 87% /u01 [root@ODA01 ~]#
Remove old version of grid:
[root@ODA01 ~]# cd /u01/app [root@ODA01 app]# mv 19.28.0.0 BAK_19.28.0.0 [root@ODA01 app]# lsof | grep "/u01/app/19.28.0.0" | wc -l 0 [root@ODA01 app]# lsof | grep "/u01/app/BAK_19.28.0.0" | wc -l 0 [root@ODA01 app]# rm -rf BAK_19.28.0.0 [root@ODA01 app]#
Check current space:
[root@ODA01 app]# df -h / /u01 /opt /boot Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroupSys-LogVolRoot 30G 5.1G 23G 19% / /dev/mapper/VolGroupSys-LogVolU01 49G 27G 20G 58% /u01 /dev/mapper/VolGroupSys-LogVolOpt 48G 26G 20G 57% /opt /dev/md126p2 488M 218M 235M 49% /boot [root@ODA01 app]#
We have taken back about 14 GB.
Check oracle inventory
Checking oracle inventory:
[root@ODA01 app]# cd /u01/app/oraInventory/ContentsXML/ [root@ODA01 ContentsXML]# cat inventory.xml
You will see both grid home:
<HOME NAME="OraGrid192800" LOC="/u01/app/19.28.0.0/grid" TYPE="O" IDX="13"/>
<HOME NAME="OraGrid193000" LOC="/u01/app/19.30.0.0/grid" TYPE="O" IDX="15" CRS="true"/>
The current running one is the one having CRS option to true.
Detach old grid home from the inventory
We can now detach old grid from the inventory:
[grid@ODA01 ~]$ echo $ORACLE_SID +ASM1 [grid@ODA01 ~]$ echo $ORACLE_HOME /u01/app/19.30.0.0/grid [grid@ODA01 ~]$ cd $ORACLE_HOME/oui/bin [grid@ODA01 bin]$ ./runInstaller -detachHome -silent -local ORACLE_HOME=/u01/app/19.28.0.0/grid Starting Oracle Universal Installer... Checking swap space: must be greater than 500 MB. Actual 24575 MB Passed The inventory pointer is located at /etc/oraInst.loc You can find the log of this install session at: /u01/app/oraInventory/logs/DetachHome2026-03-29_04-34-43PM.log 'DetachHome' was successful.
Check inventory
Checking the inventory again:
[grid@ODA01 bin]$ cd /u01/app/oraInventory/ContentsXML/ [grid@ODA01 ContentsXML]$ cat inventory.xml
We will see old grid with option REMOVE=”T”
<HOME NAME="OraGrid193000" LOC="/u01/app/19.30.0.0/grid" TYPE="O" IDX="15" CRS="true"/>
<HOME NAME="OraGrid192800" LOC="/u01/app/19.28.0.0/grid" TYPE="O" IDX="13" REMOVED="T"/>