Upgrade Unbreakable Enterprise Kernel (UEK) from UEKR3 to UEKR5 on Oracle Linux 7

Before proceeding with the upgrading steps, we just record down what we are having in current Oracle Linux 7.

Server Release Version: 7.2
UEK Release: ol7_UEKR3
ol7_addons repository for various addons such as Docker Engine
ol7_latest repository for the latest releases of OL7 core packages
PostgreSQL 9.6

[root@racnode1 ~]# cat /etc/system-release
Oracle Linux Server release 7.2
[root@racnode1 ~]# yum repolist
Loaded plugins: ulninfo
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
repo id                         repo name                                   status
!ksplice-uptrack/7Server/x86_64 Ksplice Uptrack for OL                         16
!ol7_UEKR3/x86_64               Latest Unbreakable Enterprise Kernel 
                                Release 3 for Oracle Linux 7Server (x86_64)   912
!ol7_addons/x86_64              Oracle Linux 7Server Add ons (x86_64)         340
!ol7_latest/x86_64              Oracle Linux 7Server Latest (x86_64)       13,211
!pgdg96/7Server/x86_64          PostgreSQL 9.6 7Server - x86_64               875
repolist: 15,354
[root@racnode1 ~]#

Update yum repository files from http://yum.oracle.com/public-yum-ol7.repo which contains the latest repositories information. Make sure to put into the right directory where yum expects it, which is /etc/yum.repos.d/:

[root@racnode1 yum.repos.d]# cd /etc/yum.repos.d
[root@racnode1 yum.repos.d]# ls -ltr
total 16
-rw-r--r-- 1 root root 191 Sep 2 2011 ksplice-uptrack.repo
-rw-r--r-- 1 root root 2560 Nov 20 2015 public-yum-ol7.repo.rpmnew
-rw-r--r-- 1 root root 2323 Nov 28 2015 public-yum-ol7.repo
-rw-r--r-- 1 root root 1012 Sep 21 2016 pgdg-96-redhat.repo
[root@racnode1 yum.repos.d]# wget http://yum.oracle.com/public-yum-ol7.repo
--2020-01-06 11:35:37-- http://yum.oracle.com/public-yum-ol7.repo
Resolving yum.oracle.com (yum.oracle.com)... 104.116.170.250
Connecting to yum.oracle.com (yum.oracle.com)|104.116.170.250|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 16402 (16K) [text/plain]
Saving to: ‘public-yum-ol7.repo.1’

2020-01-06 11:35:51 (646 KB/s) - ‘public-yum-ol7.repo.1’ saved [16402/16402]

The new file is named as “public-yum-ol7.repo.1”, so we have to make a backup for the old one, and rename the new one to old one:

[root@racnode1 yum.repos.d]# ls -ltr public-yum-ol7.repo*
-rw-r--r-- 1 root root 2560 Nov 20 2015 public-yum-ol7.repo.rpmnew
-rw-r--r-- 1 root root 2323 Nov 28 2015 public-yum-ol7.repo
-rw-r--r-- 1 root root 16402 Aug 26 23:57 public-yum-ol7.repo.1
[root@racnode1 yum.repos.d]# mv public-yum-ol7.repo public-yum-ol7.repo.bak
[root@racnode1 yum.repos.d]# mv public-yum-ol7.repo.1 public-yum-ol7.repo
[root@racnode1 yum.repos.d]#

Enable the new repository, and also disable the old one accordingly. Install yum-utils if it has not been, otherwise “yum-config-manager” will not be found.

[root@racnode1 yum.repos.d]# yum-config-manager --enable ol7_UEKR5
-bash: yum-config-manager: command not found


[root@racnode1 yum.repos.d]# yum install yum-utils
...
..
.
Complete!
[root@racnode1 yum.repos.d]#
[root@racnode1 yum.repos.d]# yum-config-manager --enable ol7_UEKR5
===== repo: ol7_UEKR5 =============================================
[ol7_UEKR5]
async = True
bandwidth = 0
base_persistdir = /var/lib/yum/repos/x86_64/7Server
baseurl = https://yum.oracle.com/repo/OracleLinux/OL7/UEKR5/x86_64/
cache = 0
cachedir = /var/cache/yum/x86_64/7Server/ol7_UEKR5
check_config_file_age = True
compare_providers_priority = 80
cost = 1000
deltarpm_metadata_percentage = 100
deltarpm_percentage =
enabled = True
enablegroups = True
exclude =
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/x86_64/7Server/ol7_UEKR5/gpgcadir
gpgcakey =
gpgcheck = True
gpgdir = /var/lib/yum/repos/x86_64/7Server/ol7_UEKR5/gpgdir
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
hdrdir = /var/cache/yum/x86_64/7Server/ol7_UEKR5/headers
http_caching = all
includepkgs =
ip_resolve =
keepalive = True
keepcache = False
mddownloadpolicy = sqlite
mdpolicy = group:small
mediaid =
metadata_expire = 21600
metadata_expire_filter = read-only:present
metalink =
minrate = 0
mirrorlist =
mirrorlist_expire = 86400
name = Latest Unbreakable Enterprise Kernel Release 5 for Oracle Linux 7
       Server (x86_64)
old_base_cache_dir =
password =
persistdir = /var/lib/yum/repos/x86_64/7Server/ol7_UEKR5
pkgdir = /var/cache/yum/x86_64/7Server/ol7_UEKR5/packages
proxy = False
proxy_dict =
proxy_password =
proxy_username =
repo_gpgcheck = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert =
sslclientcert =
sslclientkey =
sslverify = True
throttle = 0
timeout = 30.0
ui_id = ol7_UEKR5/x86_64
ui_repoid_vars = releasever,
basearch
username =
[root@racnode1 yum.repos.d]#
[root@racnode1 yum.repos.d]# yum-config-manager --disable ol7_UEKR3
==================== repo: ol7_UEKR3 ===========================
[ol7_UEKR3]
async = True
bandwidth = 0
base_persistdir = /var/lib/yum/repos/x86_64/7Server
baseurl = https://yum.oracle.com/repo/OracleLinux/OL7/UEKR3/x86_64/
cache = 0
cachedir = /var/cache/yum/x86_64/7Server/ol7_UEKR3
check_config_file_age = True
compare_providers_priority = 80
cost = 1000
deltarpm_metadata_percentage = 100
deltarpm_percentage =
enabled = False
enablegroups = True
exclude =
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/x86_64/7Server/ol7_UEKR3/gpgcadir
gpgcakey =
gpgcheck = True
gpgdir = /var/lib/yum/repos/x86_64/7Server/ol7_UEKR3/gpgdir
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
hdrdir = /var/cache/yum/x86_64/7Server/ol7_UEKR3/headers
http_caching = all
includepkgs =
ip_resolve =
keepalive = True
keepcache = False
mddownloadpolicy = sqlite
mdpolicy = group:small
mediaid =
metadata_expire = 21600
metadata_expire_filter = read-only:present
metalink =
minrate = 0
mirrorlist =
mirrorlist_expire = 86400
name = Latest Unbreakable Enterprise Kernel Release 3 for Oracle Linux 7Server (x86_64)
old_base_cache_dir =
password =
persistdir = /var/lib/yum/repos/x86_64/7Server/ol7_UEKR3
pkgdir = /var/cache/yum/x86_64/7Server/ol7_UEKR3/packages
proxy = False
proxy_dict =
proxy_password =
proxy_username =
repo_gpgcheck = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert =
sslclientcert =
sslclientkey =
sslverify = True
throttle = 0
timeout = 30.0
ui_id = ol7_UEKR3/x86_64
ui_repoid_vars = releasever,
basearch
username =

[root@racnode1 yum.repos.d]# yum repolist
Loaded plugins: ulninfo
repo id                        repo name                      status
ksplice-uptrack/7Server/x86_64 Ksplice Uptrack for OL 16
ol7_UEKR5/x86_64      Latest Unbreakable Enterprise Kernel Release 5
                      for Oracle Linux Server (x86_64)           193
ol7_latest/x86_64     Oracle Linux 7Server Latest (x86_64)    16,060
pgdg96/7Server/x86_64 PostgreSQL 9.6 7Server - x86_64          1,198
repolist: 17,467
[root@racnode1 yum.repos.d]#

We can see ol7_addons repository is not enabled by default. so we have to enable it manually by :

[root@racnode1 yum.repos.d]# yum-config-manager --enable ol7_addons
[root@racnode1 yum.repos.d]# yum repolist
Loaded plugins: ulninfo
repo id                         repo name                      status
ksplice-uptrack/7Server/x86_64  Ksplice Uptrack for OL             16
ol7_UEKR5/x86_64         latest Unbreakable Enterprise Kernel 
                   Release 5for Oracle Linux 7Server (x86_64)     193
ol7_addons/x86_64  Oracle Linux 7Server Add ons (x86_64)          340
ol7_latest/x86_64  Oracle Linux 7Server Latest (x86_64)        16,060
pgdg96/7Server/x86_64 PostgreSQL 9.6 7Server - x86_64           1,198
repolist: 17,807
[root@racnode1 yum.repos.d]#

Upgrade now with yum upgrade option, which will delete the old packages. Otherwise use ‘update’ option to keep the old packages.

[root@racnode1 yum.repos.d]# yum upgrade
Loaded plugins: ulninfo
Resolving Dependencies
-> Running transaction check
->Package NetworkManager.x86_64 1:1.0.6-27.0.1.el7 will be obsoleted
->Package NetworkManager.x86_64 1:1.18.0-5.el7_7.1 will be obsoleting
...

...

Updating : libuser-0.60-9.el7.x86_64 180/733
Updating : postgresql96-libs-9.6.16-2PGDG.rhel7.x86_64 181/733
Updating : passwd-0.79-5.el7.x86_64 182/733
Updating : curl-7.29.0-54.0.1.el7_7.1.x86_64 183/733

IMPORTANT: A legacy Oracle Linux yum server repo file was found. 
Oracle Linux yum server repository configurations have changed which 
means public-yum-ol7.repo will no longer be updated. New repository 
configuration files have been installed but are disabled. 
To complete the transition, run this script as the root user:

/usr/bin/ol_yum_configure.sh

See https://yum.oracle.com/faq.html for more information.

Installing : oraclelinux-release-el7-1.0-8.el7.x86_64 184/733
Updating : gnupg2-2.0.22-5.el7_5.x86_64 185/733
Updating : rhn-client-tools-2.0.2-24.0.7.el7.x86_64

...
..
.

Complete!

Execute below command as per upgrade warning messages:

[root@racnode1 yum.repos.d]# /usr/bin/ol_yum_configure.sh
Repository ol7_UEKR5 already enabled
Repository ol7_addons already enabled
Repository ol7_latest already enabled
[root@racnode1 yum.repos.d]# yum list installed kernel-uek
Loaded plugins: ulninfo
Installed Packages
kernel-uek.x86_64 3.8.13-55.1.6.el7uek @anaconda/7.1
kernel-uek.x86_64 3.8.13-118.2.1.el7uek @ol7_UEKR3
kernel-uek.x86_64 4.14.35-1902.8.4.el7uek @ol7_UEKR5
[root@racnode1 yum.repos.d]#

Reboot the server, and check the upgrading is successful.

[root@racnode1 yum.repos.d]# reboot
login as: root
root@192.168.78.51's password:
Last login: Mon Jan 6 11:03:51 2020 from 192.168.78.1
[root@racnode1 ~]# uname -r
4.14.35-1902.8.4.el7uek.x86_64
[root@racnode1 ~]# cat /etc/system-release
Oracle Linux Server release 7.7
[root@racnode1 ~]#

Uninstall the old kernel(s)

[root@racnode1 ~]# yum list installed kernel*
Loaded plugins: ulninfo
Installed Packages
kernel.x86_64              3.10.0-229.el7            @anaconda/7.1
kernel.x86_64              3.10.0-327.el7            @ol7_latest
kernel.x86_64              3.10.0-1062.9.1.el7       @ol7_latest
kernel-devel.x86_64        3.10.0-229.el7            @ol7_latest
kernel-devel.x86_64        3.10.0-327.el7            @ol7_latest
kernel-devel.x86_64        3.10.0-1062.9.1.el7       @ol7_latest
kernel-headers.x86_64      3.10.0-1062.9.1.el7       @ol7_latest
kernel-tools.x86_64        3.10.0-1062.9.1.el7       @ol7_latest
kernel-tools-libs.x86_64   3.10.0-1062.9.1.el7       @ol7_latest
kernel-uek.x86_64          3.8.13-55.1.6.el7uek      @anaconda/7.1
kernel-uek.x86_64          3.8.13-118.2.1.el7uek     @ol7_UEKR3
kernel-uek.x86_64          4.14.35-1902.8.4.el7uek   @ol7_UEKR5
kernel-uek-devel.x86_64    3.8.13-118.2.1.el7uek     @ol7_UEKR3
kernel-uek-devel.x86_64    4.14.35-1902.8.4.el7uek   @ol7_UEKR5
kernel-uek-firmware.noarch 3.8.13-55.1.6.el7uek      @anaconda/7.1
kernel-uek-firmware.noarch 3.8.13-118.2.1.el7uek     @ol7_UEKR3

kernel.x86_64,  3.8.13 and 3.10.0  are no longer required, so they can be deleted. YUM will skip the currently running kernel, so we can use below command to uninstall the unwanted kernels.

[root@racnode1 ~]# yum remove kernel*
[root@racnode1 ~]# yum list installed kernel*
Loaded plugins: ulninfo
Installed Packages
kernel-uek.x86_64 4.14.35-1902.8.4.el7uek @ol7_UEKR5
[root@racnode1 ~]#

Reconfigure ASMLIB after Unbreakable Enterprise Kernel (UEK) Upgraded from UEKR3 to UEKR5 on Oracle Linux 7

After unbreakable enterprise kernel (UEK) is upgraded from release 3 to release 5 on Oracle Linux 7,  the oracle asm is not working well:

[root@racnode1 ~]# oracleasm listdisks
[root@racnode1 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
Instantiating disk "ASM_DISK1"
Unable to instantiate disk "ASM_DISK1"
Instantiating disk "ASM_DISK2"
Unable to instantiate disk "ASM_DISK2"
Instantiating disk "ASM_DISK3"
Unable to instantiate disk "ASM_DISK3"
Instantiating disk "ASM_DISK4"
Unable to instantiate disk "ASM_DISK4"
Instantiating disk "ASM_DISK5"
Unable to instantiate disk "ASM_DISK5"
Instantiating disk "ASM_DISK6"
Unable to instantiate disk "ASM_DISK6"
Instantiating disk "ASM_DISK7"
Unable to instantiate disk "ASM_DISK7"
Instantiating disk "ASM_OCR_VOTE"
Unable to instantiate disk "ASM_OCR_VOTE"
[root@racnode1 ~]# oracleasm listdisks

Check oracleasm packages , and found there are one or two are missing:

[root@racnode1 ~]# rpm -qa|grep -i oracleasm
oracleasm-support-2.1.11-2.el7.x86_64
[root@racnode1 ~]#

The Oracle ASMLib kernel driver is now included in the Unbreakable Enterprise Kernel. No driver package needs to be installed when using this kernel.

Check Oracle ASMLib kernel driver has been installed.

[root@racnode1 ~]# lsmod|grep asm
oracleasm              61440  1

[root@racnode1 ~]# modinfo oracleasm
filename:       /lib/modules/4.14.35-1902.8.4.el7uek.x86_64/kernel/drivers/block/oracleasm/oracleasm.ko.xz
description:    Kernel driver backing the Generic Linux ASM Library.
author:         Joel Becker, Martin K. Petersen <martin.petersen@oracle.com>
version:        2.0.8
license:        GPL
srcversion:     DF8809442FB655948FEC227
depends:
retpoline:      Y
intree:         Y
name:           oracleasm
vermagic:       4.14.35-1902.8.4.el7uek.x86_64 SMP mod_unload modversions
signat:         PKCS#7
signer:
sig_key:
sig_hashalgo:   md4
parm:           use_logical_block_size:Prefer logical block size over physical (Y=logical, N=physical [default]) (bool)
[root@racnode1 ~]#

For RHEL linux, install  kmod-oracleasm package:

[root@racnode1 ~]# yum install kmod-oracleasm

Download and install oracleasmlib-2.0.12-1.el7.x86_64.rpm package from below url, if it is unavailable.

https://www.oracle.com/linux/downloads/linux-asmlib-v7-downloads.html

Check the required packages are all available now:

[root@racnode1 ~]# rpm -qa|grep -i oracleasm
oracleasmlib-2.0.12-1.el7.x86_64
oracleasm-support-2.1.11-2.el7.x86_64
kmod-oracleasm-2.0.8-26.0.1.el7.x86_64 ( for RHEL )

Configure ASM

[root@racnode1 ~]# oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface [grid]:
Default group to own the driver interface [oinstall]:
Start Oracle ASM library driver on boot (y/n) [y]:
Scan for Oracle ASM disks on boot (y/n) [y]:
Writing Oracle ASM library driver configuration: done
[root@racnode1 ~]#

Re-initialize oracleasm:

[root@racnode1 sysconfig]# oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Configuring "oracleasm" to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm

Scan and list ASM disks:

[root@racnode1 sysconfig]# oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes


[root@racnode1 sysconfig]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
Instantiating disk "ASM_DISK1"
Instantiating disk "ASM_DISK2"
Instantiating disk "ASM_DISK3"
Instantiating disk "ASM_DISK4"
Instantiating disk "ASM_DISK5"
Instantiating disk "ASM_DISK6"
Instantiating disk "ASM_DISK7"
Instantiating disk "ASM_OCR_VOTE"


[root@racnode1 sysconfig]# oracleasm listdisks
ASM_DISK1
ASM_DISK2
ASM_DISK3
ASM_DISK4
ASM_DISK5
ASM_DISK6
ASM_DISK7
ASM_OCR_VOTE