Hi everyone,

Hope you’re doing good.

Before we go to the subject of this blog post, let me explain why the post have the #JoelKallmanDay tag!

Since 2016, Oracle Community have a day where we push out content on the same day and try to get a community buzz! This is organized by Tim Hall from Oracle Base!

The name has changed in 2021 to “Joel Kallman Day” to honor everything Joel Kallman did for the community!

You can read it more here:

https://oracle-base.com/blog/2023/10/01/joel-kallman-day-2023-announcement/

OK, let’s go!

Some time ago, I blogged showing how to Update OEM, you can check it here: How to Update Oracle Enterprise Manager from 13.5.0.9 to 13.5.0.16

OK, the environment that I used to create that blog post it’s our Non-Prod environment (DEV, QA and Training environments).

Last week I applied the same patch into OEM Prod (another Data Center), which monitors Pre-Prod, Prod and DR environments, DR databases are in same Data Center as “Non-Prod” environment, but OEM Prod monitor the DR environments as they are part of Prod environment in the DataGuard configuration.

One of the tasks before we apply the patch into OEM is to run omspatcher with the flag analyze to check if everything is fine.

With the user which is the OEM owner (output is truncated):

omspatcher apply -analyze -property_file /home/oraoem/property_file


Prereq “checkComponents” for patch 35258570 passed.

Prereq “checkComponents” for patch 34601404 passed.

Prereq “checkComponents” for patch 35122519 passed.

Prereq “checkComponents” for patch 35258589 passed.

Prereq “checkComponents” for patch 35258598 passed.

Prereq “checkComponents” for patch 35258702 passed.

The software library location /u01/app/library/ is empty.
Please follow the steps in the Document ID 2924633.1 and restore the software library. Retry the patching after the software library is reconfigured.

OK, before go to the Document ID 2924633.1, I did some checks into our OEM configuration.

So, I’ve listed our software library:

emcli login -username=sysman
Enter password

Login successful

emcli list_swlib_storage_locations

default_loc, /u04/app/oracle/product/swlib/, Active
library, /u01/app/library/, Active
swlib_loc, /u01/app/library_new/, Active

We can see here three software library locations:

NamePathStatus
default_loc/u04/app/oracle/product/swlib/Active
library/u01/app/library/Active
swlib_loc/u01/app/library_new/Active

I am pretty sure that the first one, default_loc, is the right one. So, I did a double check listing the content of the first location (output is truncated):

ls -l /u04/app/oracle/product/swlib

total 292
drwxr-x—. 2 oraoem oinstall 4096 Oct 7 2022 0
drwxr-x—. 2 oraoem oinstall 4096 Oct 8 2022 1
drwxr-x—. 2 oraoem oinstall 4096 Jun 23 2021 10
drwxr-x—. 2 oraoem oinstall 4096 Oct 7 2022 11
drwxr-x—. 2 oraoem oinstall 4096 Oct 7 2022 12

I did the same check for the another two locations, and they were empty indeed:

ls -l /u01/app/library/

total 0

ls -l /u01/app/library_new/

total 0

So, the solution here is easy, we don’t have to be afraid to remove the empty software library locations.

But, we cannot simply remove the software library locations from OEM. We need to specify an alternate storage location where the “existing” files of the software library to be removed will be migrated to this alternate location.

In our case, we do know that software library location is empty, so, no file will be migrated. Anyway, is mandatory to specify an alternate location and OEM also will create a job to “move” those files. Again, in our case, no file will be moved as the location is empty.

So, keep in mind that we are going to remove two software library locations, and only the default_loc will remain active into our OEM configuration.

With that said, let’s proceed removing both software locations:

emcli remove_swlib_storage_location -name=”library” -migrate_to_loc=”default_loc” -type=”OmsShared”

Job ‘MigrateEntityFiles_1696286095483’ has been successfully submitted for migrating the files. The location ‘library’ will be removed on successful execution of the job. You can see the detail of the job execution by navigating to Enterprise -> Jobs -> Activity page.

emcli remove_swlib_storage_location -name=”swlib_loc” -migrate_to_loc=”default_loc” -type=”OmsShared”


Job ‘MigrateEntityFiles_1696286123601’ has been successfully submitted for migrating the files. The location ‘swlib_loc’ will be removed on successful execution of the job. You can see the detail of the job execution by navigating to Enterprise -> Jobs -> Activity page.

Checking now our software library locations:

emcli list_swlib_storage_locations

default_loc, /u04/app/oracle/product/swlib/, Active

You can read about the command to remove the software library locations below:

remove_swlib_storage_location

Perfect! Now we have only the default_loc active. Let’s execute again the omspatcher with analyze flag (output is truncated):

omspatcher apply -analyze -property_file /home/oraoem/property_file

Prereq “checkComponents” for patch 35258570 passed.

Prereq “checkComponents” for patch 34601404 passed.

Prereq “checkComponents” for patch 35122519 passed.

Prereq “checkComponents” for patch 35258589 passed.

Prereq “checkComponents” for patch 35258598 passed.

Prereq “checkComponents” for patch 35258702 passed.

Configuration Validation: Success


Running apply prerequisite checks for sub-patch(es) “35258598,35258570,35258589,35258702,35122519,34601404” and Oracle Home “/u04/app/oracle/product/OEM_135″…
Sub-patch(es) “35258598,35258570,35258589,35258702,35122519,34601404” are successfully analyzed for Oracle Home “/u04/app/oracle/product/OEM_135”

Great!

After this we were able to proceed with omspatcher update with no issues!

Hope this helps!

Peace,

Vinicius