Tuesday, August 19, 2025

OEM 13.5 Installation on Linux

  • Introduction: Oracle Enterprise Manager (OEM) is Oracle’s unified management platform for overseeing the full Oracle technology stack. OEM enables administrators to monitor, configure, and optimize Oracle Databases, Oracle Middleware, Oracle Applications, and Oracle Engineered Systems. It streamlines critical operations such as patching, configuration management, performance diagnostics, and lifecycle automation, ensuring that Oracle workloads remain secure, reliable, and high-performing. In this article, we will see how to configure the OEM on Linux environment step by step.

  • Prerequisites: Below are the minimum requirements for Linux environment.
    • CPU - 2core
    • RAM - 10GB
    • Disk space - 45GB (/u01) & 50GB (/oem)
    • OEM Binary. Download here.
    • Must have root user or sudo access.
    • Disable the firewall.
  • Environment:
Hostname oem.oraeasy.com/192.168.1.33
OS OL 7.3
OEM Version 13c Release 5 (13.5)
OMS Home /oem/app/oracle/middleware
Agent Base /oem/app/oracle/agent
Repository Database Name OEMDB
Database Version 19.27.0
Oracle Home /u01/app/oracle/product/19c/db_home
  • Now let's proceed to configure the OEM step by step:

  • 1. First we need to verify that the database must have sufficient redo log groups to avoid log file sync wait during installation, if not then add accordingly.
    
    SQL> select name,open_mode,log_mode from v$database;
    
    NAME      OPEN_MODE            LOG_MODE
    --------- -------------------- ------------
    OEMDB     READ WRITE           ARCHIVELOG
    
    SQL> SELECT group#, status,bytes/1024/1024 AS size_mb FROM v$log ORDER BY group#; 
    
        GROUP# STATUS	size_mb
    ---------- ---------	------
             1 INACTIVE	200
             2 CURRENT	200
             3 INACTIVE	200
    
    SQL> ALTER DATABASE ADD LOGFILE GROUP 4 '/u01/app/oracle/oradata/OEMDB/redo04.log' SIZE 1G;
    
    Database altered.
    
    SQL> ALTER DATABASE ADD LOGFILE GROUP 5 '/u01/app/oracle/oradata/OEMDB/redo05.log' SIZE 1G;
    
    Database altered.
    
    SQL> ALTER DATABASE ADD LOGFILE GROUP 6 '/u01/app/oracle/oradata/OEMDB/redo06.log' SIZE 1G;
    
    Database altered.
    
    SQL> SELECT group#, status FROM v$log ORDER BY group#; 
    
        GROUP# STATUS
    ---------- ----------------
             1 INACTIVE
             2 CURRENT
             3 INACTIVE
             4 UNUSED
             5 UNUSED
             6 UNUSED
    
    6 rows selected.
    
    SQL> ALTER DATABASE DROP LOGFILE GROUP 1;
    
    Database altered.
    
    SQL> alter system switch logfile;
    
    System altered.
    
    SQL> SELECT group#, status FROM v$log ORDER BY group#;
    
        GROUP# STATUS
    ---------- ----------------
             2 ACTIVE
             3 INACTIVE
             4 ACTIVE
             5 ACTIVE
             6 CURRENT
    
    SQL> ALTER DATABASE DROP LOGFILE GROUP 3;
    
    Database altered.
    
    SQL> alter system checkpoint;
    
    System altered.
    
    SQL> SELECT group#, status FROM v$log ORDER BY group#;
    
        GROUP# STATUS
    ---------- ----------------
             2 INACTIVE
             4 INACTIVE
             5 CURRENT
             6 INACTIVE
    
    SQL> ALTER DATABASE DROP LOGFILE GROUP 2;
    
    Database altered.
    
    SQL> ALTER DATABASE ADD LOGFILE GROUP 7 '/u01/app/oracle/oradata/OEMDB/redo07.log' SIZE 1G;
    
    Database altered.
    
    SQL> SELECT group#, status FROM v$log ORDER BY group#;
    
        GROUP# STATUS
    ---------- ----------------
             4 INACTIVE
             5 CURRENT
             6 INACTIVE
             7 UNUSED
    
    
    2. Now verify TNS servivce and sys user password.
    
    [oracle@oem ~]$ tnsping oemdb
    
    TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 16-AUG-2025 12:25:05
    
    Copyright (c) 1997, 2025, Oracle.  All rights reserved.
    
    Used parameter files:
    
    
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oem.oraeasy.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oemdb)))
    OK (10 msec)
    [oracle@oem ~]$
    [oracle@oem ~]$ sqlplus sys@oemdb as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Sat Aug 16 12:25:09 2025
    Version 19.27.0.0.0
    
    Copyright (c) 1982, 2024, Oracle.  All rights reserved.
    
    Enter password:
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.27.0.0.0
    
    SQL> def
    DEFINE _DATE           = "16-AUG-25" (CHAR)
    DEFINE _CONNECT_IDENTIFIER = "oemdb" (CHAR)
    DEFINE _USER           = "SYS" (CHAR)
    DEFINE _PRIVILEGE      = "AS SYSDBA" (CHAR)
    DEFINE _SQLPLUS_RELEASE = "1927000000" (CHAR)
    DEFINE _EDITOR         = "vi" (CHAR)
    DEFINE _O_VERSION      = "Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.27.0.0.0" (CHAR)
    DEFINE _O_RELEASE      = "1927000000" (CHAR)
    SQL>
    SQL> select name,open_mode from v$database;
    
    NAME      OPEN_MODE
    --------- --------------------
    OEMDB     READ WRITE
    
    3. Now we need to change some parameter in Repository database for OEM. Create a pfile for backup.
    
    SQL> select name,open_mode,log_mode from v$database;
    
    NAME      OPEN_MODE            LOG_MODE
    --------- -------------------- ------------
    OEMDB     READ WRITE           ARCHIVELOG
    
    SQL> create pfile='/home/oracle/oemdb.ora' from spfile;
    
    File created.
    
    SQL> show parameter _allow_insert_with_update_check
    SQL> show parameter session_cached_cursors
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    session_cached_cursors               integer     50
    
    SQL> show parameter shared_pool_size
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    shared_pool_size                     big integer 0
    
    SQL> show parameter processes
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    aq_tm_processes                      integer     1
    db_writer_processes                  integer     1
    gcs_server_processes                 integer     0
    global_txn_processes                 integer     1
    job_queue_processes                  integer     40
    log_archive_max_processes            integer     4
    processes                            integer     300
    SQL>
    SQL> show parameter "_allow_insert_with_update_check"
    
    SQL> alter system set "_allow_insert_with_update_check"=true scope=both;
    
    System altered.
    
    SQL> alter system set session_cached_cursors=200 scope=spfile;
    
    System altered.
    
    SQL> alter system set shared_pool_size=600M scope=spfile;
    
    System altered.
    
    SQL> show parameter pga
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    pga_aggregate_limit                  big integer 2G
    pga_aggregate_target                 big integer 0
    SQL>
    SQL> alter system set processes=600 scope=spfile;
    
    System altered.
    
    SQL> shut immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL>
    SQL> startup
    ORACLE instance started.
    
    Total System Global Area 1979711112 bytes
    Fixed Size                  8941192 bytes
    Variable Size            1358954496 bytes
    Database Buffers          603979776 bytes
    Redo Buffers                7835648 bytes
    Database mounted.
    Database opened.
    SQL>
    SQL> show parameter _allow_insert_with_update_check
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    _allow_insert_with_update_check      boolean     TRUE
    
    SQL>  show parameter session_cached_cursors
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    session_cached_cursors               integer     200
    
    SQL>  show parameter shared_pool_size
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    shared_pool_size                     big integer 608M
    SQL>
    SQL> show parameter processes
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    aq_tm_processes                      integer     1
    db_writer_processes                  integer     1
    gcs_server_processes                 integer     0
    global_txn_processes                 integer     1
    job_queue_processes                  integer     40
    log_archive_max_processes            integer     4
    processes                            integer     600
    
    4. Now create required directory for OMS & Agent and also place the OEM binary in /oem/software/.
    
    [oracle@oem ~]$ mkdir -p /oem/app/oracle/middleware
    [oracle@oem ~]$ mkdir -p /oem/app/oracle/agent
    [oracle@oem ~]$
    [oracle@oem ~]$ ll /oem/app/oracle/
    total 0
    drwxr-xr-x. 2 oracle oinstall 6 Aug 16 12:18 agent
    drwxr-xr-x. 2 oracle oinstall 6 Aug 16 12:18 middleware
    [oracle@oem ~]$
    [oracle@oem ~]$ cd /oem/software/
    [oracle@oem software]$
    [oracle@oem software]$ ls -lrth
    total 8.0G
    -rwxrwxr-x. 1 oracle oinstall 1.5G Aug 16 12:19 em13500_linux64.bin
    -rwxrwxr-x. 1 oracle oinstall 1.8G Aug 16 12:19 em13500_linux64-2.zip
    -rwxrwxr-x. 1 oracle oinstall 2.0G Aug 16 12:19 em13500_linux64-3.zip
    -rwxrwxr-x. 1 oracle oinstall 1.4G Aug 16 12:19 em13500_linux64-4.zip
    -rwxrwxr-x. 1 oracle oinstall 1.4G Aug 16 12:19 em13500_linux64-5.zip
    [oracle@oem software]$
    
    5. Now we need to start the installation. Make sure that /tmp has 12GB free space. If not then provide a temporary location where 12GB free space is there.
    
    [oracle@oem software]$ pwd
    /oem/software
    [oracle@oem software]$
    [oracle@oem software]$ ./em13500_linux64.bin
    ERROR: Temporary directory /tmp does not have enough free space. At least 12289 MB of free space are required.
    Please input another directory or [Exit]: /u01/software/temp
    Launcher log file is /u01/software/temp/OraInstall2025-08-16_12-28-40PM/launcher2025-08-16_12-28-40PM.log.
    Extracting the installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . .
    . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . Done Checking monitor: must be configured to display at least 256 colors. Actual 16777216 Passed Checking swap space: must be greater than 512 MB. Actual 4095 MB Passed Checking if this platform requires a 64-bit JVM. Actual 64 Passed (64-bit not required) Preparing to launch the Oracle Universal Installer from /u01/software/temp/OraInstall2025-08-16_12-28-40PM ScratchPathValue :/u01/software/temp/OraInstall2025-08-16_12-28-40PM Aug 16, 2025 12:34:18 PM org.apache.sshd.common.io.DefaultIoServiceFactoryFactory getIoServiceProvider INFO: No detected/configured IoServiceFactoryFactory using Nio2ServiceFactoryFactory .......................................................................................

    6. Now OEM GUI installer window will open. Follow the below steps.

    Select Advanced Install & click Next.

    Select Skip & click Next.

    Click on Ignore to ignore the warnings.

    Click Next.

    Provide OMS Home, Agent Base directory and OEM server hostname. Then click Next.

    Click Next.

    Provide the password & click Next.

    Provide the Repository Database details & click Next.

    Click on Auto Fix.

    Click Next.

    Click Ok.

    Provide the SYSMAN & Agent Registration password. Then click Next.

    Click Next.

    Click Next.

    Review the details & click Install.

    Note: The entire installation process may take 5-6 hrs. Keep monitoring the database alert log to avoid any faliure.

    Keep Monitoting the progress & related logs.

    If you encountered that the installation gets hung like below. Then check the objects stats of SYSMAN schema and gather its stats. Steps given below:

    
    

    ==> Check if stats are locked or not.

    SQL> SELECT stattype_locked FROM dba_tab_statistics WHERE owner = 'SYSMAN'; STATT ----- ALL ALL ALL ALL ALL ALL ALL ALL ALL ALL ALL .... .... .... 5930 rows selected.

    ==> Unlock the stats & do stat gather.

    SQL> EXEC DBMS_STATS.unlock_schema_stats('SYSMAN'); PL/SQL procedure successfully completed. SQL> SELECT stattype_locked FROM dba_tab_statistics WHERE owner = 'SYSMAN'; STATT ----- .... .... .... 5930 rows selected. SQL> EXEC DBMS_STATS.gather_schema_stats('SYSMAN'); PL/SQL procedure successfully completed.

    Wait for sometime & installation will move further.

    Execute the script from root user. Then click Ok.

    
    [root@oem ~]# /oem/app/oracle/middleware/allroot.sh
    
    Starting to execute allroot.sh .........
    
    Starting to execute /oem/app/oracle/middleware/root.sh ......
    Check /oem/app/oracle/middleware/install/root_oem.oraeasy.com_2025-08-16_18-19-43.log for the output of root script
    
    Finished product-specific root actions.
    /etc exist
    Finished execution of  /oem/app/oracle/middleware/root.sh ......
    
    Starting to execute /oem/app/oracle/agent/agent_13.5.0.0.0/root.sh ......
    
    Finished product-specific root actions.
    /etc exist
    Finished execution of  /oem/app/oracle/agent/agent_13.5.0.0.0/root.sh ......
    [root@oem ~]#
    

    Now installation got completed. Review the details & click Close.
    7. Now check the OMS & Agent status.
    
    [oracle@oem ~]$ cd /oem/app/oracle/middleware/bin
    [oracle@oem bin]$ ./emctl status oms
    Oracle Enterprise Manager Cloud Control 13c Release 5
    Copyright (c) 1996, 2021 Oracle Corporation.  All rights reserved.
    WebTier is Up
    Oracle Management Server is Up
    JVMD Engine is Up
    [oracle@oem bin]$
    [oracle@oem bin]$ ./emctl status oms -details
    Oracle Enterprise Manager Cloud Control 13c Release 5
    Copyright (c) 1996, 2021 Oracle Corporation.  All rights reserved.
    Enter Enterprise Manager Root (SYSMAN) Password :
    Console Server Host        : oem.oraeasy.com
    HTTP Console Port          : 7788
    HTTPS Console Port         : 7803
    HTTP Upload Port           : 4889
    HTTPS Upload Port          : 4903
    EM Instance Home           : /oem/app/oracle/gc_inst/em/EMGC_OMS1
    OMS Log Directory Location : /oem/app/oracle/gc_inst/em/EMGC_OMS1/sysman/log
    OMS is not configured with SLB or virtual hostname
    Agent Upload is locked.
    OMS Console is locked.
    Active CA ID: 1
    Console URL: https://oem.oraeasy.com:7803/em
    Upload URL: https://oem.oraeasy.com:4903/empbs/upload
    
    WLS Domain Information
    Domain Name            : GCDomain
    Admin Server Host      : oem.oraeasy.com
    Admin Server HTTPS Port: 7102
    Admin Server is RUNNING
    
    Oracle Management Server Information
    Managed Server Instance Name: EMGC_OMS1
    Oracle Management Server Instance Host: oem.oraeasy.com
    WebTier is Up
    Oracle Management Server is Up
    JVMD Engine is Up
    [oracle@oem bin]$
    
    [oracle@oem bin]$ cd /oem/app/oracle/agent/agent_13.5.0.0.0/bin
    [oracle@oem bin]$ ./emctl status agent
    Oracle Enterprise Manager Cloud Control 13c Release 5
    Copyright (c) 1996, 2021 Oracle Corporation.  All rights reserved.
    ---------------------------------------------------------------
    Agent Version          : 13.5.0.0.0
    OMS Version            : 13.5.0.0.0
    Protocol Version       : 12.1.0.1.0
    Agent Home             : /oem/app/oracle/agent/agent_inst
    Agent Log Directory    : /oem/app/oracle/agent/agent_inst/sysman/log
    Agent Binaries         : /oem/app/oracle/agent/agent_13.5.0.0.0
    Core JAR Location      : /oem/app/oracle/agent/agent_13.5.0.0.0/jlib
    Agent Process ID       : 3038
    Parent Process ID      : 2742
    Agent URL              : https://oem.oraeasy.com:3872/emd/main/
    Local Agent URL in NAT : https://oem.oraeasy.com:3872/emd/main/
    Repository URL         : https://oem.oraeasy.com:4903/empbs/upload
    Started at             : 2025-08-16 19:21:59
    Started by user        : oracle
    Operating System       : Linux version 4.1.12-61.1.18.el7uek.x86_64 (amd64)
    Number of Targets      : 35
    Last Reload            : (none)
    Last successful upload                       : 2025-08-16 20:04:16
    Last attempted upload                        : 2025-08-16 20:04:16
    Total Megabytes of XML files uploaded so far : 0.14
    Number of XML files pending upload           : 0
    Size of XML files pending upload(MB)         : 0
    Available disk space on upload filesystem    : 60.96%
    Collection Status                            : Collections enabled
    Heartbeat Status                             : Ok
    Last attempted heartbeat to OMS              : 2025-08-16 20:06:20
    Last successful heartbeat to OMS             : 2025-08-16 20:06:20
    Next scheduled heartbeat to OMS              : 2025-08-16 20:07:20
    
    ---------------------------------------------------------------
    Agent is Running and Ready
    [oracle@oem bin]$
    

    8. Now open the below URL & do login with SYSMAN credential.
    https://192.168.1.33:7803/em

    Provide credential & click Login.

    Accept License Agreement.

    Welcome Page.

    Click on Enterprise --> Summary.


    9. Below are the command to start & stop the OEM services. Make sure that Database & Listener services are running.
    
    

    Set environment.

    [oracle@oem ~]$ export OMS_HOME=/oem/app/oracle/middleware [oracle@oem ~]$ export AGENT_HOME=/oem/app/oracle/agent/agent_13.5.0.0.0

    To Start.

    [oracle@oem ~]$ $OMS_HOME/bin/./emctl start oms [oracle@oem ~]$ $OMS_HOME/bin/./emctl start agent

    To Stop.

    [oracle@oem ~]$ $OMS_HOME/bin/./emctl stop oms [oracle@oem ~]$ $OMS_HOME/bin/./emctl stop agent
    Issue Faced: During installation, we faced issue in starting the OMS services due to library issue. You can refer the below troubleshooting & solution steps if you face the same. Do not close the installer GUI window.
    1. In OEM installer log.
    
    INFO: oracle.sysman.top.oms:Copyright (c) 1996, 2021 Oracle Corporation. All rights reserved. 
    INFO: oracle.sysman.top.oms:Starting Oracle Management Server... 
    INFO: oracle.sysman.top.oms:WebTier Could Not Be Started. 
    INFO: oracle.sysman.top.oms:Error Occurred: WebTier Could Not Be Started. 
    INFO: oracle.sysman.top.oms:Please check /oem/app/oracle/gc_inst/em/EMGC_OMS1/sysman/log/emctl.log for error details SEVERE: 
    	oracle.sysman.top.oms:Starting of OMS failed. 
    
    2. In OHS log.
    
    [oracle@oem bin]$ tail -50 /oem/app/oracle/gc_inst/user_projects/domains/GCDomain/system_components/OHS/ohs_nm.log
    2025-08-16 16:16:06  INFO   OHS-0   Domain initialized for /oem/app/oracle/gc_inst/user_projects/domains/GCDomain  
    2025-08-16 16:16:07  INFO   OHS-4112   Creating instance ohs1  
    2025-08-16 16:16:10  INFO   OHS-4114   Updating instance ohs1  
    2025-08-16 17:13:18  INFO   OHS-4018   Starting server ohs1  
    2025-08-16 17:13:18  INFO   OHS-0   Running /oem/app/oracle/middleware/ohs/bin/launch httpd -DOHS_MPM_WORKER -d  /oem/app/oracle/gc_inst/user_projects/domains/GCDomain/config/fmwconfig/components/OHS/instances/ohs1 -k start -f  /oem/app/oracle/gc_inst/user_projects/domains/GCDomain/config/fmwconfig/components/OHS/instances/ohs1/httpd.conf  
    2025-08-16 17:13:19  INFO   OHS-0   /oem/app/oracle/middleware/ohs/bin/httpd: error while loading shared libraries: libclntshcore.so.12.1: 
    cannot open shared object file: No such file or directory
    

    That’s the root cause: OHS (Oracle HTTP Server) cannot find the Oracle client library libclntshcore.so.12.1.

    3. Set LD_LIBRARY_PATH in setDomainEnv.sh file.
    
    [oracle@oem bin]$ cat /oem/app/oracle/gc_inst/user_projects/domains/GCDomain/bin/setDomainEnv.sh|grep LD_LIBRARY_PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
    
    4. Link the libclntshcore library file.
    
    [oracle@oem lib]$ ln -s /u01/app/oracle/product/19c/db_home/lib/libclntshcore.so.19.1 libclntshcore.so.12.1
    [oracle@oem lib]$ ls -l /oem/app/oracle/middleware/ohs/lib/libclntshcore.so.*
    lrwxrwxrwx. 1 oracle oinstall 61 Aug 16 17:56 /oem/app/oracle/middleware/ohs/lib/libclntshcore.so.12.1 -> /u01/app/oracle/product/19c/db_home/lib/libclntshcore.so.19.1
    
    5. Stop & Start the OMS manually.
    
    [oracle@oem lib]$ cd /oem/app/oracle/middleware/bin
    [oracle@oem bin]$ ./emctl stop oms -all
    Oracle Enterprise Manager Cloud Control 13c Release 5
    Copyright (c) 1996, 2021 Oracle Corporation.  All rights reserved.
    Stopping Oracle Management Server...
    WebTier Could Not Be Stopped
    Oracle Management Server Successfully Stopped
    AdminServer Failed to be Stopped
    Check Admin Server log file for details: /oem/app/oracle/gc_inst/user_projects/domains/GCDomain/servers/EMGC_ADMINSERVER/logs/EMGC_ADMINSERVER.out
    Oracle Management Server is Down
    JVMD Engine is Down
    [oracle@oem bin]$
    [oracle@oem bin]$ ./emctl start oms
    Oracle Enterprise Manager Cloud Control 13c Release 5
    Copyright (c) 1996, 2021 Oracle Corporation.  All rights reserved.
    Starting Oracle Management Server...
    WebTier Successfully Started
    Oracle Management Server Successfully Started
    Oracle Management Server is Up
    JVMD Engine is Up
    [oracle@oem bin]$
    
    6. Last click Retry on installer GUI window.


    Thank you for reading!

    I hope this content has been helpful to you. Your feedback and suggestions are always welcome — feel free to leave a comment or reach out with any queries.

    Abhishek Shrivastava

    📧 Email: oraeasyy@gmail.com
    🌐 Website: www.oraeasy.com
    Location: Noida, Uttar Pradesh, India

    0 comments:

    Post a Comment