When you work on Exadata compute (i.e. database) node – you are actually on Oracle Linux. Is this pure Oracle Linux or is it “special” version of it – like on Exadata Storage Servers? Well, this is indeed Oracle Linux (OL6 if you have Exadata firmware between 12.x or 18.x or OL7 if you are on 19.x) – but you get it already preinstalled by Oracle (in the factory or during re-imaging process). You can even reinstall it yourself following this or that process – but you will always need to use specific install image (ISO, PXE/NFS) for your Exadata software version. You can get these images (patches) from MOS looking into this Doc ID 888828.1. But you will never use generic installation ISO from http://edelivery.oracle.com/linux, like you would do on generic hardware.cloud not showWhen you work on Exadata compute (i.e. database) node – you are actually on Oracle Linux. Is this pure Oracle Linux or is it “special” version of it – like on Exadata Storage Servers? Well, this is indeed Oracle Linux (OL6 if you have Exadata firmware between 12.x or 18.x or OL7 if you are on 19.x) – but you get it already preinstalled by Oracle (in the factory or during re-imaging process). You can even reinstall it yourself following this or that process – but you will always need to use specific install image (ISO, PXE/NFS) for your Exadata software version. You can get these images (patches) from MOS looking into this Doc ID 888828.1. But you will never use generic installation ISO from http://edelivery.oracle.com/linux, like you would do on generic hardware.
Let’s check this out using Exadata 12.1 as an example:
[root@exa01vm03 ~]# imageinfo -ver -kver Kernel version: 2.6.39-400.284.1.el6uek.x86_64 #1 SMP Mon Sep 12 19:26:25 PDT 2016 x86_64 Image version: 126.96.36.199.3.161013
Here we are using Exadata firmware 12.1 and if we look over Doc ID 888828.1 we will find reference to Doc ID 2181366.1 containing links to PXE image for our database server – which is necessary only is we ever needed to re-image our compute node and links to ISO files containing base ULN repositories appropriate for this particular firmware version.
However on our database node there are no YUM repositories configured (and this is exactly how you get it from Oracle factory):
[root@exa01vm03 ~]# yum repolist repolist: 0
Let’s connect to base ULN repository from the Doc ID 2181366.1 or from https://linux.oracle.com directly (In my case I do have such repo already mirrored on separate Oracle Linux machine called yum-mirror:
[root@exa01vm03 ~]# cat >/etc/yum.repos.d/exadata.repo <<EOF [exadata_ol6_base_repo_188.8.131.52.3] name=Exadata release 184.108.40.206.3 db server installation packages (x86_64) baseurl=http://yum-mirror/EngineeredSystems/exadata/dbserver/220.127.116.11.3/base/x86_64 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle gpgcheck=1 enabled=1 EOF
Let’s check what can be installed from this repo:
[root@exa01vm03 ~]# yum list available Available Packages Lib_Utils.noarch 1.00-09 exadata_ol6_base_repo_18.104.22.168.3 MegaCli.noarch 8.07.07-1 exadata_ol6_base_repo_22.214.171.124.3 MegaOEM.noarch setSubOEMID-1 exadata_ol6_base_repo_126.96.36.199.3 flash_dom.x86_64 1.2.12-1 exadata_ol6_base_repo_188.8.131.52.3 infiniband-diags.x86_64 1.5.13.MLNX_20120708-4.mlnx1.5.5r2.el6 exadata_ol6_base_repo_184.108.40.206.3 ipmiflash.x86_64 220.127.116.11-0.el6 exadata_ol6_base_repo_18.104.22.168.3 lsidiag.x86_64 113.00.01.00-0.el6 exadata_ol6_base_repo_22.214.171.124.3 mrdiag.x86_64 3.0.4-0 exadata_ol6_base_repo_126.96.36.199.3 mstflint.x86_64 1.4-9.mlnx1.5.5r2.el6 exadata_ol6_base_repo_188.8.131.52.3 oracle-hmp-tools-biosconfig.x86_64 184.108.40.206-1.el6 exadata_ol6_base_repo_220.127.116.11.3 oracle-hmp-tools-ubiosconfig.x86_64 18.104.22.168-1.el6 exadata_ol6_base_repo_22.214.171.124.3 sas_snmp.x86_64 14.02-0103 exadata_ol6_base_repo_126.96.36.199.3 storcli.noarch 1.19.08-1 exadata_ol6_base_repo_188.8.131.52.3
And that is all – there are only 13 packages in the repository that are not installed on my node. There would be even less of them (or none?) if I was not using virtualized compute node.
So, how can I install additional software on my Exadata compute node?
First of all you need to ask yourself if you really have to. Exadata is specialized system dedicated to run Oracle databases – and everything for this sole purpose is already installed. However additional software is often really needed: screen, wget, xauth, cifs-utils, nfs4-acl-tools – are examples of the tools often necessary to maintain Exadata (one might be surprised but even simple screen tool is not included in base Exadata ULN repository)
Oracle allows installation of customer software with some restrictions. You can find them in documentation and also in some support documents:
Installing and updating non-Exadata branded rpms on Exadata database servers are allowed as long as kernel and InfiniBand-specific packages remain untouched.Exadata documentation
Note that customizing the operating system by adding or updating packages may introduce problems when applying an Exadata software update because the additional software may add new dependencies which will not be provided by the Exadata update. For this reason it is recommended to stay close to the Exadata image and customize as little as possible.
You may load additional software on the database servers. However, to ensure best performance, Oracle discourages adding software except for agents, such as backup agents and security monitoring agents, on the database servers.Exadata documentation
Items to consider before installing additional RPMS:Doc ID 1541428.1
1) Customer installed software must not update any Exadata provided packages.
2) Customer is fully responsible for the additional software.
3) Future Exadata Software updates may remove customer installed packages or the upgrades may fail due to customer installed packages.
4) If a customer installed package is needed to be removed as part of an Exadata Software update, the customer is responsible for removal of the package and re-installing, if needed after the upgrade..
NOTE: While this document covers configuring access to the Oracle Public YUM Repository, DO NOT USE yum update with this repository to update an Exadata system. This can lead to severe problems with the system’s operation.Doc ID 2160289.1
Sounds dangerous, doesn’t it? And in reality customer seems to be a bit lost after reading such recommendations. They usually follow last MOS note and connect the system to Oracle Linux 6/7 Latest public repository.
Let’s find out what happen in our case when our node was not upgraded for some time and is based on OL 6.8 (
/etc/oracle-release -> Oracle Linux Server release 6.8), while OL 6.10 is already available and Latest repository contains packages up to this version.
[root@exa01vm03 ~]# cat >>/etc/yum.repos.d/exadata.repo <<EOF [public_ol6_latest] name=Oracle Linux $releasever Latest (\$basearch) baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/\$basearch/ gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6 gpgcheck=1 enabled=1 EOF
Now I can install screen easily:
[root@exa01vm03 ~]# yum list available screen Available Packages screen.x86_64 4.0.3-19.el6 public_ol6_latest [root@exa01vm03 ~]# yum install screen Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package screen.x86_64 0:4.0.3-19.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: screen x86_64 4.0.3-19.el6 public_ol6_latest 494 k Transaction Summary ================================================================================ Install 1 Package(s) Total download size: 494 k Installed size: 795 k Is this ok [y/N]:
I’m not going to confirm that – as I want to get you attention into potential problems you might have when using Latest repository. Case with package screen is very simple because it does not have any dependencies. How about installing something more sophisticated like IPA client:
[root@exa01vm03 ~]# yum install ipa-client Setting up Install Process Resolving Dependencies ... Error: Package: exadata-sun-vm-computenode-exact-184.108.40.206.3.161208-1.noarch (exadata_ol6_base_repo_220.127.116.11.3) Requires: krb5-libs = 1.10.3-57.el6 Removing: krb5-libs-1.10.3-57.el6.x86_64 (installed) krb5-libs = 1.10.3-57.el6 Updated By: krb5-libs-1.10.3-65.el6.x86_64 (public_ol6_latest) krb5-libs = 1.10.3-65.el6 ...
Installation fails on dependencies. There are actually dozens of errors like above and most of them are related to exadata-sun-vm-computenode-exact package (vm appears on virtual db node, on physical node it would be exadata-sun-computenode-exact). This package does not contain any files, its purpose is to protect some original packages installed on Exadata db node from being upgraded to newer version. In the documentation these protected packages are called Oracle Exadata branded packages and after initial installation majority of installed packages are falling into this category.
BTW: there is another package of this kind: exadata-sun-(vm-)computenode-minimum which defines similar dependencies but with “>=” relation – effectively allowing you upgrade (but not delete or downgrade) branded packages to newer versions.
You can find what is protected in this way by running:
[root@exa01vm03 ~]# yum deplist exadata-sun-vm-computenode-exact
The same mechanism protects from accidentally updating all packages using yum update. Attempt to do this – will end with same kind of dependency errors like in my yum install example.
However Oracle allows you to remove this package when you – for some reasons – need to update them anyway (ad-hoc security fixes are one of examples). Lets find out what happens if I do this and attempt to install IPA-client again:
[root@exa01vm03 ~]# yum remove exadata-sun-vm-computenode-exact Setting up Remove Process Resolving Dependencies --> Running transaction check ---> Package exadata-sun-vm-computenode-exact.noarch 0:18.104.22.168.3.161013-1 will be erased --> Finished Dependency Resolution Dependencies Resolved ============================================================================================== Package Arch Version Repository Size ============================================================================================== Removing: exadata-sun-vm-computenode-exact noarch 22.214.171.124.3.161013-1 installed 0.0 Transaction Summary ============================================================================================== Remove 1 Package(s) 20 Installed size: 0 Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Erasing : exadata-sun-vm-computenode-exact-126.96.36.199.3.161013-1.noarch 1/1 Verifying : exadata-sun-vm-computenode-exact-188.8.131.52.3.161013-1.noarch 1/1 Removed: exadata-sun-vm-computenode-exact.noarch 0:184.108.40.206.3.161013-1 Complete! [root@exa01vm03 ~]# yum install ipa-client Setting up Install Process Resolving Dependencies ... Dependencies Resolved ============================================================================================== Package Arch Version Repository Size ============================================================================================== Installing: ipa-client x86_64 3.0.0-51.0.1.el6 public_ol6_latest 152 k Installing for dependencies: ... Updating for dependencies: dbus-libs x86_64 1:1.2.24-9.0.1.el6 public_ol6_latest 126 k krb5-libs x86_64 1.10.3-65.el6 public_ol6_latest 674 k Transaction Summary ============================================================================================== Install 57 Package(s) Upgrade 2 Package(s) Total download size: 17 M Is this ok [y/N]:
Now, I can install newest version of ipa-client on my exadata db node – but notice that dbus-libs and krb5-libs packages will also be updated. And these are part of Exadata branded packages – which means that during next Exadata firmware upgrade – patchmgr will complain about this and probably refuse to carry on until you resolve the problem. More on that in Part 2.
Also, if I attempt to update all packages using yum update command – which as you have read is not supported by Oracle – there is great chance that without exadata-sun-vm-computenode-exact this will succeed.
Of course I will need to confirm this answering final question (y|N) before actual upgrade – but we sometimes do this automatically.
Is there alternative solution?
Personally I prefer using public YUM repository for specific release update for my Exadata firmware version. As I said my compute node is based on OL 6.8. So let’s connect to base repository for Oracle Linux 6 Update 8:
[root@exa01vm03 ~]# cat /etc/oracle-release Oracle Linux Server release 6.8 [root@exa01vm03 ~]# cat >>/etc/yum.repos.d/exadata.repo <<EOF [ol6_u10_x86_64_base] name=Oracle Linux 6 Update 8 installation media copy (x86_64) baseurl=http://yum.oracle.com/repo/OracleLinux/OL6/8/base/x86_64 gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6 gpgcheck=1 enabled=1 EOF
Now let’s disable [public_ol6_latest] i.e. Latest repository in exadata.repo file by changing “enabled=1” to “enabled=0” and reinstall package exadata-sun-vm-computenode-exact-220.127.116.11.3.161013-1.noarch to reinstate protection dependencies. Then let’s install package ipa-client again:
[root@exa01vm03 ~]# rpm -q exadata-sun-vm-computenode-exact exadata-sun-vm-computenode-exact-18.104.22.168.3.161013-1.noarch [root@exa01vm03 ~]# yum repolist repo id repo name status exadata_ol6_base_repo_22.214.171.124.3 Exadata release 126.96.36.199.3 db server installation packages (x86_64) 446 ol6_u8_x86_64_base Oracle Linux 6 Update 8 installation media copy (x86_64) 6,765+2,197 repolist: 7,211 root@exa01vm03 ~]# yum install ipa-client Setting up Install Process Resolving Dependencies ... Dependencies Resolved =========================================================================================================== Package Arch Version Repository Size =========================================================================================================== Installing: ipa-client x86_64 3.0.0-50.el6.1 ol6_u8_x86_64_base 150 k Installing for dependencies: ... Transaction Summary =========================================================================================================== Install 55 Package(s) Total download size: 16 M Installed size: 52 M Is this ok [y/N]:
Of course installed package is not in the newer version – but this is what I wanted to achieve: install additional tool staying as close to my Exadata firmware version as possible.