In the wake of the great hospitality shown by the OTN crew at Open World, Tim Hall thought that getting the community together for a series of "OTN appreciation" blogs would be a good way to show our thanks back.
Thinking about tools provided by Oracle that make my life easier, my mind went to dbnodeupdate.sh. This tool helps automate many of the tedious tasks that must be performed when performing an OS update on an Exadata compute node. While not perfect (as Frits Hoogland will attest while I'm writing this), the dbnodeupdate.sh script does many things for you in a single shot that would add hours to the time needed to upgrade a compute node:
- Unzip and unpack an ISO file containing the entire yum repository
- Mounting the ISO file to a scratch directory
- Configuring yum to utilize that location as a yum repository
- Creating an LVM snapshot backup of the root filesystem in the event that you need to roll back
- Shut down and unlock the GI home
- Disable CRS startup on system boot
- Checking for system settings that match previously known issues (and changing those settings to prevent known issues)
- Validating free space on the host
- Performing the yum update
After those tasks are complete, the script will run again to close the upgrade, doing the following:
- Relink database and GI homes for RDS (and DNFS if 12c)
- Fix any OS parameters that match known issues
- Start CRS
- Enable CRS startup on system boot
While all of these tasks can be done by administrators, it's great to have a utility out there that does all of these things for you. The biggest benefit that I've seen is the easy backup/rollback functionality in the event that an upgrade fails or needs to be rolled back. This is something that has saved me several times over the years.
The problem you aimed at does not lie with dbnodeupdate, as you are aware. It’s yum (meaning rpm) dependencies. So I agree dbnodeupdate is a great aid when updating exadata compute nodes, automating tasks that would mean a lot of work and a lot of more time when they have to be done manually, as you described above.