Oracle Database Free 23c verhindert dnf update

Wenn man die Oracle Datenbank 23c Developer Free Edition (Oracle 23.3) installiert hat, funktioniert – zumindest unter Oracle Linux 8 – kein dnf update mehr. Probiert man es, bekommt man folgende Meldung:

[root@oel8 ~]# dnf update
Failed to set locale, defaulting to C.UTF-8
Oracle Linux 8 BaseOS Latest (x86_64)                                      
Oracle Linux 8 BaseOS Latest (x86_64)                                      
Oracle Linux 8 Application Stream (x86_64)                                 
Oracle Linux 8 Application Stream (x86_64)                                 
Oracle Linux 8 Development Packages (x86_64)                               
Oracle Linux 8 Development Packages (x86_64)                               
Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64) 
Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64) 
Last metadata expiration check: 0:00:14 ago on Sun Jun 16 16:01:39 2024.   
Error:
 Problem: package oracle-database-free-23c-1.0-1.x86_64 requires oracle-database-preinstall-23c, but none of the providers can be installed
  - package oracle-database-preinstall-23ai-1.0-2.el8.x86_64 obsoletes oracle-database-preinstall-23c provided by oracle-database-preinstall-23c-1.0-1.el8.x86_64
  - package oracle-database-preinstall-23ai-1.0-2.el8.x86_64 obsoletes oracle-database-preinstall-23c provided by oracle-database-preinstall-23c-1.0-0.5.el8.x86_64
  - cannot install the best update candidate for package oracle-database-preinstall-23c-1.0-1.el8.x86_64
  - problem with installed package oracle-database-free-23c-1.0-1.x86_64
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

Die Ursache ist folgende: Seit die Version Oracle Datenbank 23ai Free (also 23.4) verfügbar ist, wurde das PreInstall Package oracle-database-preinstall-23c durch oracle-database-preinstall-23ai ersetzt. Wenn dnf das RPM ersetzen möchte, schlägt dies fehl, weil ja oracle-database-free-23c installiert ist und dieses zwingend oracle-database-preinstall-23c benötigt.

Damit dnf update wieder funktioniert, muss man oracle-database-free-23c deinstallieren – doch fangen wir am Anfang an. Zuerst prüfen wir, welche Oracle Datenbank RPMs auf dem Rechner installiert sind:

[root@oel8 ~]# rpm -aq | grep oracle-database
oracle-database-free-23c-1.0-1.x86_64
oracle-database-preinstall-23c-1.0-1.el8.x86_64

Im nächsten Schritt kontrollieren wir, welche Oracle Datenbank RPMs grundsätzlich zur Verfügung stehen:

[root@oel8 ~]# dnf search oracle-database
Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 0:09:45 ago on Sun Jun 16 16:01:39 2024.
======== Name Matched: oracle-database =====================================
oracle-database-free-23c.x86_64 : Oracle 23c Free Database
oracle-database-preinstall-19c.src : Oracle Database Preinstallation RPM
oracle-database-preinstall-19c.x86_64 : Oracle Database Preinstallation RPM
oracle-database-preinstall-21c.src : Oracle Database Preinstallation RPM
oracle-database-preinstall-21c.x86_64 : Oracle Database Preinstallation RPM
oracle-database-preinstall-23ai.src : Oracle Database Preinstallation RPM
oracle-database-preinstall-23ai.x86_64 : Oracle Database Preinstallation RPM
oracle-database-preinstall-23c.x86_64 : Oracle Database Preinstallation RPM
oracle-database-preinstall-23c.src : Oracle Database Preinstallation RPM

Wie man sieht, gibt es das oracle-database-preinstall-23ai sowie das oracle-database-free-23c RPM. Was fehlt ist das oracle-database-free-23ai RPM. Dieses kann man nur über die Oracle Homepage herunter laden.

Sofern man keine Daten in der aktuellen FREE Datenbank hat, kann man diese mit folgenden Schritten löschen:

[root@oel8 ~]# /etc/init.d/oracle-free-23c delete
[root@oel8 ~]# rpm -ev oracle-database-free-23c-1.0-1.x86_64 
[root@oel8 ~]# rpm -ev oracle-database-preinstall-23c-1.0-1.el8.x86_64

Jetzt ist das dnf update wieder möglich:

[root@oel8 ~]# dnf update -y

Im nächsten Schritt benötigt man das korrekte PreInstall RPM und zur Sicherheit installieren wir gleich wget mit, das wir für den Download von Oracle Datenbank 23ai Free benötigten.

[root@oel8 ~]# dnf install -y oracle-database-preinstall-23ai wget

Jetzt kann man die Oracle Datenbank 23ai herunterladen und installieren:

[root@oel8 ~]# wget https://download.oracle.com/otn-pub/otn_software/db-free/oracle-database-free-23ai-1.0-1.el8.x86_64.rpm

[root@oel8 ~]# dnf install -y oracle-database-free-23ai-1.0-1.el8.x86_64.rpm

[root@oel8 ~]# rm oracle-database-free-23ai-1.0-1.el8.x86_64.rpm

Seitens Oracle ist für die Free Edition aktuell keinerlei Patching oder Upgrade vorgesehen.