oemdba – blogs about OEM and more

Oracle Enterprise Manager – SYSMAN is my best friend 😉

Blog-Bild

Author: Birgit

  • DOAG Database & Cloud Infrastructure Conference 2026 in Soltau – My Highlights

    From ACE dinner to technical sessions and great conversations — a look back at two fully packed days.

    On Monday and Tuesday, the DOAG Database & Cloud Infrastructure 2016 conference took place at Heide Park Soltau — and it didn’t disappoint.
    Two packed days full of very good presentations, interesting news, and, most importantly, great conversations. 😉

    In this blog, I would like to share my impressions and talk about the presentations I attended.

    Sunday – ACE Community and Networking

    On Sunday evening, I was invited to the Oracle ACE community dinner — great people, a fantastic dinner, and, as always, good conversations with other ACEs.
    Afterwards, the evening continued with a “come-together,” where participants and speakers gathered for a drink and extended their discussions around AI, databases, cloud, and many other topics.

    Oracle ACE dinner at DOAG database & cloud infrastructure 2026 at heide Park Soltau

    Monday – AI, High Availability, and My Presentation

    After this great start on Sunday evening, Monday began with the official opening of the two conferences — DOAG Database and Cloud Infrastructure, as well as APEX Connect — by Christian Trieb, Philipp Berg, and Niels de Bruijn.

    I started the day with Patrick Agreiter’s session “Smart Home, smart TV, smart car… und warum sprechen Sie nicht zu Ihrer DB?
    It was an interesting introduction to the idea of talking directly to your database using the right AI model.
    What I particularly liked was seeing how text can be transformed into SQL queries — and vice versa.

    Next up was “Automatische Quasi-Standby mit SE2” by Kersten Bühnert.
    Kersten gave a practical walkthrough of how to create a refreshable PDB and use it as a kind of standby database in Oracle Standard Edition.
    He didn’t just show the happy path but also highlighted typical pitfalls and errors you might run into in real-life scenarios.

    After that, I took a longer break — first because I wanted to have lunch, and second because I always get a bit nervous before my own presentations and need a moment to step away.

    At 2 p.m., it was my turn:
    Standby-Datenbanken manuell oder mit Enterprise Manager erstellen
    From my perspective, it went well — but the evaluation is up to the attendees 😉

    Me at my own presentation

    Once I had finished my presentation, I could finally relax and enjoy the remaining sessions.

    I joined Markus Michalewicz’s talk on
    Die wichtigsten Oracle AI Database Hochverfügbarkeits-Funktionen im Überblick
    It was a great presentation with useful insights into MAA and the new Platinum level.

    After that, I attended Stefan Oehrli’s session
    Oracle Database 26ai On-Premises: New Security Features – Insights & Demos
    He gave a good overview of SQL Firewall, as well as new roles and privilege concepts.
    One of my favorite features is the ability to grant read access, for example, to all existing and future tables in a database schema.

    I then followed him to his next session,
    Einstieg in Oracle Database Multi-Factor Authentication (MFA)
    He explained what is already possible today, how it works, and in which scenarios MFA really makes sense.

    My last session of the day was Daniel Bollinger’s talk on
    Linux-based high availability for the Standard Edition with DRBD and Corosync
    It provided a solid overview of how to build such a setup and what steps are required to implement a reliable environment without Enterprise Edition features.

    After such a long and intense day, I was more than ready for a cold beer — and the Oracle-sponsored happy hour delivered exactly what was needed. Thanks for that!

    The evening continued with dinner, which was really good, and some great conversations with my colleagues.

    We briefly stopped by the silent disco — just to have a look — but not for too long. At some point, it was simply time to call it a day.

    Tuesday – Technical stuff

    The second day of the DOAG Database and Cloud Infrastructure conference started with Connor McDonald’s session “The Innovation Continues – More 26ai Features, More 100% Demo, Zero Slides.”
    It is always worth attending his sessions. This time, he presented new features for both developers and DBAs.
    And no matter which feature he talks about, his presentations are always interesting and entertaining.

    In Hervé Schweiter’s session “Secure Your Sensitive Data and Sleep Well” I got a good overview of data masking and how it can help secure your data — especially in test and development environments.

    Next up was
    Ein Bild sagt mehr als 1000 Zeilen – Oracle AWR mit PowerShell visualisieren” by Andreas Jordan.
    He explained which AWR data can be used to visualize performance metrics using PowerShell and Excel. The session focused more on the theoretical aspects, but provided useful insights.

    Then it was time for lunch — the perfect moment to meet colleagues and talk about the sessions attended so far.

    After lunch, I once again joined Markus Michalewicz’s session “Oracle AI Database 26ai On-Premises – Was Sie jetzt wissen müssen
    As always, he talked about the latest features and showed how Oracle is evolving by opening up and offering more possibilities compared to other databases.

    In my next session, “Upgrades mit dem Dampfhammer: Wenn Ansible und AutoUpgrade aufräumen
    by Martin Berger,
    I learned more about AutoUpgrade and how to automate upgrade processes using Ansible.
    His talk definitely encouraged me to take a closer look at AutoUpgrade — such a great tool! 😉

    After that, I needed a longer break — so many impressions, ideas, and new topics to process.
    So I treated myself to some ice cream and took a moment to relax in the sun.

    My last session, “OCI-Monitoring in der Entsorgungsbranche – ein Praxisbericht” by Nicole Cochems and Johannes Michler, showed the decision-making process behind choosing the right monitoring tool for a complex environment both in OCI and on-premis.
    It was a good session with real-world insights.

    Wrapping up two interesting days in Soltau

    After two intensive and inspiring days, it was time to head back home.

    Looking back, the DOAG Database and Cloud Infrastructure conference was once again a great mix of technical insights, new ideas, and, most importantly, conversations with the community.
    Events like this always remind me how strong and supportive the Oracle community is.

    I’m already looking forward to the next DOAG conference — and to seeing many familiar (and new) faces again.

  • Upgrade Grid Infrastructure 19.28 to 26.1 – Secure Boot Pitfall

    In one of my previous posts , I wrote about the installation of Grid Infrastructure 19c and some issues with the CSSD daemon.
    After fixing those problems, I decided to test an upgrade to Oracle 26ai — focusing solely on the Grid Infrastructure.

    Normally, an upgrade of the Grid Infrastructure is not a big thing, so I went ahead with it.

    Initial upgrade attempt

    First of all, I created all necessary directories for the software and unzipped the binaries into them.
    I started the installer and followed the instructions.

    First step of Oracle Grid Infrastructure 26ai installer with "upgrade Oracle Grid Infrastructure" option selected.
    Second step of Oracle Grid Infrastructure 26ai installer with nothing selected
    Step 3 of the Oracle Grid Infrastructure 26ai installer with Oracle Base specified.
    Step 4 of the Oracle Grid Infrastructure 26ai installer without selection of "Automatically run configuration scripts"
    Step 5 of the Oracle Grid Infrastructure 26ai installer with the results of the prerequisite checks.

    I installed compat-openssl11, and I ignored the other both warning.

    Step 7 of the Oracle Grid Infrastructure 26ai installer showing the installation progress
    An important step in he Oracle Grid Infrastructure 26ai installer prompting to run the rootupgrade.sh script

    Nothing unexpected so far, but when I ran rootupgrade.sh as user root, I encountered an error close to the end.

    [root@bardg01 ~]$  /u01/app/26.1/grid/rootupgrade.sh
    Performing root user operation.
    
    The following environment variables are set as:
        ORACLE_OWNER= grid
        ORACLE_HOME=  /u01/app/26.1/grid
    
    Enter the full pathname of the local bin directory: [/usr/local/bin]:
    The contents of "dbhome" have not changed. No need to overwrite.
    The file "oraenv" already exists in /usr/local/bin.  Overwrite it? (y/n)
    [n]:
    The file "coraenv" already exists in /usr/local/bin.  Overwrite it? (y/n)
    [n]:
    
    Entries will be added to the /etc/oratab file as needed by
    Database Configuration Assistant when a database is created
    Finished running generic part of root script.
    Now product-specific root actions will be performed.
    Executing command '/u01/app/26.1/grid/perl/bin/perl -I/u01/app/26.1/grid/perl/lib -I/u01/app/26.1/grid/crs/install /u01/app/26.1/gr                              id/crs/install/roothas.pl  -upgrade'
    Using configuration parameter file: /u01/app/26.1/grid/crs/install/crsconfig_params
    The log of current session can be found at:
      /u01/app/grid/crsdata/bardg01/crsconfig/roothas_2026-04-28_02-52-43PM.log
    2026/04/28 14:52:44 CLSRSC-595: Executing upgrade step 1 of 11: 'UpgPrechecks'.
    acfsutil info fs: ACFS-03036: no mounted ACFS file systems
    2026/04/28 14:52:47 CLSRSC-595: Executing upgrade step 2 of 11: 'GetOldConfig'.
    2026/04/28 14:52:50 CLSRSC-595: Executing upgrade step 3 of 11: 'GenSiteGUIDs'.
    2026/04/28 14:52:50 CLSRSC-595: Executing upgrade step 4 of 11: 'SetupOSD'.
    2026/04/28 14:52:50 CLSRSC-595: Executing upgrade step 5 of 11: 'PreUpgrade'.
    2026/04/28 14:53:02 CLSRSC-595: Executing upgrade step 6 of 11: 'UpgradeOLR'.
    clscfg: EXISTING configuration version 0 detected.
    Creating OCR keys for user 'grid', privgrp 'oinstall'..
    Operation successful.
    2026/04/28 14:53:06 CLSRSC-595: Executing upgrade step 7 of 11: 'UpgradeOCR'.
    LOCAL ONLY MODE
    Successfully accumulated necessary OCR keys.
    Creating OCR keys for user 'root', privgrp 'root'..
    Operation successful.
    CRS-4664: Node bardg01 successfully pinned.
    2026/04/28 14:53:10 CLSRSC-595: Executing upgrade step 8 of 11: 'CreateOHASD'.
    2026/04/28 14:53:11 CLSRSC-595: Executing upgrade step 9 of 11: 'ConfigOHASD'.
    2026/04/28 14:53:19 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd.service'
    2026/04/28 14:53:27 CLSRSC-595: Executing upgrade step 10 of 11: 'UpgradeSIHA'.
    
    bardg01     2026/04/28 14:54:13     /u01/app/grid/crsdata/bardg01/olr/backup_20260428_145413.olr     2107015493
    
    bardg01     2026/04/20 12:35:05     /u01/app/grid/crsdata/bardg01/olr/backup_20260420_123505.olr     1643218082
    2026/04/28 14:54:14 CLSRSC-595: Executing upgrade step 11 of 11: 'InstallACFS'.
    2026/04/28 14:54:37 CLSRSC-400: A system reboot is required to continue installing.
    Died at /u01/app/26.1/grid/crs/install/oraacfs.pm line 3315.

    I was a bit surprised, as ACFS was not in use on this system.

    ACFS driver error during upgrade

    Looking into the log file, I found the following entries:

    (…)
    >  ACFS-9154: Loading 'oracleoks.ko' driver.
    >  ACFS-9176: Entering 'mpr'
    >  ACFS-9177: Return from 'mpr'
    >  ACFS-9109: oracleoks.ko driver failed to load.
    >  ACFS-9178: Return code = USM_FAIL
    >  ACFS-9177: Return from 'ld usm drvs'
    >  ACFS-9428: Failed to load ADVM/ACFS drivers. A system reboot is recommended.
    >  ACFS-9310: ADVM/ACFS installation failed.
    >  ACFS-9178: Return code = USM_REBOOT_RECOMMENDED
    >  ACFS-9176: Entering 'count drivers'
    (…)

    As mentioned before, ACFS was not in use.

    After searching the web and MOS, I found the following MOS note:

    KB122579: [RAC] Root.sh or Postpatch Failed To Load ACFS Driver
    “ACFS-9428: Failed to load ADVM/ACFS drivers”

    Although this system was not an RAC, it is Grid Infrastructure, and the error described there was very similar.

    Two workarounds were mentioned:

    • Disable ACFS
    • Disable Secure Boot

    Disabling ACFS did not help. The error remained the same.

    So I focused on Secure Boot.

    Secure Boot as Root Cause

    [root@bardg01 ~]$  mokutil --sb-state
    SecureBoot enabled

    I disabled Secure Boot:

    [root@bardg01 ~]$  mokutil --disable-validation
    password length: 8~16
    input password:
    input password again:
    [root@bardg01 ~]$  reboot

    During the next boot, Secure Boot must be disabled via the boot menu (see screenshot below).

    Disabling the BIOS setting for Secure Boot

    After the reboot, I checked the Secure Boot status again:

    [root@bardg01 ~]$  mokutil --mokutil --sb-state
    SecureBoot enabled
    SecureBoot validation is disabled in shim

    Following the recommendation from the MOS note, I manually loaded the ACFS driver:

    [root@bardg01 ~]$  /u01/app/19.28/grid/bin/acfsload start
    ACFS-9391: Checking for existing ADVM/ACFS installation.
    ACFS-9392: Validating ADVM/ACFS installation files for operating system.
    ACFS-9393: Verifying ASM Administrator setup.
    ACFS-9308: Loading installed ADVM/ACFS drivers.
    ACFS-9325:     Driver OS kernel version = 5.15.0-201.135.6.el9uek.x86_64.
    ACFS-9326:     Driver build number = 250406.
    ACFS-9231:     Driver build version = 19.0.0.0.0 (19.28.0.0.0).
    ACFS-9547:     Driver available build number = 250406.
    ACFS-9232:     Driver available build version = 19.0.0.0.0 (19.28.0.0.0).
    ACFS-9549:     Kernel and command versions.
    Kernel:
        Build version: 19.0.0.0.0
        Build full version: 19.28.0.0.0
        Build hash:    9256567290
        Bug numbers:   NoTransactionInformation
    Commands:
        Build version: 19.0.0.0.0
        Build full version: 19.28.0.0.0
        Build hash:    9256567290
        Bug numbers:   NoTransactionInformation
    ACFS-9327: Verifying ADVM/ACFS devices.
    ACFS-9156: Detecting control device '/dev/asm/.asm_ctl_spec'.
    ACFS-9156: Detecting control device '/dev/ofsctl'.
    ACFS-9294: updating file /etc/sysconfig/oracledrivers.conf
    ACFS-9322: completed

    The driver was loaded successfully:

    [root@bardg01 ~]$  /u01/app/19.28/grid/bin/acfsdriverstate loaded
    ACFS-9203: true

    After that, I started the installer again and reran rootupgrade.sh.

    [root@bardg01 ~]$  /u01/app/26.1/grid/rootupgrade.sh

    This time, the script completed successfully.

    (...)
    2026/04/30 11:35:27 CLSRSC-595: Executing upgrade step 11 of 11: 'InstallACFS'.
    2026/04/30 11:36:02 CLSRSC-327: Successfully configured Oracle Restart for a standalone server

    I then re-enabled Secure Boot:

    [root@bardg01 ~]$  mokutil --enable-validation
    password length: 8~16
    input password:
    input password again:
    [root@bardg01 ~]$  reboot

    After the reboot, Grid Infrastructure started normally.

    grid@bardg01 ~> which crsctl
    /u01/app/26.1/grid/bin/crsctl
    grid@bardg01 ~> crsctl stat res -t
    --------------------------------------------------------------------------------
    Name           Target  State        Server                   State details
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.LISTENER.lsnr
                   ONLINE  ONLINE       bardg01                  STABLE
    ora.ons
                   OFFLINE OFFLINE      bardg01                  STABLE
    --------------------------------------------------------------------------------
    Cluster Resources
    --------------------------------------------------------------------------------
    ora.cssd
          1        ONLINE  ONLINE       bardg01                  STABLE
    ora.demodb_bardg01.db
          1        ONLINE  ONLINE       bardg01                  Open,HOME=/u01/app/o
                                                                 racle/product/19.28/
                                                                 db_home1,STABLE
    ora.diskmon
          1        OFFLINE OFFLINE                               STABLE
    ora.evmd
          1        ONLINE  ONLINE       bardg01                  STABLE
    --------------------------------------------------------------------------------
    grid@bardg02 ~> crsctl query has releaseversion
    Oracle High Availability Services release version on the local node is [23.0.0.0.0]

    Lessons Learned

    However, this approach is obviously not suitable for customers, and certainly not for a production environment.

    I discussed this issue with a colleague, and he asked the right question:
    Which OS version are you using?

    The system was running Oracle Linux 9.4.

    After upgrading the OS to Oracle Linux 9.7, the upgrade from 19c to 26ai completed successfully without any errors.

    And what can I say? In the end, it wasn’t a Grid Infrastructure issue at all, but yet another reminder that patching the OS actually matters.

    Mike Dietrich is absolutely right when he says: patch, patch, patch
    (Patch your databases against AI-enabled cybersecurity threats)

  • Oracle AI Database Administration Certified Professional – How I passed and how you can too

    Initially, I planned to certify as Oracle Database 19c OCP.
    19c is still the long-term release and is still used in many environments.
    And it’s been a really long time since I earned my 12c certification.

    However, while preparing my learning path, I asked myself a simple question:
    Wouldn’t it make more sense to get certified for the new 26ai, which is finally available on‑premises?

    So instead of certifying on an established platform, I decided to focus on what comes next and went for the Oracle AI Database Administration Certified Professional, based on Oracle Database 23ai / 26c.

    After about three to four weeks of preparation, I passed the exam yesterday.
    This post summarizes my preparation for the exam and highlights the topics that should be paid particular attention to.

    Preparation Strategy

    My preparation took approximately three to almost four weeks. The effort should not be underestimated; this is not an exam you pass without focused study.

    So, what was my preparation?

    I read the documentation Oracle AI Database – New Features for Administrators

    This documentation is a good reference point for understanding which features Oracle considers relevant for database administrators today.
    It contains topics like AI Vector Search, which was really new for me, Application Deployment (including JSON), and much more.

    Furthermore, I watched the following course on mylearn.oracle.com:

    Oracle AI Database – New Features for Administrators

    This course covers additional interesting topics such as True Cache, several chapters on performance tuning and Oracle advisors, migration topics, and more.

    So, if you have the possibility to watch this course – do it 😉

    The course also includes a Student Guide and an Activity Guide, and you can request your own lab so that you can practice hands‑on.

    If you cannot watch the mentioned course, you might want to try the Oracle LiveLabs:
    https://livelabs.oracle.com/ords/r/dbpm/livelabs/view-workshop?wid=3950

    There is the possibility to perform all exercises in your own environment.
    I did not use this specific lab, but all LiveLabs I have used so far were of good quality.

    So, try, try, try.
    Especially topics like multitenant management, RMAN recovery, or PDB relocation only really “stick” when you perform them yourself.

    Exam focus areas – what really matters

    I obviously cannot share actual exam questions, but I can share my observations regarding topic focus.

    Performance Tuning

    • AWR
    • ADDM
    • Advisors
    • Performance analysis in CDB vs. PDB context

    Understanding where and how to analyze performance is essential.

    Multitenant – The core topic

    No surprise here: Multitenant is no longer optional.

    Important areas include:

    • PDB relocate
    • Transportable PDBs
    • Clear understanding of CDB and PDB separation

    RMAN Backups in Multitenant Architectures

    Expect questions about:

    • CDB‑level backups
    • PDB‑level restore and recovery
    • Conceptual understanding, not just RMAN commands

    Application Containers

    • They do appear
    • For me: one to three questions

    You should know the idea and the basic administration concepts.

    Security Topics

    • Some security‑related questions
    • In my case: no SQL Firewall
    • Focus was on general security concepts and architecture

    Installation and upgrades

    • AutoUpgrade
    • DBCA
    • Grid Infrastructure

    Who should consider this certification?

    In my opinion, this certification is well suited for DBAs who:

    • already hold an Oracle OCP (e.g. 12c or 19c)
    • work regularly with multitenant environments
    • want to stay aligned with Oracle’s future database direction

    Conclusion

    This certification requires time and focus. It should be planned and supported accordingly.

    For database administrators, it provides:

    • a consolidated understanding of Oracle Database architecture
    • updated knowledge
    • formal validation of expertise

    For employers, certified administrators represent:

    • reduced operational risk
    • verified skill levels
    • stronger positioning for future Oracle Database projects

    From this perspective, Oracle certification is a clear win‑win situation.

  • PRCD‑1024 and PRCR‑1055 After Creating a Standby Database with Oracle Restart

    In preparation for my presentation at the DOAG Database with Cloud Infrastructure (#DOAGDB26) conference, I built a small Data Guard test environment and created the standby database using Oracle Enterprise Manager (OEM).

    After creating a physical standby database via Oracle Enterprise Manager and registering it with Oracle Restart, srvctl commands failed with:

    PRCD-1024 : Failed to retrieve instance list for database DEMODB_BARDG02
    PRCR-1055 : Cluster membership check failed for node bardg02

    The setup of my environment was done as follows:

    1. Created a virtual machine named bardg01
    2. Installed Oracle Enterprise Linux 9.4
    3. Copied the gold images for:
      Oracle Grid Infrastructure 19.28
      Oracle Database 19.28
    4. Unzipped both into their respective directories
    5. Installed the required oracle-database-preinstall-* packages
    6. Configured the grid user

    After that, I cloned the VM, adjusted the network configuration, and two identical systems were available:

    • bardg01
    • bardg02

    Grid Infrastructure and Database Installation

    bardg01

    On bardg01, I installed Oracle Grid Infrastructure for Standalone Server (Oracle Restart) without ASM.

    I performed a software‑only installation and configured Oracle Restart afterwards.
    The installation completed without issues.

    After that, I installed the RDBMS software and created a database using DBCA.
    Everything worked as expected.

    bardg02

    On bardg02, I repeated the same Grid Infrastructure and RDBMS installation steps.
    At this stage, I did not create a database.

    Creating the Standby Database with OEM

    After installing the OEM agents on both hosts, I created a physical standby database via OEM.

    During the wizard I selected the option to “Configure Standby Database with Oracle Restart”
    See the image below:

    The OEM job finished successfully.
    However, after reviewing the environment, I noticed that:

    • The standby database was registered with Oracle Restart
    • The database itself was running, but was shown as offline
    grid@bardg02 ~> crsctl stat res -t
    --------------------------------------------------------------------------------
    Name           Target  State        Server                   State details
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.LISTENER.lsnr
                   ONLINE  ONLINE       bardg02                  STABLE
    ora.ons
                   OFFLINE OFFLINE      bardg02                  STABLE
    --------------------------------------------------------------------------------
    Cluster Resources
    --------------------------------------------------------------------------------
    ora.cssd
          1        OFFLINE OFFLINE                               STABLE
    ora.demodb_bardg02.db
          1        OFFLINE OFFLINE                               STABLE
    ora.diskmon
          1        OFFLINE OFFLINE                               STABLE
    ora.evmd
          1        ONLINE  ONLINE       bardg02                  STABLE
    --------------------------------------------------------------------------------

    At this point, I simply wanted to check the status of the standby database.

    oracle@bardg02 ~> . oraenv
    ORACLE_SID = [DEMODB] ? DEMODB
    The Oracle base remains unchanged with value /u01/app/oracle
    oracle@bardg02 ~> srvctl status database -db demodb_bardg02
    PRCD-1024 : Failed to retrieve instance list for database DEMODB_BARDG02
    PRCR-1055 : Cluster membership check failed for node bardg02

    In my environment, every srvctl command on this host resulted in the same error combination.
    On my primary host bardg01 every srvctl command was successful.

    At this point, I verified a few things:

    • The Grid Infrastructure installation had completed without errors
    • I had not manually changed the CSSD configuration
    • On both hosts, cssd was OFFLINE

    I searched online and in MOS and came to the conclusion that this error pair is typically triggered by cluster membership checks performed by srvctl, even in Oracle Restart setups without ASM.

    Starting CSSD

    My next test was to start CSSD, and I configured it to start automatically after reboot.

    grid@bardg02 ~> crsctl modify resource ora.cssd -attr "AUTO_START=always" -unsupported
    grid@bardg02 ~> crsctl start res ora.cssd -unsupported
    grid@bardg02 ~> crsctl stop has
    CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'bardg02'
    CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'bardg02'
    CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'bardg02' succeeded
    CRS-2673: Attempting to stop 'ora.evmd' on 'bardg02'
    CRS-2677: Stop of 'ora.evmd' on 'bardg02' succeeded
    CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'bardg02' has completed
    CRS-4133: Oracle High Availability Services has been stopped.
    
    grid@bardg02 ~> crsctl start has
    CRS-4123: Oracle High Availability Services has been started.
    
    grid@bardg02 ~> crsctl stat res -t
    --------------------------------------------------------------------------------
    Name           Target  State        Server                   State details
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.LISTENER.lsnr
                   ONLINE  ONLINE       bardg02                  STABLE
    ora.ons
                   OFFLINE OFFLINE      bardg02                  STABLE
    --------------------------------------------------------------------------------
    Cluster Resources
    --------------------------------------------------------------------------------
    ora.cssd
          1        ONLINE  ONLINE       bardg02                  STABLE
    ora.demodb_bardg02.db
          1        ONLINE  INTERMEDIATE bardg02                  Mounted (Closed),HOM
                                                                 E=/u01/app/oracle/pr
                                                                 oduct/19.28/db_home1
                                                                 ,STABLE
    ora.diskmon
          1        OFFLINE OFFLINE                               STABLE
    ora.evmd
          1        ONLINE  ONLINE       bardg02                  STABLE
    --------------------------------------------------------------------------------

    After that I retried the srvctl command:

    oracle@bardg02 ~> srvctl status database -db DEMODB_BARDG02
    Database is running.

    Attribute HOSTING_MEMBERS

    To better understand the behaviour, I ran some additional tests with the database resource attribute HOSTING_MEMBERS.

    grid@bardg02 ~> crsctl modify resource "ora.demodb_bardg02.db" -attr "HOSTING_MEMBERS=" -unsupported
    grid@bardg02 ~> crsctl stat res ora.demodb_bardg02.db -f |grep HOSTING_
    HOSTING_MEMBERS=

    All srvctl commands ran successfully

    oracle@bardg02 ~> srvctl status database -db DEMODB_BARDG02
    Database is running.
    oracle@bardg02 ~> srvctl stop database -db DEMODB_BARDG02
    oracle@bardg02 ~> srvctl status database -db DEMODB_BARDG02
    Database is not running.
    oracle@bardg02 ~> srvctl start database -db DEMODB_BARDG02
    oracle@bardg02 ~> srvctl status database -db DEMODB_BARDG02
    Database is running.

    With this configuration the database could be managed even when cssd was OFFLINE.

    Next test:

    1. HOSTING_MEMBERS=bardg02
    2. cssd = OFFLINE

    All srvctl commands failed again with:

    PRCD-1024 : Failed to retrieve instance list for database demodb_bardg02
    PRCR-1055 : Cluster membership check failed for node bardg02

    Next test:

    1. HOSTING_MEMBERS=bardg02
    2. cssd = ONLINE

    All srvctl commands ran successfully

    Conclusion

    Based on my tests, I can conclude the following:

    • After installing Grid Infrastructure for a standalone server, cssd may initially be OFFLINE
    • Databases created with DBCA work without issues
    • Databases added later (for example via OEM Data Guard) can fail with PRCD‑1024 / PRCR‑1055 if cssd is not running
    • When HOSTING_MEMBERS is used, srvctl clearly relies on cssd, even in Oracle Restart setups without ASM.

    Recommendation

    From my perspective, there are two possible options:

    1. Start and enable CSSD
      • Ensure cssd starts automatically after reboot
      • This is the recommended and clean solution
    2. Remove HOSTING_MEMBERS from the database resource
      • This works technically
      • However, it relies on unsupported configuration changes

    My recommendation:
    After installing Oracle Grid Infrastructure for a standalone server, always verify that CSSD is online and configured to start automatically.

    Hope that helps!

  • I am speaker on DOAGDB26

    Again, I’ll be speaker at the DOAG Database with Cloud Infrastructure (#DOAGDB26).

    This time, I’ll show you how to create a standby database both manually and using OEM.

    And again, sorry, it will be held on German.

    If you’re coming—I look forward to seeing you.

    Info:
    https://datenbank.doag.org/en/home/

    Program:
    https://my.doag.org/events/doag-database/2026/agenda/#eventDay.all

    Tickets:
    https://my.doag.org/events/doag-datenbank/shop/

    Regards

    Birgit

  • No workflow for creating a PDB standby in Oracle 23ai available in OEM24ai 🙁

    In Oracle 23ai there is the new feature “Per-PDB Data Guard Integration Enhancements” (https://docs.oracle.com/en/database/oracle/oracle-database/23/nfcoa/data_guard.html).

    There are some blogs, which describe how you can do this manually. And as I saw, you have to do many things manually to create a standby database per PDB.
    A colleague of mine tested the manual creation of a PDB standby.
    So I wanted to know, if this is also possible with Oracle Enterprise Manager 24ai.

    Before I started, I patched my OEM24ai to the latest RU. In my case RU04. Afterwards I also patched the corresponding agents on my hosts, on which Oracle 23ai is installed.

    I wanted to know, if it is possible to create a PDB standby.

    So, let’s start on the homepage of the CDB and have a look at the menue “Availability”

    Because there is one Data Guard configuration in my CDB, the menue “Data Guard Adminstation” exists.

    What can I do there? Let’s have a look:

    The page is like an Oracle Cloud Infrastructure page and so the actions are to find under the three dots.

    OK. I can do a switchover, failover, apply on and off and I can remove the standby. Nothing else.
    These things were also possible with OEM13c and RDBMS 19c.
    And what I found lacking in the actions was the ability to check the Data Guard configuration, as I can in OEM13c.

    But I originally wanted to create a new PDB standby database, so let’s go back to the homepage and switch to a PDB, which is not in a Data Guard configuration

    Unfortunately there isn’t a menue “Add Standby Databases”, like in OEM13c

    I searched the web, but I did not find anything about creation of a per-PDB standby and OEM24ai.

    So, my conclusion is: It is not possible until now. Unfortunately 🙁
    Hope, this will be a new feature in one of the future Release Updates!

  • I did it! I am an Oracle ACE

    Last year, I tried to become an Oracle ACE, but unfortunately, it didn’t work.
    No blogs, too few presentations…

    At the DOAG Conference and Exhibition 2024, I introduced myself to Oliver Pyka (see https://pyka.de/), an Oracle ACE Pro.
    He presented the Oracle ACE program at the DOAG Conference and Exhibition 2024 in a cool slot.

    Since then, he has supported and mentored me and given me tips on how to meet the requirements to become an Oracle ACE.

    In June he nominated me again for Oracle ACE and this Monday it happened – I got the email, that the nomination was successful.

    So, since Monday I am a proud Oracle ACE – and I am very happy about this.

    If you also want to be an Oracle ACE – don’t give up!
    Start blogging, start presenting, start community meetings – hope that helps!

  • Installing an agent on non-Oracle host

    This blog entry is not really anything special.
    But I had one error and noticed something that is perhaps not entirely uninteresting.

    For my presentation at the DOAG database in Rust, I installed an agent on a MySQL host.
    OK, MySQL is also Oracle, but no Oracle database 😉

    I did not do this via the GUI / webconsole, but manually via the agentDeploy.sh script.
    I copied the agent software to my MySQL host and created the following responsefile:

    #--------------------------------------------------------------------------------
    #Following are mandatory parameters
    #--------------------------------------------------------------------------------
    OMS_HOST=oem24ai
    EM_UPLOAD_PORT=****
    AGENT_REGISTRATION_PASSWORD=****
    #--------------------------------------------------------------------------------
    #Following are optional parameters
    #--------------------------------------------------------------------------------
    #b_startAgent=<Value Unspecified>
    AGENT_BASE_DIR=/mysql/app/oracle/agent
    AGENT_INSTANCE_HOME=/mysql/app/oracle/agent/agent_inst
    AGENT_PORT=3874
    ORACLE_HOSTNAME=mysql01

    The host and the operating system were installed for MySQL not for Oracle. Therefor I got some of prerequisite checks warnings and errors.

    My first try looked like:

    [sqlbar@mysql01 agent_sw]$ ./agentDeploy.sh AGENT_BASE_DIR=/mysql/app/oracle/agent RESPONSE_FILE=/mysql/software/agent_sw/agent_bar.rsp
    
    The space available is ....  9642 MB
    Executing command : /mysql/app/oracle/agent/agent_24.1.0.0.0/jdk/jre/bin/java -classpath /mysql/app/oracle/agent/agent_24.1.0.0.0/jlib/agentInstaller.jar:/mysql/app/oracle/agent/agent_24.1.0.0.0/oui/modules/OraInstaller.jar     oracle.sysman.agent.installer.AgentInstaller /mysql/app/oracle/agent/agent_24.1.0.0.0 /mysql/software/agent_sw /mysql/app/oracle/agent $args -prereq
    AGENT_ins home is:AGENT_BASE_DIR=/mysql/app/oracle/agentoraclehome is:/mysql/app/oracle/agent/agent_24.1.0.0.0
    log loction is setlog
    The oraclehome /mysql/app/oracle/agent/agent_24.1.0.0.0
    
    Agent deployment log location: /mysql/app/oracle/agent/agent_24.1.0.0.0/cfgtoollogs/agentDeploy/agentDeploy_2025-01-17_10-35-05-AM.log
    Agent deployment completed successfully.
    Validating the OMS Host and Port completed.
    /mysql/software/agent_sw/agentcore.bin -ignoreSysPrereqs -prereqChecker -entryPoint oracle.sysman.top.agent_Complete -silent -ignoreSysPrereqs -detailedExitCodes  -responseFile /mysql/app/oracle/agent/agentInstall.rsp  -J-DORACLE_HOSTNAME=mysql01 -J-DAGENT_PORT=3872 -J-Djava.io.tmpdir=/mysql/app/oracle/agent/agent_24.1.0.0.0/cfgtoollogs/prereqlogs -J-DAGENT_BASE_DIR=/mysql/app/oracle/agent -J-DOMS_HOST=oem24ai -J-DEM_UPLOAD_PORT=4903
    Launcher log file is /mysql/app/oracle/agent/agent_24.1.0.0.0/cfgtoollogs/prereqlogs/OraInstall2025-01-17_10-35-22AM/launcher2025-01-17_10-35-22AM.log.
    Checking swap space: must be greater than 512 MB.   Actual 2047 MB    Passed
    Checking if this platform requires a 64-bit JVM.   Actual 64    Passed (-d64 flag is not required)
    Checking temp space: must be greater than 300 MB.   Actual 8370 MB    Passed
    Preparing to launch the Oracle Universal Installer from /mysql/app/oracle/agent/agent_24.1.0.0.0/cfgtoollogs/prereqlogs/OraInstall2025-01-17_10-35-22AM
    Oracle Prerequisite Checker Version 13.9.4.0.0 Production
    Copyright (C) 1999, 2024, Oracle and/or its affiliates.
    
    Starting execution of prerequisite checks
    Total No of checks: 11
    
    Performing check for CertifiedVersions_agent
    Is the software certified on the current operating system?
    Expected result: One of oracle-8, oracle-7, SuSE-11, SuSE-12, SuSE-15, redhat-7, redhat-8, oracle-9, ubuntu-22, debian-11
    Actual Result: redhat-8.10
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for Packages_agent
    Are the required packages installed on the current operating system?
    Checking for make-3.82-21; Not found.   Failed
    Checking for binutils-2.23; found binutils-2.30-123.0.2.el8-x86_64.     Passed
    Checking for libaio-0.3.109-12; found libaio-0.3.112-1.el8-x86_64.      Passed
    Checking for glibc-common-2.17-55; found glibc-common-2.28-251.0.2.el8_10.5-x86_64.     Passed
    Checking for libstdc++-4.8.2-16; found libstdc++-8.5.0-22.0.1.el8_10-x86_64.    Passed
    Checking for sysstat-10.1.5-4; Not found.       Failed
    Checking for libnsl-2.28-18; Not found. Failed
    Check complete. The overall result of this check is: Failed
    
    
    Check complete: Failed
    Problem: Some required packages are missing.
    Recommendation: You may actually have installed packages which have obsoleted these, in which case you can  successfully continue with the install. If you have not, it is recommended that you do not continue.
    
    ========================================================
    Performing check for CompatibilityCheck
    Is the software compatible with the current operating system?
    sourceLoc is :/mysql/app/oracle/agent/agent_24.1.0.0.0/cfgtoollogs/prereqlogs/OraInstall2025-01-17_10-35-22AM/stage/shiphomeproperties.xml
    ARU ID is:226
    Platform is :x86_64
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for AvailableInventorySpace
    Checking for sufficient disk space in the Inventory Location
    Expected result: 100.0MB
    Actual Result: 4711MB
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for InventoryWritableCheck
    Checking for write permissions on the inventory.
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for TZRegionCheck
    Checking TimeZone settings...
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for AgentBaseDirCheck
    Is the ownership of the agent base directory valid?
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for PortCheck
    Checking for port availability and hostname validity...
    Host name to check mysql01
    Host name is not valid
    Getting Inet Addresses for host mysql01
    Trying for host : mysql01/**.**.**.** and port : 3874
    Trying for host : /**.**.**.** and port : 3874
    ** Agent Port Check completed successfully.**
    Agent port to use 3874
    ===Expected Result final Port 3874 must be available on all IP addresses associated with host mysql01.
    Expected result: Port 3872 must be available on all IP addresses associated with host mysql01.
    Actual Result: 3874
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for OracleHomeCheck
    Checking whether the old oracle home entry is present in the central inventory ...
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for CheckHostName
    Is the host name valid?
    value of oracle_hostname:mysql01
    Expected result: Fully qualified domain name, for example foo.mydomain.com
    Actual Result: mysql01. Ensure that you provide a fully qualified domain name.
    Check complete. The overall result of this check is: Failed
    
    
    Check complete: Failed
    Problem: The host name specified for the installation or retrieved from the system is incorrect.
    Recommendation: Ensure that your host name meets the following conditions:
       (1) Does NOT contain localhost.localdomain.
       (2) Does NOT contain any IP address.
       (3) Ensure that the /etc/hosts file has the host details in the following format.
             <IP address>   <host.domain>   <short hostname>
    
             If you do not have the permission to edit the /etc/hosts file,
             then while invoking the installer pass the host name using the argument ORACLE_HOSTNAME.
    
    
    
    
    ========================================================
    Performing check for CheckOMSHostandPort
    Checking for the OMS Host and EM Upload Port
    Expected result: OMS Host: oem24ai, EM Upload Port: **** provided is valid
    Actual Result: OMS Host: oem24ai, EM Upload Port: **** provided is valid
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    PrereqChecks complete
    
    
    The log(s) can be found here: /mysql/app/oracle/agent/agent_24.1.0.0.0/cfgtoollogs/prereqlogs/OraInstall2025-01-17_10-35-22AM.
    ERROR: Installer execution failed (2).
    Agent Prereqs failed.
    Check the logs at /mysql/app/oracle/agent/agent_24.1.0.0.0/cfgtoollogs/prereqlogs

    OK, let’s install the needed packages.
    (The installation of the needed package you should know, so I do not show this here. If not please ask your system administrator… )

    Second try:

    [sqlbar@mysql01 agent_sw]$ ./agentDeploy.sh AGENT_BASE_DIR=/mysql/app/oracle/agent RESPONSE_FILE=/mysql/software/agent_sw/agent_bar.rsp -force
    
    The space available is ....  9642 MB
    Executing command : /mysql/app/oracle/agent/agent_24.1.0.0.0/jdk/jre/bin/java -classpath /mysql/app/oracle/agent/agent_24.1.0.0.0/jlib/agentInstaller.jar:/mysql/app/oracle/agent/agent_24.1.0.0.0/oui/modules/OraInstaller.jar     oracle.sysman.agent.installer.AgentInstaller /mysql/app/oracle/agent/agent_24.1.0.0.0 /mysql/software/agent_sw /mysql/app/oracle/agent $args -prereq
    AGENT_ins home is:AGENT_BASE_DIR=/mysql/app/oracle/agentoraclehome is:/mysql/app/oracle/agent/agent_24.1.0.0.0
    log loction is setlog
    The oraclehome /mysql/app/oracle/agent/agent_24.1.0.0.0
    
    Agent deployment log location: /mysql/app/oracle/agent/agent_24.1.0.0.0/cfgtoollogs/agentDeploy/agentDeploy_2025-01-17_10-47-31-AM.log
    Agent deployment completed successfully.
    Validating the OMS Host and Port completed.
    -force
    /mysql/software/agent_sw/agentcore.bin -ignoreSysPrereqs -prereqChecker -entryPoint oracle.sysman.top.agent_Complete -silent -ignoreSysPrereqs -detailedExitCodes  -responseFile /mysql/app/oracle/agent/agentInstall.rsp  -J-DORACLE_HOSTNAME=mysql01 -J-DAGENT_PORT=3872 -J-Djava.io.tmpdir=/mysql/app/oracle/agent/agent_24.1.0.0.0/cfgtoollogs/prereqlogs -J-DAGENT_BASE_DIR=/mysql/app/oracle/agent -J-DOMS_HOST=oem24ai -J-DEM_UPLOAD_PORT=4903
    Launcher log file is /mysql/app/oracle/agent/agent_24.1.0.0.0/cfgtoollogs/prereqlogs/OraInstall2025-01-17_10-47-45AM/launcher2025-01-17_10-47-45AM.log.
    Checking swap space: must be greater than 512 MB.   Actual 2047 MB    Passed
    Checking if this platform requires a 64-bit JVM.   Actual 64    Passed (-d64 flag is not required)
    Checking temp space: must be greater than 300 MB.   Actual 8370 MB    Passed
    Preparing to launch the Oracle Universal Installer from /mysql/app/oracle/agent/agent_24.1.0.0.0/cfgtoollogs/prereqlogs/OraInstall2025-01-17_10-47-45AM
    Oracle Prerequisite Checker Version 13.9.4.0.0 Production
    Copyright (C) 1999, 2024, Oracle and/or its affiliates.
    
    Starting execution of prerequisite checks
    Total No of checks: 11
    
    Performing check for CertifiedVersions_agent
    Is the software certified on the current operating system?
    Expected result: One of oracle-8, oracle-7, SuSE-11, SuSE-12, SuSE-15, redhat-7, redhat-8, oracle-9, ubuntu-22, debian-11
    Actual Result: redhat-8.10
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for Packages_agent
    Are the required packages installed on the current operating system?
    Checking for make-3.82-21; found make-1:4.2.1-11.el8-x86_64.    Passed
    Checking for binutils-2.23; found binutils-2.30-123.0.2.el8-x86_64.     Passed
    Checking for libaio-0.3.109-12; found libaio-0.3.112-1.el8-x86_64.      Passed
    Checking for glibc-common-2.17-55; found glibc-common-2.28-251.0.2.el8_10.5-x86_64.     Passed
    Checking for libstdc++-4.8.2-16; found libstdc++-8.5.0-22.0.1.el8_10-x86_64.    Passed
    Checking for sysstat-10.1.5-4; found sysstat-11.7.3-13.0.2.el8_10-x86_64.       Passed
    Checking for libnsl-2.28-18; found libnsl-2.28-251.0.2.el8_10.5-x86_64. Passed
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for CompatibilityCheck
    Is the software compatible with the current operating system?
    sourceLoc is :/mysql/app/oracle/agent/agent_24.1.0.0.0/cfgtoollogs/prereqlogs/OraInstall2025-01-17_10-47-45AM/stage/shiphomeproperties.xml
    ARU ID is:226
    Platform is :x86_64
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for AvailableInventorySpace
    Checking for sufficient disk space in the Inventory Location
    Expected result: 100.0MB
    Actual Result: 4705MB
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for InventoryWritableCheck
    Checking for write permissions on the inventory.
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for TZRegionCheck
    Checking TimeZone settings...
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for AgentBaseDirCheck
    Is the ownership of the agent base directory valid?
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for PortCheck
    Checking for port availability and hostname validity...
    Host name to check mysql01
    Host name is not valid
    Getting Inet Addresses for host mysql01
    Trying for host : mysql01/**.**.**.** and port : 3874
    Trying for host : /**.**.**.** and port : 3874
    ** Agent Port Check completed successfully.**
    Agent port to use 3874
    ===Expected Result final Port 3874 must be available on all IP addresses associated with host mysql01.
    Expected result: Port 3874 must be available on all IP addresses associated with host mysql01.
    Actual Result: 3874
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for OracleHomeCheck
    Checking whether the old oracle home entry is present in the central inventory ...
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    Performing check for CheckHostName
    Is the host name valid?
    value of oracle_hostname:mysql01
    Expected result: Fully qualified domain name, for example foo.mydomain.com
    Actual Result: mysql01. Ensure that you provide a fully qualified domain name.
    Check complete. The overall result of this check is: Failed
    
    
    Check complete: Failed
    Problem: The host name specified for the installation or retrieved from the system is incorrect.
    Recommendation: Ensure that your host name meets the following conditions:
       (1) Does NOT contain localhost.localdomain.
       (2) Does NOT contain any IP address.
       (3) Ensure that the /etc/hosts file has the host details in the following format.
             <IP address>   <host.domain>   <short hostname>
    
             If you do not have the permission to edit the /etc/hosts file,
             then while invoking the installer pass the host name using the argument ORACLE_HOSTNAME.
    
    
    
    
    ========================================================
    Performing check for CheckOMSHostandPort
    Checking for the OMS Host and EM Upload Port
    Expected result: OMS Host: oem24ai, EM Upload Port: **** provided is valid
    Actual Result: OMS Host: oem24ai, EM Upload Port: **** provided is valid
    Check complete. The overall result of this check is: Passed
    
    
    Check complete: Passed
    ========================================================
    PrereqChecks complete
    
    
    The log(s) can be found here: /mysql/app/oracle/agent/agent_24.1.0.0.0/cfgtoollogs/prereqlogs/OraInstall2025-01-17_10-47-45AM.
    ERROR: Installer execution failed (2).
    Agent Prereqs failed.
    Check the logs at /mysql/app/oracle/agent/agent_24.1.0.0.0/cfgtoollogs/prereqlogs

    Uff – again the error because of the hostname.

    My /etc/hosts file looked like this (in reality there is an ip adress 😉 )

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    #::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    **.**.**.** mysql01 mysql01

    And in my lab I do not have a domainname for my hosts, so I do not have any fully qualified domain name. I simple named my host “mysql01”. And in the output of the installation process there is the following statement: “If you do not have the permission to edit the /etc/hosts file, then while invoking the installer pass the host name using the argument ORACLE_HOSTNAME.
    I know this parameter for an installation of the OEM itself, but not for an agent installation, but OK.

    OK, let’s try with the parameter ORACLE_HOSTNAME

    [sqlbar@mysql01 agent_sw]$ ./agentDeploy.sh AGENT_BASE_DIR=/mysql/app/oracle/agent ORACLE_HOSTNAME=mysql01 RESPONSE_FILE=/mysql/software/agent_sw/agent_bar.rsp -force

    But that didn’t help either.

    So let’s use the help of the agentDeploy.sh script:

    [sqlbar@mysql01 agent_sw]$ ./agentDeploy.sh -help
    Usage : agentDeploy.sh AGENT_BASE_DIR OMS_HOST EM_UPLOAD_PORT [AGENT_REGISTRATION_PASSWORD RESPONSE_FILE AGENT_INSTANCE_HOME -prereqOnly -softwareOnly -invPtrLoc -help -debug -configOnly -ignorePrereqs -noRollBack -executeRootsh PROPERTIES_FILE]
    
            AGENT_BASE_DIR              - Agent base directory location
            OMS_HOST            - OMS Hostname
            EM_UPLOAD_PORT              - OMS Upload Port
            AGENT_REGISTRATION_PASSWORD  - Agent registration password to secure the agent
            RESPONSE_FILE               - Response file location
            AGENT_INSTANCE_HOME - Agent instance home is the location of agent state directory
            PLUGIN_RSPFILE       - Response file location used for plugin configuration
            PROPERTIES_FILE     - Agent properties file location that contains the property name and property value which will be set during the deployment
            s_agentHomeName     - Customized agent home name, if not passed default home name will be assigned
            -prereqOnly         - Agent installer will be invoked in prereq mode
            -softwareOnly               - Installs only the files
            -invPtrLoc          - Inventory pointer location file
            -help                       - Usage
            -debug                      - More debug messages will be logged
    
            -configOnly         - Performs agent configuration only
            -forceConfigure             - Performs agent configuration even if oms is unavailable
            -ignorePrereqs              - Skips the agent prereqs
            -LOG_DIR                    - Customize log location by passing LOG_DIR=/scratch/log
    Example1:
             agentDeploy.sh AGENT_BASE_DIR=/scratch/agent OMS_HOST=hostname.domain.com EM_UPLOAD_PORT=1000 AGENT_REGISTRATION_PASSWORD=2Bor02B4
            This command is expected to do the complete agent install and configuration with the provided inputs.
    
    Example2:
             agentDeploy.sh AGENT_BASE_DIR=/scratch/agt RESPONSE_FILE=/scratch/agent.rsp -softwareOnly -invPtrLoc /scratch/agent/oraInst.loc -debug
            This command is expected to copy the agent bits to the agent base directory.
    
    Example3:
             agentDeploy.sh AGENT_BASE_DIR=/scratch/agent OMS_HOST=hostname.domain.com EM_UPLOAD_PORT=1000 -forceConfigure
            This command is expected to do the agent install and also force the agent configuration even though the oms host and port are not available.
    
    Example4:
             agentDeploy.sh AGENT_BASE_DIR=/scratch/agent AGENT_INSTANCE_HOME=/scratch/agent/agent_inst -configOnly
            This command is expected to do the agent configuration only with the provided inputs.
    
    Example5:
             agentDeploy.sh AGENT_BASE_DIR=/scratch/agent s_agentHomeName=myAgent -ignorePrereqs
            This command is expected to skip the prereqs and then continue with the agent deployment also notice in the inventory that instead of the default home name, myAgent home name will be assigned for the agent home.
    
    Example6:
             agentDeploy.sh AGENT_BASE_DIR=/scratch/agent PLUGIN_RSPFILE=/scratch/plugin.txt PROPERTIES_FILE=/scratch/agent.properties
             Let's say the content of the /scratch/agent.properties file is enableAutoTuning=false, then this command with deploy and configure the agent with the enableAutoTuning property set.

    Interesting, there is no entry for the parameter ORACLE_HOSTNAME… hm…

    So, let’s try with the Parameter -ignorePrereqs

    [sqlbar@mysql01 agent_sw]$ ./agentDeploy.sh AGENT_BASE_DIR=/mysql/app/oracle/agent RESPONSE_FILE=/mysql/software/agent_sw/agent_bar.rsp -ignorePrereqs -force

    That worked! Fine.

    I checked the installation and then I noticed, that the oraInventory was created in the HOME-directory of the installing user.
    That is not that, what I wanted – uff.

    A symbolic link could be a solution, but I don’t think that’s a good idea. Symbolic links usually cause problems sooner or later.

    As an Oracle DBA I always let the installer create the oraInventory in /u01/app/ or /opt/app or something similiar. But here I have a non-Oracle database host.

    My agent installation, in this example, is /mysql/app/oracle/agent. That is not really a recommended path, but this is only my lab 😉
    So, I decided to let the installer create the oraInvenory under /mysql/app/

    But first I had to deinstall the agent, but that is not really difficult.

    [sqlbar@mysql01:/mysql/app/oracle/agent] $ /mysql/app/oracle/agent/agent_24.1.0.0.0/perl/bin/perl /mysql/app/oracle/agent/agent_24.1.0.0.0/sysman/install/AgentDeinstall.pl -agentHome /mysql/app/oracle/agent/agent_24.1.0.0.0
    

    Then I installed the agent like the steps before, but at this try I used the parameter INVENTORY_LOCATION. The specified directory must already exist.

    [sqlbar@mysql01 agent_sw]$ ./agentDeploy.sh AGENT_BASE_DIR=/mysql/app/oracle/agent RESPONSE_FILE=/mysql/software/agent_sw/agent_bar.rsp -ignorePrereqs -force INVENTORY_LOCATION=/mysql/app/oraInventory

    That worked fine. The agent was installed successfully and the oraInventory was created on the right directory.

    This paramater can also be used in the GUI / webconsole:

    All other fields have to filled up as usally.

    Hope, that helps!

  • I was speaker – DOAG database with Cloud infrastructure

    It has now been 1 month since the DOAG database with Cloud infrastructure took place.

    The journey was a bit arduous for me, but it was worth it.
    And you can pass the time on the train by drinking coffee 😉

    My cofe during the journey to DOAG database with infrastructure in Rust


    Lots of familiar faces, got to know lots of new people and saw lots of interesting and exciting presentations.
    You can see the agenda here: https://my.doag.org/events/doag-database/2025/agenda/#eventDay.all

    I also had a presentation myself. “Monitoring non-Oracle DBs with Oracle Enterprise Manager – Is that possible?
    The lecture room was reminiscent of Versaille (that was the name of the room) and the Phantom of the Opera was lurking in the back 😉 But I had fun!

    A picture of me during my own presentation.


    All in all a good event, even if not as central as in Düsseldorf.

    Hope to see you at one of the other DOAG conferences.

  • Interesting errors during installation of OEM agent 13.5 on windows

    While preparing for my DOAG presentation in May in Rust (#DOAGDB25 / DOAG database with Cloud Infrastructure), I came across some interesting errors when installing the OEM agent 13.5 on Windows.

    In my lab I installed the OEM on Linux and I do not use cygwin, therfore I have wanted to install the agent locally, manually and with a responsefile.

    The way to install the agent on windows conists with serveral steps:

    During my installation I had some interesting errors.
    If you know how to download and deploy the agent software for Windows, you can klick here, to have a look an my errors.

    Download the agent software

    In OEM go to “Setup – Extensibility – Self Update”, as shown:

    Then click on “Agent Software”:

    Search for the Windows agent in version 13.5 and then klick “Download”

    A pop-up window opened with the corresponding instructions

    Deploy the agent software to the OEM

    You only have to follow the instructions of the previous steps

    Now the agent is available in OEM and you can apply it

    If the apply job was successfully, you can now download the software via emcli.

    Downlaod the agent software from OEM

    Copy the software to the target host

    I’m sure, you know how to transer the files from Linux to your Windows host. 😉
    That is why no pictures or instructions follow here.

    Edit the responefile

    After you have unpacked the software, you must edit the reponsefile. I usually copy the file and edit the copied file.

    Here is an excerpt from my response file

    #Following are mandatory parameters
    #--------------------------------------------------------------------------------
    OMS_HOST=oem13-01
    EM_UPLOAD_PORT=4903
    AGENT_REGISTRATION_PASSWORD=****
    #--------------------------------------------------------------------------------
    #Following are optional parameters
    #--------------------------------------------------------------------------------
    #b_startAgent=<Value Unspecified>
    AGENT_BASE_DIR=C:\app\oracle\product\13.5
    AGENT_INSTANCE_HOME=C:\app\oracle\product\13.5\agent_inst
    AGENT_PORT=3874
    ORACLE_HOSTNAME=mssql01host
    s_agentHomeName=agent13r5
    

    Deploy the agent on the target host

    I use cmd as adminitrator to install the agent. AND normally the installations work fine, but in this case, I got some errors.

    Errors during the installation

    First error

    (...)
    INFO: b_agentupgrade=false
    MΣr 26, 2025 5:43:58 AM oracle.sysman.agent.installer.AgentInstaller parseResponseFile
    INFO: EMCTLCFG_MODE=NONE
    MΣr 26, 2025 5:43:58 AM oracle.sysman.agent.installer.AgentInstaller parseResponseFile
    INFO: AGENT_MODE=NONE
    MΣr 26, 2025 5:43:58 AM oracle.sysman.agent.installer.AgentInstaller parseResponseFile
    INFO: s_agentSrvcName=Oracleagent13c1Agent
    log loction is setlog
    Writing the following contents into C:\app\oracle\product\13.5\agent_13.5.0.0.0\install\oragchomelist
    C:\app\oracle\product\13.5\agent_13.5.0.0.0:C:\app\oracle\product\13.5\agent_inst
    Both /etc/oragchomelist and /var/opt/oracle/oragchomelist does not exist.
    SEVERE: CONFIG_ERROR
    SEVERE: CONFIG_ERROR1
    The value of chainInstall : false forceConfigure : false skipValidation : false
    Validating oms host & port with url: https://:/empbs/genwallet
    Validating oms host & port with url: http://:/empbs/genwallet
    The status is 1
    SEVERE: CONFIG_ERROR2
    Validated the oms host and port :- ----
    Validated the agent port :- ----
    shared agent value is :false
    Agent configuration has failed

    I searched in MOS, but I only found notes describing that the OEM was not reachable from the target host. So I checked this:

    PS C:\Users\Administrator> Test-Netconnection -ComputerName oem13-01 -Port 4903                                                                                                                                                                 
    ComputerName     : oem13-01
    RemoteAddress    : xxx.xxx.xxx.xxx
    RemotePort       : 4903
    InterfaceAlias   : Ethernet0
    SourceAddress    : xxx.xxx.xxx.xxx
    TcpTestSucceeded : True

    So, what the hell was going on?

    “OK”, I thought, “I do not use a responsefile, and I use all the paramaters in the command”

    E:\agent_sw\13.5.0.0.0_AgentCore_233>agentDeploy.bat AGENT_BASE_DIR=C:\app\oracle\product\13.5 OMS_HOST=oem13-01 EM_UPLOAD_PORT=4903 AGENT_REGISTRATION_PASSWORD=** AGENT_INSTANCE_HOME=C:\app\oracle\product\13.5\agent_inst AGENT_PORT=3874 ORACLE_HOSTNAME=mssql01host -force

    Second error

    Validated the oms host and port :- oem13-01----4903
    Getting Inet Addresses for host mssql01host
    ** Agent Port Check completed successfully.**
    Validated the agent port :- ----3874
    shared agent value is :false
    servicname is:Oracleagent13c1Agent
    service cmd is:cmd /c C:\app\oracle\product\13.5\agent_13.5.0.0.0\bin\nmesrvops create Oracleagent13c1Agent C:\app\oracle\product\13.5\agent_13.5.0.0.0\bin\nmesrvc.exe  auto
    SEVERE:Create service for service name:Oracleagent13c1Agent has failed.
    Agent configuration has failed

    Oh no, what was going on today?

    I checked the services and the registry of my host, the mentioned service did not exist on my Windows host.

    C:\Users\Administrator>sc delete Oracleagent13c1Agent
    [SC] OpenService FAILED 1060:
    
    The specified service does not exist as an installed service.

    Again, I searched in MOS and found the note “EM 13c: Cloud Control Agent Installation on Windows Fails with Error: Create service for service name:Oracleagent13c2Agent has failed (Doc ID 2220447.1)
    So I had to install Visual C++ 2010 Redistributables (x64), although a newer version auf Visual C++ was installed on my host.

    OK, I did the installation of Visual C++ 2010 Redistributables (x64)

    Then I tried to install the agent, again with a reponsefile and got the same error

    (...)
    INFO: AGENT_MODE=NONE
    MΣr 26, 2025 5:43:58 AM oracle.sysman.agent.installer.AgentInstaller parseResponseFile
    INFO: s_agentSrvcName=Oracleagent13c1Agent
    log loction is setlog
    Writing the following contents into C:\app\oracle\product\13.5\agent_13.5.0.0.0\install\oragchomelist
    C:\app\oracle\product\13.5\agent_13.5.0.0.0:C:\app\oracle\product\13.5\agent_inst
    Both /etc/oragchomelist and /var/opt/oracle/oragchomelist does not exist.
    SEVERE: CONFIG_ERROR
    SEVERE: CONFIG_ERROR1
    The value of chainInstall : false forceConfigure : false skipValidation : false
    Validating oms host & port with url: https://:/empbs/genwallet
    Validating oms host & port with url: http://:/empbs/genwallet
    The status is 1
    SEVERE: CONFIG_ERROR2
    Validated the oms host and port :- ----
    Validated the agent port :- ----
    shared agent value is :false
    Agent configuration has failed

    Then I patched the OEM and also the agent with RU24, but it did not help.

    In the output during installation the responefile is copied to another responsefile, in my case to
    C:/app/oracle/product/13.5/agentInstall.rsp. I took a look in this copied responsefile

    ECHO is off.
    ORACLE_HOME=C:\app\oracle\product\13.5\agent_13.5.0.0.0 
    AGENT_INSTANCE_HOME= C:\app\oracle\product\13.5\agent_inst 
    AGENT_BASE_DIR=C:\app\oracle\product\13.5 
    AGENT_REGISTRATION_PASSWORD= 
    s_encrSecurePwd= 
    b_doDiscovery=true 
    START_AGENT=true 
    b_forceConfigure=false 
    b_secureAgent=true 
    b_noUpgrade=true 
    b_agentupgrade=false 
    EMCTLCFG_MODE=NONE 
    AGENT_MODE=NONE

    There were no parameters for OEM host, upload port, registration password – NOTHING! 😉
    I also took a look in the installation logfiles, but there were nothing I could use to search in MOS.

    OK, then I again started the installation of the agent with all paramaters

    E:\agent_sw\13.5.0.0.0_AgentCore_233>agentDeploy.bat AGENT_BASE_DIR=C:\app\oracle\product\13.5 OMS_HOST=oem13-01 EM_UPLOAD_PORT=4903 AGENT_REGISTRATION_PASSWORD=** AGENT_INSTANCE_HOME=C:\app\oracle\product\13.5\agent_inst AGENT_PORT=3874 ORACLE_HOSTNAME=mssql01host.dev.test -force

    And then all paramaters were in the copied responefile

    ECHO is off.
    ORACLE_HOME=C:\app\oracle\product\13.5\agent_13.5.0.0.0 
    AGENT_PORT=3874 
    EM_UPLOAD_PORT=4903 
    OMS_HOST=oem13-01 
    AGENT_INSTANCE_HOME=C:\app\oracle\product\13.5\agent_inst 
    AGENT_BASE_DIR=C:\app\oracle\product\13.5 
    AGENT_REGISTRATION_PASSWORD=* 
    s_encrSecurePwd=Welcome1 
    ORACLE_HOSTNAME=mssql01host 
    b_doDiscovery=true 
    START_AGENT=true 
    b_forceConfigure=false 
    b_secureAgent=true 
    b_noUpgrade=true 
    b_agentupgrade=false

    So, as I said, I did not found any hint in my logfiles, which could helped.

    Because the installation of the agent worked with all parameters, I recommend to install the agent in the same way, instead of using a responsefile.

    Hope, that helps!