ODABR - Usage update for the Backup and Restore Utility for Patching Oracle Database Appliances

 ODABR (just like purgelog) is probably familiar to anyone who works with Oracle Database Appliances (ODA) or applies patches to them regularly. Until recently, the odabr tool was downloaded via this link from Oracle Support and installed as a RPM.

Newer versions had to be manually copied to the ODA, and the RPM had to be updated accordingly on the ODA. 

The ODABR tool then allowed users to manually create backups of the system areas and provided the option to restore them or use the backup to reset the system areas.

Presumably, almost everyone used the tool this way before applying the patch: they created a backup as a snapshot using ODABR, and then manually deleted that snapshot using ODABR after applying the patch.

If an error occurred on the ODA during patching, one was able to restore the backup using 'odabr restore --snap' and rebooting the ODA - which restored the system area (in very rare cases where booting was no longer possible, on had to switch to the rescue disk, but that has never happened to me personally) and one had a working ODA again.

Starting with Release 19.30, the odabr backup and restore utility is now an integrated part of the ODA installation itself and is installed automatically.

As one can see this from the log, the system checks whether odabr is already installed on the ODA and, if so, which version is installed.

Log

Since ODABR is now always available on the server, Oracle has also updated the syntax and checks for odacli accordingly.
Starting with version 19.30, when one generates the prepatch report or perform the upgrade for the server components, there is now a new switch which can be used: “-rf” or “--rollback-onfailure.” This switch ensures that the ODABR utility is automatically checked and used during a patch.
So there are now two different approaches: 
The "classical" way:
1. Create an ODABR snapshot manually
2. Precheck and patch the server components
3. Delete the ODABR snapshot manually

The new approach (example with version 19.32.0.2.0) is:
1. odacli create-prepatchreport -sc -v 19.32.0.2.0 -rf 
2. odacli update-servercomponents -v 19.32.0.2.0 -rf

Let's have a look behind the curtain of the jobs and check the job output. 
When generating the prepatch report, the prepatch check may fail while verifying the rollback behavior.


Why did this happen? The image below (details for the Pre-Checks) shows that one has already created the odabr snapshot here (presumably out of habit or as a safety precaution). This causes the check to fail. When running the command with the “-rf” switch, no snapshot should be present.


The manually created snapshot needs to be deleted. Afterwards, the Pre-Checks all succeed. 


If the "-rf" switch was used during the prepatch check, it must also be used when updating the server components! If one misses that, the patching is done without a valid ODABR backup!

Using "-rf", a separate snapshot is created right at the start of the update. 
 

The patching procedure is checking the validity of the snap, which can be found at the log:


After the upgrade has been completed successful, the backup snapshot is deleted automatically and the server reboots a minute later.


This would mean - in theory - a scenario is possible in which an error is only detected AFTER the reboot. However, since the snapshot has already been deleted, a restore would no longer be possible at this stage. With the traditional, manual approach, you can decide for yourself when the snapshot is deleted. Typically, this always happens only after the reboot - nobody deletes a snapshot while the backup job is running (but one could forget to delete the snapshot).

This raises the question of the usefulness of the new switch—who trusts the update mechanism and uses the "-rf" switch, and who is more type "safety first" and sticks with the traditional use of ODABR? Both approaches benefit from the tool's automatic installation. Both approaches are possible, but one should never try to mix them. Use the approach you like and stick on it. If you use "-rf" only on the prepatchreport but don't specify it for the upgrade, you don't have an odabr snapshot!












Housekeeping of Oracle databases - what are PARLOG files?

Part of a DBA’s daily work involves cleaning up logs and anything else on the disks that may not belong there or is no longer needed. With ever-increasing security requirements for systems and increasingly sophisticated monitoring, it naturally stands out when unknown files suddenly appear somewhere and/or remain there longer than expected.

A customer asked us what those PARLOG files were that had been sitting in one of the archive log destination directories for over a week. All backups had actually run smoothly, and the customer couldn’t recall the Recovery Manager ever throwing an error.

Parlog files in archivelog destination

That's why I'd like to shed some light on the matter. 

What are PARLOG files and when are they created?
 

PARLOG files are “partitional (archive) log” files. They are created during hot-clone operations on pluggable databases (PDBs). Like “regular” archive log files, they contain redo data.
However, as the name suggests, they do not contain the complete redo stream that is stored in the archived redo logs. 

The PARLOG files contain only a portion of this data—namely, the portion that is actually required to recover the hot clone in the new CDB. In other words, the portion needed to restore and recover the newly created PDB (a hot clone operation can take hours, depending on the size of the database) to a consistent state.
As a result, they are smaller (over the duration) than normal archived redo log files, which, in a multitenant environment, naturally contain redo data for all PDBs and the CDB.

Normally, you don't see these files at all. Once a clone operation is complete (whether successful or not), they are deleted from the root container. In this case, the hot clone was aborted, and for unknown reasons, the database “forgot” to delete the parlog files.
So what can be done to prevent these files from remaining in the archive log destinations indefinitely?
Since these are (albeit smaller) archived redo log files, one might think they could be managed in Recovery Manager. However, running a “List” command shows nothing. 

catalog start with...

cataloging not possible

An attempt to catalog these redo logs and then delete them fails because the root container does not accept the files as separate archived redo logs (which is understandable, since not all redo data is included). 

As you can see in the Alert.log, the header of these files is different from that of normal archive logs.

The only valid way to remove orphaned Parlog files is therefore to delete them using operating system commands after the process has completed.

Incidentally, the names of the Parlog files are generated by the database itself and cannot be changed, even if the (correct) archived redo logs follow a different naming convention.




Bug: Patching Oracle AI Database 26ai to RU 2 with autoupgrade tool

 Sometimes also the best tools do have some little bug, even if it is typically bullet proof.

The issue today is with autoupgrade tool build version 26.3.260401 from April 2026. If you need to check your version just use

java -jar autoupgrade.jar -version

and you can see your version, build date, etc..

If you try to analyze or patch your existing environment with 

java -jar autoupgrade.jar -patch -config <myconfig.cfg> -analyze
java -jar autoupgrade.jar -patch -config <myconfig.cfg> -deploy 

you will get an error that in the patch directory nothing newer is found. 

If you look into your autoupgrade error log for this patch job, you will find the following messages (followed by a java call error stack):

*Validating Oracle Patch files
An Oracle newer Release Update file for database is not found in <patch-directory> for the job with prefix <patch1>

 - Bootstrap.processCLIParams#83 

oracle.commonx.utils.errors.ConfigurationError: 

There were conditions found preventing AutoUpgrade Patching from successfully running
*Validating Oracle Patch files
An Oracle newer Release Update file for database is not found in  <patch-directory> for the job with prefix <patch1>

Unfortunately, the previous 26 version of the autoupgrade tool throws the same error. If you want to step back to the last autoupgrade versions 25 - this will not work. They will all throw the same message:

AutoUpgrade Patching has derived the version for prefix <patch1> as [23.26.1.0.0]. AutoUpgrade Patching currently only supports the following major versions: [19].

The bug is known to Oracle and they will fix it. I think the next version will follow soon (as the last one is from April 2026), maybe in the next days.

Until then, as a workaround, you need to download the patches first (you can use analyze mode until it throws the error or the download mode).
If the patches are available in the staging directory you must create the new home first:
java -jar autoupgrade.jar -patch -config myconfig.cfg -mode create_home

Afterwards, analyze the source database, run the fixups and deploy (without -patch):
java -jar autoupgrade.jar -config myconfig.cfg -mode analyze
java -jar autoupgrade.jar -config myconfig.cfg -mode fixups
java -jar autoupgrade.jar -config myconfig.cfg -mode deploy

This should do it. 
I will update the post as soon as the new autoupgrade version is available.


Oracle Enterprise Manager Cloud Control 13.5 Installation on Oracle Linux 9 (9.7) raises libclntshcore.so.12.1 No such file or directory

 To test an upgrade from an existing Oracle Enterprise Manager Cloud Control 13.5 to 24ai, I've installed in our lab environment a fresh Oracle Enterprise Edition Database on Oracle Enterprise Linux 9 (with the latest dnf update it is a 9.7). 


As 13.5 is supported and certified on Oracle Enterprise Linux 9 and Red Hat Linux 9 from Release Update (RU) 22 on, I followed the following note EM 13.5: Steps To Install OMS 13.5 On RHEL/OL 9. I've ensured that all gcc, glib-devel, etc. things are installed, as this is NOT checked within the prerequisite checks of the installer. One package is not available in Linux 9 (compat-libpthread-nonshared-2.28-225.el8.x86_64) - I come to this a little bit later.

To install the 13.5 EMCC on Linux 9 means to make a software only installation first, patching omspatcher and opatch and afterwards install the three java patches and on top the RU29, using the bitonly option (and ignoring the warning about metadata). As far, as good. 

When everything is patched, one can start the Configuration, in my environment I needed to run the /u01/app/oracle/product/em135/sysman/install/ConfigureGC.sh script. 

This works well, unless the point where the OMS should be started.  Then you will run in an error. 



Well, I was aware, that this can happen, because of the missing package in Linux 9. Another Oracle Note exists telling us, what to do in that case: EM13c: 13.5 OMS Installation on RHEL/OL9 Fails at OMS Start "libclntshcore.so.12.1: cannot open shared object file". 

So I downloaded the patch 35775632, extracted the stubs tar and re-run /u01/app/oracle/product/em135/bin/genclntsh - everything went well. 



I re-tried the Start Oracle Management Service in the Installer UI, but I've got the same error. (If you need to look into the logfiles, try to start the OMS manually with emctl start oms - you will get an output of the location of the logfiles. don't forget to stop the OMS with emctl stop oms later, before you retry to start it with the installation UI)


Checking for the existence of the libclntshcore.so.12.1 (or any links), I've found one at the agents lib directory (which was installed together with the Oracle Management Server automatically). I needed to copy that to the lib directories /u01/app/oracle/product/em135/lib AND to the OHS lib directory. This is NOT mentioned in the Oracle Support KB!


After doing so, I was able to re-run the start process at the UI and now the Enterprise Manager Cloud Control 13.5 on Oracle Linux 9 is up and running.