Exadata Cloud at Customer : Drill down into Cloud Tooling RPM content

Photo by Cassie Matias on Unsplash

On one of my Exadata Cloud at Customer system, I recently had an issue which required to check exactly which files were updated when upgrading the cloud-specific tooling included on Exadata Cloud at Customer, also know as dbaastools_exa. I needed to know if a configuration file had been overwritten or not, when upgrading dbaastools_exa. My knowledge in RPM packages being very limited, I did some research and here is what I found :

What is the current version of Cloud Tooling installed on my system ?

# rpm -qa | grep -i dbaastools_exa
dbaastools_exa-1.0-1+18.2.3.1.0_190606.0657.x86_64 Tue 18 Jun 2019 01:40:35 PM CEST 

How and where can I get the corresponding RPM ?

The configuration file /var/opt/oracle/exapatch/exadbcpatch.cfg contains a variable named oss_container_url. This URL points to the local Object Storage and displays an XML with a list of all the RPMs available on my Exadata Cloud at Customer system. The URL looks like this :

https://storage.<xxxxxx>.oraclecloudatcustomer.com/v1/Storage-idcs-cloudinfra-<xxx>/dbaas_patch

Accessing this URL, I can look for the exact path of the RPM on the local Object Storage, by searching for pattern 190606 for example :

Then I deduce the full URL where the RPM resides :

https://storage.<xxxxxx>.oraclecloudatcustomer.com/v1/Storage-idcs-cloudinfra-<xxx>/dbaas_patch/18.2.3.1.0/190606/dbaastools_exa.rpm

And with wget, I download the aforesaid package :

# wget https://storage.<xxxxxx>.oraclecloudatcustomer.com/v1/Storage-idcs-cloudinfra-<xxx>/dbaas_patch/18.2.3.1.0/190606/dbaastools_exa.rpm
--2019-07-03 11:31:52--  https://storage.<xxxxxx>.oraclecloudatcustomer.com/v1/Storage-idcs-cloudinfra-<xxx>/dbaas_patch/18.2.3.1.0/190606/dbaastools_exa.rpm
Resolving storage.<xxxxxx>.oraclecloudatcustomer.com... x.x.x.x, x.x.x.x
Connecting to storage.<xxxxxx>.oraclecloudatcustomer.com|x.x.x.x|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 379134824 (362M) [application/octet-stream]
Saving to: “dbaastools_exa.rpm”

100%[================================================================================================>] 379,134,824  108M/s   in 3.5s

2019-07-03 11:32:00 (103 MB/s) - “dbaastools_exa.rpm” saved [379134824/379134824]

What is inside the package ?

Now that I have the RPM, I want to know what’s in it. I could use rpm -qlp dbaastools_exa.rpm to list its content. But I really want to explore the files, their content and their timestamp. So I use the 2 commands rpm2cpio and cpio :

# rpm2cpio dbaastools_exa.rpm | cpio -idmv
[...]
./var/opt/oracle/rpms
./var/opt/oracle/rpms/dbtools
[...]
754707 blocks

With this combination of commands, all the files are extracted locally :

# ll
total 734036
-rw-r--r-- 1 root root 379134824 Jun 10 21:38 dbaastools_exa.rpm
drwxr-xr-x 3 root root      4096 Jul  3 17:12 scratch
drwxr-xr-x 3 root root      4096 Jul  3 17:12 var

And I can easily explore the content and eventually, find what I was looking for 😉

Bonus : What are the preinstall and postinstall scriptlets ?

When an RPM is installed, scripts can be run before or after installation. For example, if a specific file is not supposed to be overwritten, then maybe this file is saved before installation and should be restored after installation. Here is the command to find out what those scriplets are for package dbaastools_exa :

# rpm -qp --scripts dbaastools_exa.rpm
preinstall scriptlet (using /bin/sh):
mkdir -p /var/opt/oracle
chown oracle:oinstall /var/opt/oracle
[...]
postinstall scriptlet (using /bin/sh):
chown oracle:oinstall /var/opt/oracle
[...]

Cloud Tooling must be updated frequently on Exadata Cloud at Customer systems. I always try to be very careful everytime a change is carried out on one of my systems, so I find it convenient to have a way to know better what has been modified between two versions of Cloud Tooling. It is also very helpful to understand the product better.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s