{"id":5773,"date":"2026-07-16T15:06:17","date_gmt":"2026-07-16T09:36:17","guid":{"rendered":"https:\/\/w3buddy.com\/?p=5773"},"modified":"2026-07-19T22:13:57","modified_gmt":"2026-07-19T16:43:57","slug":"oracle-enterprise-manager-19c-installation-and-configuration","status":"publish","type":"post","link":"https:\/\/w3buddy.com\/blog\/oracle-enterprise-manager-19c-installation-and-configuration\/","title":{"rendered":"Oracle Enterprise Manager 19c Installation and Configuration"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">A complete production-ready SOP for installing and configuring Oracle Enterprise Manager Cloud Control 19c on Linux from scratch. Covers OMS prerequisites, repository database preparation, OEM Cloud Control installation, agent deployment, target discovery, monitoring configuration, blackout creation, and full post-installation validation \u2014 with real commands, expected outputs, and consultant-level notes for both standard OFA and enterprise custom path conventions.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">1. Document Info<\/h3>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><thead><tr><th>Item<\/th><th>Detail<\/th><\/tr><\/thead><tbody><tr><td>OEM Version<\/td><td>Enterprise Manager Cloud Control 19c<\/td><\/tr><tr><td>OMS Server<\/td><td>emserver01 (dedicated OEM server)<\/td><\/tr><tr><td>Repository DB<\/td><td>EMREP (Oracle 19c database on emserver01 or separate server)<\/td><\/tr><tr><td>Agent Version<\/td><td>19c (matches OMS version)<\/td><\/tr><tr><td>OS<\/td><td>Oracle Linux 7.x \/ RHEL 7.x or 8.x<\/td><\/tr><tr><td>OMS Port<\/td><td>7803 (HTTPS console)<\/td><\/tr><tr><td>Agent Port<\/td><td>3872 (default)<\/td><\/tr><tr><td>Upload Port<\/td><td>4903 (agent to OMS communication)<\/td><\/tr><tr><td>MOS Reference<\/td><td>Doc ID 2349010.1 (OEM 19c Install Guide)<\/td><\/tr><tr><td>MOS Reference<\/td><td>Doc ID 1926545.1 (OEM Prerequisites)<\/td><\/tr><tr><td>MOS Reference<\/td><td>Doc ID 2219797.1 (OEM Agent Deployment)<\/td><\/tr><tr><td>Prepared By<\/td><td>Oracle DBA \/ Consultant<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">2. OEM Architecture \u2014 Understand Before You Start<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>What is Oracle Enterprise Manager Cloud Control?<\/strong> OEM Cloud Control is Oracle&#8217;s centralized monitoring, management, and automation platform for Oracle databases, middleware, hosts, and other Oracle products. From a single web console you can monitor hundreds of databases, receive alerts, run jobs, apply patches, manage configuration, and perform administrative tasks \u2014 all without logging into individual servers.<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why use OEM instead of direct DB management?<\/strong> When you manage more than 5-10 databases, individual server-by-server management becomes unscalable. OEM centralizes everything \u2014 you see all databases, all alerts, all jobs from one screen. For a consultant role, OEM knowledge is essential because most enterprise clients use it.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Key OEM Components<\/h4>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><thead><tr><th>Component<\/th><th>What It Does<\/th><th>Where It Runs<\/th><\/tr><\/thead><tbody><tr><td>OMS (Oracle Management Service)<\/td><td>The central application server. Hosts the web console, processes data from agents, stores configuration, runs jobs. The brain of OEM.<\/td><td>Dedicated OEM server<\/td><\/tr><tr><td>Repository Database (EMREP)<\/td><td>An Oracle database that stores all OEM data \u2014 monitoring data, configurations, job history, alerts, everything OEM needs persisted. Must be a dedicated database.<\/td><td>Same or separate server from OMS<\/td><\/tr><tr><td>Management Agent<\/td><td>A lightweight process installed on every managed server. Collects metrics, monitors targets, executes jobs, and sends data to OMS.<\/td><td>Every managed target server<\/td><\/tr><tr><td>OEM Console<\/td><td>Web browser interface to OEM. Accessed via HTTPS on port 7803.<\/td><td>Client browser<\/td><\/tr><tr><td>EM CLI<\/td><td>Command line interface for OEM. Automate OEM operations via scripts.<\/td><td>OMS server or any server with EM CLI installed<\/td><\/tr><tr><td>WebLogic Server<\/td><td>OMS runs on top of WebLogic application server (bundled with OEM installer).<\/td><td>OEM server (embedded)<\/td><\/tr><tr><td>Agent Upload Port<\/td><td>Port 4903 \u2014 agents send monitoring data to OMS through this port. Must be open in firewall.<\/td><td>OMS server (listens)<\/td><\/tr><tr><td>Blackout<\/td><td>A scheduled or immediate suppression of alerts for a target during maintenance. Prevents alert noise during patching or downtime.<\/td><td>Configured in OEM console or CLI<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">OEM Communication Flow<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>Managed Servers (DB, Host, Middleware)\n         \u2502\n    &#91;OEM AGENT]  \u2190\u2500\u2500 collects metrics locally\n         \u2502\n         \u2502  port 4903 (HTTPS upload)\n         \u25bc\n    &#91;OMS SERVER]  \u2190\u2500\u2500 processes data, runs jobs, hosts console\n         \u2502\n         \u2502  JDBC\n         \u25bc\n  &#91;REPOSITORY DB]  \u2190\u2500\u2500 stores all OEM data persistently\n         \nBrowser  \u2500\u2500\u2500\u2500 HTTPS port 7803 \u2500\u2500\u2500\u2500\u25ba  &#91;OMS CONSOLE]<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">OEM Sizing Guidelines<\/h4>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><thead><tr><th>Environment<\/th><th>Targets<\/th><th>OMS RAM<\/th><th>OMS CPU<\/th><th>Repo DB RAM<\/th><th>Repo DB Storage<\/th><\/tr><\/thead><tbody><tr><td>Small<\/td><td>Up to 100<\/td><td>16 GB<\/td><td>4 cores<\/td><td>8 GB<\/td><td>200 GB<\/td><\/tr><tr><td>Medium<\/td><td>100-500<\/td><td>32 GB<\/td><td>8 cores<\/td><td>16 GB<\/td><td>500 GB<\/td><\/tr><tr><td>Large<\/td><td>500-1000<\/td><td>64 GB<\/td><td>16 cores<\/td><td>32 GB<\/td><td>1 TB<\/td><\/tr><tr><td>Very Large<\/td><td>1000+<\/td><td>128 GB<\/td><td>32 cores<\/td><td>64 GB<\/td><td>2 TB+<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>IMPORTANT:<\/strong> OEM is resource-intensive. Running OMS on an underpowered server is the most common cause of OEM performance issues. Follow the sizing guidelines above. Never install OMS on a server that is also running production databases.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">3. Path Conventions and Environment Details<\/h3>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><thead><tr><th>Item<\/th><th>Convention A<\/th><th>Convention B<\/th><\/tr><\/thead><tbody><tr><td>OMS Oracle Home<\/td><td>\/u01\/app\/oracle\/product\/OMS\/19c<\/td><td>\/oracle\/OMS\/19c<\/td><\/tr><tr><td>OMS Base<\/td><td>\/u01\/app\/oracle<\/td><td>\/oracle<\/td><\/tr><tr><td>Agent Oracle Home<\/td><td>\/u01\/app\/oracle\/agent\/agent_19.x<\/td><td>\/oracle\/agent\/agent_19.x<\/td><\/tr><tr><td>Agent Base<\/td><td>\/u01\/app\/oracle\/agent<\/td><td>\/oracle\/agent<\/td><\/tr><tr><td>Repo DB Oracle Home<\/td><td>\/u01\/app\/oracle\/product\/19.3.0\/dbhome_1<\/td><td>\/oracle\/RDBMS\/19.31<\/td><\/tr><tr><td>Middleware Home<\/td><td>\/u01\/app\/oracle\/product\/OMS\/19c\/wlserver<\/td><td>\/oracle\/OMS\/19c\/wlserver<\/td><\/tr><tr><td>OMS Instance<\/td><td>\/u01\/app\/oracle\/gc_inst<\/td><td>\/oracle\/gc_inst<\/td><\/tr><tr><td>Software Stage<\/td><td>\/stage\/oem<\/td><td>\/stage\/oem<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd All examples use Convention A. Substitute Convention B paths where applicable.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">4. Pre-Installation Checks \u2014 OMS Server<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>IMPORTANT:<\/strong> OEM installation is complex and the installer is strict about prerequisites. Every single pre-check must pass before starting the installer. A failed OEM installation mid-way is very difficult to clean up.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">4.1 \u2014 Check OS Version and Architecture<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why?<\/strong> OEM Cloud Control 19c is certified on specific OS versions only. Running on an unsupported OS version is not supported by Oracle and may cause unpredictable behavior.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># Check OS version\ncat \/etc\/os-release\n\n# Must be x86_64\nuname -m\n\n# Check kernel version\nuname -r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Supported OS for OEM 19c:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Oracle Linux 6.x, 7.x, 8.x<\/li>\n\n\n\n<li>Red Hat Enterprise Linux 6.x, 7.x, 8.x<\/li>\n\n\n\n<li>SUSE Linux Enterprise 11, 12, 15<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">4.2 \u2014 Check RAM and Swap<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why?<\/strong> OEM OMS is a Java application server running on WebLogic. It needs significant memory \u2014 minimum 8 GB for OMS process itself. With the repository database on the same server, plan for 16-32 GB total.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># Check total RAM\ngrep MemTotal \/proc\/meminfo\n\n# Check available RAM right now\nfree -m\n\n# Check swap\ngrep SwapTotal \/proc\/meminfo<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Minimum requirements:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RAM: 8 GB (OMS only), 16 GB (OMS + Repo DB on same server)<\/li>\n\n\n\n<li>Swap: Equal to RAM up to 16 GB<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>IMPORTANT:<\/strong> If RAM is less than 8 GB the OEM installer will fail the prerequisite check and refuse to proceed. There is no workaround \u2014 you must add more RAM.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">4.3 \u2014 Check Disk Space<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why?<\/strong> OEM software is large (about 8 GB just for the installer). The OMS home needs about 15 GB. The repository database needs 50-200 GB depending on how many targets you monitor and how long you retain data.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># Check all filesystems\ndf -hP\n\n# Specific checks\ndf -hP \/u01          # OMS home \u2014 need 15 GB minimum\ndf -hP \/tmp          # Installer temp \u2014 need 4 GB minimum\ndf -hP \/var          # Logs and temp \u2014 need 2 GB minimum<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Minimum disk requirements:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><thead><tr><th>Location<\/th><th>Minimum Required<\/th><\/tr><\/thead><tbody><tr><td>OMS Oracle Home (\/u01\/app\/oracle\/product\/OMS\/19c)<\/td><td>15 GB<\/td><\/tr><tr><td>OMS Instance (\/u01\/app\/oracle\/gc_inst)<\/td><td>5 GB<\/td><\/tr><tr><td>Repository DB datafiles<\/td><td>50 GB<\/td><\/tr><tr><td>\/tmp (installer temp)<\/td><td>4 GB<\/td><\/tr><tr><td>Software stage (\/stage\/oem)<\/td><td>10 GB<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">4.4 \u2014 Check Required OS Packages<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># Check all required packages\nrpm -q make \\\n        binutils \\\n         gcc \\\n        libaio \\\n        libaio-devel \\\n        glibc \\\n        glibc-devel \\\n        libgcc \\\n        libstdc++ \\\n        libstdc++-devel \\\n        sysstat \\\n        compat-libcap1 \\\n        compat-libstdc++-33 \\\n        ksh \\\n        unzip \\\n        zip \\\n        glibc-common \\\n        libXext \\\n        libXrender \\\n        libXtst \\\n        libXi \\\n        libnsl \\\n        nfs-utils \\\n        smartmontools <strong>2<\/strong>&gt;<strong>&amp;1<\/strong> | grep \"not installed\"\n\n# Install missing packages (as root)\nyum install -y make binutils gcc libaio libaio-devel glibc glibc-devel \\\nlibgcc libstdc++ libstdc++-devel sysstat compat-libcap1 compat-libstdc++-33 \\\nksh unzip zip glibc-common libXext libXrender libXtst libXi libnsl \\\nnfs-utils smartmontools<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">4.5 \u2014 Check and Set Kernel Parameters<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># Check current values\n\/sbin\/sysctl -a | grep -E \\\n\"kernel.shmall|kernel.shmmax|kernel.shmmni|\\\nkernel.sem|fs.file-max|fs.aio-max-nr|\\\nnet.ipv4.ip_local_port_range|\\\nnet.core.rmem_default|net.core.rmem_max|\\\nnet.core.wmem_default|net.core.wmem_max\"<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Add to \/etc\/sysctl.conf as root\nvi \/etc\/sysctl.conf<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># -------------------------------------------------------\n# Oracle OEM 19c Required Kernel Parameters\n# Added by DBA on &lt;date&gt;\n# -------------------------------------------------------\nkernel.shmall = 1073741824\nkernel.shmmax = 4398046511104\nkernel.shmmni = 4096\nkernel.sem = 250 32000 100 128\nfs.file-max = 6815744\nfs.aio-max-nr = 1048576\nnet.ipv4.ip_local_port_range = 9000 65500\nnet.core.rmem_default = 262144\nnet.core.rmem_max = 4194304\nnet.core.wmem_default = 262144\nnet.core.wmem_max = 1048576<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Apply immediately\n\/sbin\/sysctl -p\n\n# Verify\n\/sbin\/sysctl -a | grep -E \"kernel.shmall|fs.file-max\"<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">4.6 \u2014 Check and Set OS User Limits<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/etc\/security\/limits.conf<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># -------------------------------------------------------\n# Oracle OEM User Limits\n# -------------------------------------------------------\noracle   soft   nofile    1024\noracle   hard   nofile    65536\noracle   soft   nproc     2047\noracle   hard   nproc     16384\noracle   soft   stack     10240\noracle   hard   stack     32768\noracle   soft   memlock   3145728\noracle   hard   memlock   3145728<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">4.7 \u2014 Check Hostname and \/etc\/hosts<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why is hostname critical for OEM?<\/strong> OEM agents connect to OMS using the hostname. If the hostname changes or does not resolve correctly, ALL agents will lose connectivity to OMS. The hostname used during OEM installation is permanently embedded in OEM configuration files.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># Check hostname\nhostname\nhostname -f\n\n# Must resolve correctly\nnslookup $(hostname)\nnslookup $(hostname -f)\n\n# Check \/etc\/hosts\ngrep $(hostname) \/etc\/hosts<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>IMPORTANT:<\/strong> The hostname used during OEM installation must be the FQDN (Fully Qualified Domain Name). If you install OEM with a short hostname and later need to use FQDN, it requires a complex reconfiguration. Always use FQDN from the start.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Correct <code>\/etc\/hosts<\/code> entry:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>192.168.1.20   emserver01.company.com   emserver01<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">4.8 \u2014 Check Required Ports Are Available<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why?<\/strong> OEM uses specific ports. If any of these ports are already in use by another process, OEM installation will fail or OEM will not start correctly.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># Check if OEM ports are already in use\n# As root\nss -tlnp | grep -E \"7803|7301|7799|4903|3872|9701\"\n\n# OR using netstat\nnetstat -tlnp | grep -E \"7803|7301|7799|4903|3872|9701\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>OEM required ports:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><thead><tr><th>Port<\/th><th>Purpose<\/th><th>Direction<\/th><\/tr><\/thead><tbody><tr><td>7803<\/td><td>OEM Console HTTPS<\/td><td>Browser \u2192 OMS<\/td><\/tr><tr><td>7301<\/td><td>OMS internal HTTP<\/td><td>Internal<\/td><\/tr><tr><td>7799<\/td><td>WebLogic Admin Server<\/td><td>Internal\/Admin<\/td><\/tr><tr><td>4903<\/td><td>Agent upload (HTTPS)<\/td><td>Agent \u2192 OMS<\/td><\/tr><tr><td>3872<\/td><td>OEM Agent port<\/td><td>OMS \u2192 Agent<\/td><\/tr><tr><td>9701<\/td><td>Node Manager<\/td><td>Internal WebLogic<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>IMPORTANT:<\/strong> All ports listed above must be free (not in use by any process) before starting OEM installation. If any port is in use, identify the process and either stop it or configure OEM to use different ports during installation.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">4.9 \u2014 Check \/etc\/hosts Does Not Have localhost Mapping Issue<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why?<\/strong> A very common OEM installation failure is caused by the server&#8217;s hostname being mapped to 127.0.0.1 in <code>\/etc\/hosts<\/code>. OEM agents cannot connect to 127.0.0.1 from remote servers.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># Check for this specific issue\ngrep $(hostname) \/etc\/hosts | grep \"127.0.0.1\"\n\n# If the above returns any output \u2014 it is a problem\n# The server hostname must be mapped to the real IP, not 127.0.0.1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Wrong (causes OEM agent connectivity issues):<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>127.0.0.1   emserver01.company.com   emserver01<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Correct:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>192.168.1.20   emserver01.company.com   emserver01\n127.0.0.1      localhost<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">5. Repository Database Preparation<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>What is the OEM Repository Database?<\/strong> The repository (EMREP) is a regular Oracle database dedicated entirely to storing OEM data \u2014 monitoring metrics, alert history, job definitions and history, target configurations, user accounts, and everything else OEM needs to persist. It must be a dedicated database \u2014 never share it with application databases.<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>IMPORTANT:<\/strong> If the repository database is on the SAME server as OMS, install the Oracle Database software and create the EMREP database FIRST before installing OMS. OMS installer connects to the repository DB during installation.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">5.1 \u2014 Create Repository Database (EMREP)<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why a dedicated DB?<\/strong> The OEM repository grows continuously as it stores metric data. It can consume 50-200+ GB over time. A dedicated database allows you to manage its storage independently and tune it without affecting other applications.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># Create EMREP database using DBCA (silent)\nsu - oracle\n\ndbca -silent \\\n  -createDatabase \\\n  -templateName General_Purpose.dbc \\\n  -gdbName EMREP \\\n  -sid EMREP \\\n  -responseFile NO_VALUE \\\n  -characterSet AL32UTF8 \\\n  -sysPassword Oracle_123 \\\n  -systemPassword Oracle_123 \\\n  -createAsContainerDatabase false \\\n  -databaseType MULTIPURPOSE \\\n  -automaticMemoryManagement false \\\n  -totalMemory 8192 \\\n  -storageType FS \\\n  -datafileDestination \/u01\/app\/oracle\/oradata \\\n  -redoLogFileSize 300 \\\n  -emConfiguration NONE \\\n  -ignorePreReqs<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">5.2 \u2014 Configure Repository Database Parameters<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why special parameters for EMREP?<\/strong> The OEM repository has specific requirements \u2014 it needs session_cached_cursors for PL\/SQL performance, large SGA for caching metric data, and specific undo and temp sizes.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>-- Connect to EMREP database\nsqlplus \/ as sysdba\n\n-- Check current memory settings\nSHOW PARAMETER sga_target;\nSHOW PARAMETER pga_aggregate_target;\n\n-- Set required parameters for OEM repository\n-- OEM installer checks these \u2014 set before installation\nALTER SYSTEM SET SESSION_CACHED_CURSORS=200     SCOPE=SPFILE;\nALTER SYSTEM SET OPEN_CURSORS=300               SCOPE=BOTH;\nALTER SYSTEM SET PROCESSES=500                  SCOPE=SPFILE;\nALTER SYSTEM SET SESSION_MAX_OPEN_FILES=50      SCOPE=BOTH;\nALTER SYSTEM SET SHARED_POOL_SIZE=600M          SCOPE=SPFILE;\nALTER SYSTEM SET SGA_TARGET=4G                  SCOPE=SPFILE;\nALTER SYSTEM SET PGA_AGGREGATE_TARGET=1G        SCOPE=SPFILE;\nALTER SYSTEM SET DB_BLOCK_SIZE=8192             SCOPE=SPFILE;\nALTER SYSTEM SET LOG_BUFFER=10485760            SCOPE=SPFILE;\nALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'     SCOPE=BOTH;\nALTER SYSTEM SET UNDO_RETENTION=10800           SCOPE=BOTH;\nALTER SYSTEM SET RECYCLEBIN=OFF                 SCOPE=SPFILE;\n\n-- Restart database to apply SPFILE changes\nSHUTDOWN IMMEDIATE;\nSTARTUP;\n\n-- Verify key parameters after restart\nSHOW PARAMETER processes;\nSHOW PARAMETER sga_target;\nSHOW PARAMETER open_cursors;<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">5.3 \u2014 Check and Extend Tablespace Sizes for Repository<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why?<\/strong> OEM installer creates its own tablespaces in the repository database during installation. But the SYSTEM and UNDO tablespaces must have sufficient free space for the installation process itself.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>sqlplus \/ as sysdba\n\nset linesize 200\nset pagesize 100\ncol tablespace_name for a25\ncol total_mb        for 9999999\ncol free_mb         for 9999999\ncol used_pct        for 999.99\n\nSELECT df.tablespace_name,\n       ROUND(df.bytes\/1024\/1024,2)                 total_mb,\n       ROUND(NVL(fs.bytes,0)\/1024\/1024,2)           free_mb,\n       ROUND((1-NVL(fs.bytes,0)\/df.bytes)*100,2)    used_pct\nFROM  (SELECT tablespace_name, SUM(bytes) bytes\n       FROM   dba_data_files\n       GROUP BY tablespace_name) df,\n      (SELECT tablespace_name, SUM(bytes) bytes\n       FROM   dba_free_space\n       GROUP BY tablespace_name) fs\nWHERE  df.tablespace_name = fs.tablespace_name(+)\nORDER BY df.tablespace_name;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>-- SYSTEM tablespace must have at least 500MB free\n-- Extend if needed\nALTER TABLESPACE SYSTEM ADD DATAFILE\n    '\/u01\/app\/oracle\/oradata\/EMREP\/system02.dbf' SIZE 2G AUTOEXTEND ON NEXT 500M;\n\n-- UNDO tablespace must have at least 2GB free\nALTER TABLESPACE UNDOTBS1 ADD DATAFILE\n    '\/u01\/app\/oracle\/oradata\/EMREP\/undotbs02.dbf' SIZE 4G AUTOEXTEND ON NEXT 1G;\n\n-- TEMP tablespace must have at least 1GB free\nALTER TABLESPACE TEMP ADD TEMPFILE\n    '\/u01\/app\/oracle\/oradata\/EMREP\/temp02.dbf' SIZE 2G AUTOEXTEND ON NEXT 500M;<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">5.4 \u2014 Verify Repository Database is Ready<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>sqlplus \/ as sysdba\n\nset linesize 150\nset pagesize 50\ncol name      for a12\ncol open_mode for a15\ncol log_mode  for a15\n\n-- DB must be open in ARCHIVELOG mode\nSELECT name, open_mode, log_mode FROM v$database;\n\n-- Listener must be running and DB registered\nEXIT;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Test TNS connection to EMREP\ntnsping EMREP\nsqlplus system\/Oracle_123@EMREP<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">5.5 \u2014 Create OEM Prerequisite Check on Repository DB<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why run this before OMS install?<\/strong> The OEM installer runs its own repository prerequisite checks during installation. Running them beforehand lets you fix issues before the installer runs \u2014 saving time.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>sqlplus \/ as sysdba\n\n-- Check character set \u2014 must be AL32UTF8\nSELECT value FROM nls_database_parameters\nWHERE  parameter = 'NLS_CHARACTERSET';\n-- Must show: AL32UTF8\n\n-- Check time zone\nSELECT dbtimezone FROM dual;\n\n-- Check db_block_size (cannot be changed after creation)\nSHOW PARAMETER db_block_size;\n-- Must be 8192 (8KB) for OEM repository\n\n-- Check recyclebin is off\nSHOW PARAMETER recyclebin;\n-- Must show: OFF\n\n-- Check open_cursors\nSHOW PARAMETER open_cursors;\n-- Must be at least 300<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">6. OEM Software Download and Staging<\/h3>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">6.1 \u2014 Download OEM Cloud Control 19c Installer<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>OEM 19c installer is approximately 8 GB. Download from MOS:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Log into MOS: <a href=\"https:\/\/support.oracle.com\">https:\/\/support.oracle.com<\/a><\/li>\n\n\n\n<li>Go to Patches and Updates<\/li>\n\n\n\n<li>Search for patch <strong>32158462<\/strong> (OEM Cloud Control 19c for Linux x86-64)<\/li>\n\n\n\n<li>Download all parts (installer comes in multiple zip files)<\/li>\n\n\n\n<li><\/li>\n<\/ol>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># Verify all installer zip files are downloaded\nls -lh \/stage\/oem\/\n# Expected files:\n# em13500_linux64-1.zip\n# em13500_linux64-2.zip\n# em13500_linux64-3.zip\n# em13500_linux64-4.zip\n# em13500_linux64-5.zip\n\n# Verify checksums against MOS download page\nsha256sum \/stage\/oem\/em13500_linux64-1.zip\nsha256sum \/stage\/oem\/em13500_linux64-2.zip\n# etc.\n\n# Unzip all parts into staging directory\ncd \/stage\/oem\nunzip -q em13500_linux64-1.zip\nunzip -q em13500_linux64-2.zip\nunzip -q em13500_linux64-3.zip\nunzip -q em13500_linux64-4.zip\nunzip -q em13500_linux64-5.zip\n\n# Verify installer is present after extraction\nls -lh \/stage\/oem\/em13500_linux64\/\nls \/stage\/oem\/em13500_linux64\/runInstaller<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">6.2 \u2014 Create OMS Directory Structure<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># As root \u2014 create directories\nmkdir -p \/u01\/app\/oracle\/product\/OMS\/19c\nmkdir -p \/u01\/app\/oracle\/gc_inst\n\n# Convention B\n# mkdir -p \/oracle\/OMS\/19c\n# mkdir -p \/oracle\/gc_inst\n\n# Set ownership\nchown -R oracle:oinstall \/u01\/app\/oracle\/product\/OMS\nchown -R oracle:oinstall \/u01\/app\/oracle\/gc_inst\nchmod -R 775 \/u01\/app\/oracle\/product\/OMS\nchmod -R 775 \/u01\/app\/oracle\/gc_inst\n\n# Verify\nls -ld \/u01\/app\/oracle\/product\/OMS\/19c\nls -ld \/u01\/app\/oracle\/gc_inst<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">7. OEM OMS Installation<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>IMPORTANT:<\/strong> OEM installation takes 60-120 minutes depending on server speed. Do NOT close the terminal, do NOT interrupt the process once started. Have root access ready in a separate terminal for running root scripts when prompted.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">7.1 \u2014 Create Silent Response File for OMS Installation<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why silent installation?<\/strong> OEM&#8217;s GUI installer requires X11\/display which is often unavailable on production Linux servers. Silent mode is the standard approach in real environments.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># Create response file for OMS installation\nsu - oracle\nvi \/stage\/oem\/em_install.rsp<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Add the following content:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># -------------------------------------------------------\n# Oracle Enterprise Manager Cloud Control 19c\n# Silent Installation Response File\n# -------------------------------------------------------\n\n# Installation type \u2014 INSTALL is fresh OMS installation\nINSTALL_UPDATES_SELECTION=skip\n\n# OMS Oracle Home location\nORACLE_MIDDLEWARE_HOME_LOCATION=\/u01\/app\/oracle\/product\/OMS\/19c\n\n# OMS Oracle Home (same as middleware home for OEM 19c)\nORACLE_HOSTNAME=emserver01.company.com\n\n# WebLogic Server credentials\nWLS_ADMIN_SERVER_USERNAME=weblogic\nWLS_ADMIN_SERVER_PASSWORD=Weblogic_123\nWLS_ADMIN_SERVER_CONFIRM_PASSWORD=Weblogic_123\n\n# Node Manager password\nNODE_MANAGER_PASSWORD=NodeMgr_123\nNODE_MANAGER_CONFIRM_PASSWORD=NodeMgr_123\n\n# OMS instance base \u2014 where OMS runtime files go\nOMS_INSTANCE_HOME=\/u01\/app\/oracle\/gc_inst\n\n# GCDomain \u2014 WebLogic domain name for OEM\nEM_GC_DOMAIN_NAME=GCDomain\n\n# Agent base directory\nAGENT_BASE_DIR=\/u01\/app\/oracle\/agent\n\n# Repository database connection details\nDATABASE_HOSTNAME=emserver01.company.com\nLISTENER_PORT=1521\nSERVICENAME_OR_SID=EMREP\nSYS_PASSWORD=Oracle_123\n\n# OEM repository schema credentials (created during install)\nSYSMAN_PASSWORD=Sysman_123\nSYSMAN_CONFIRM_PASSWORD=Sysman_123\n\n# OEM Admin server ports\nEM_UPLOAD_PORT=4903\nAGENT_PORT=3872<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">7.2 \u2014 Run OMS Silent Installation<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># As oracle user\nsu - oracle\n\ncd \/stage\/oem\/em13500_linux64\n\n# Run OMS installer in silent mode\n.\/runInstaller -silent \\\n    -responseFile \/stage\/oem\/em_install.rsp \\\n    -noconfig \\\n    -invPtrLoc \/u01\/app\/oraInventory\/oraInst.loc \\\n    ORACLE_HOME=\/u01\/app\/oracle\/product\/OMS\/19c \\\n    ORACLE_BASE=\/u01\/app\/oracle \\\n    -showProgress \\\n    <strong>2<\/strong>&gt;<strong>&amp;1<\/strong> | tee \/tmp\/ems_install.log<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Monitor installation log in another terminal:<\/strong><\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -100f \/tmp\/ems_install.log\n# OR\ntail -100f \/u01\/app\/oracle\/product\/OMS\/19c\/install\/logs\/emInstall*.log<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>IMPORTANT:<\/strong> The installation takes 60-120 minutes. You will see progress output on the screen. Watch for any ERROR messages. If the installer pauses at any prerequisite check failure, note the error, fix it, and rerun.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">7.3 \u2014 Run Root Scripts When Prompted<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why two root scripts?<\/strong> Same as Oracle DB installation \u2014 OrainstRoot.sh registers the inventory, root.sh sets permissions on system-level files and starts OS-level OEM services.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># When installer prompts \u2014 open new terminal and run as root\n\n# Step 1 \u2014 Run orainstRoot.sh first\n\/u01\/app\/oraInventory\/orainstRoot.sh\n\n# Step 2 \u2014 Run allroot.sh (OEM uses allroot.sh, not root.sh)\n\/u01\/app\/oracle\/product\/OMS\/19c\/allroot.sh<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd After root scripts complete \u2014 go back to installer terminal and press <strong>Enter<\/strong> to continue.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">7.4 \u2014 Run OMS Configuration (emctl Configuration)<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why a separate configuration step?<\/strong> The installer installs the OMS software. The configuration step (<code>-noconfig<\/code> was used above) connects to the repository database, creates the OEM schema (SYSMAN), creates all OEM tablespaces, loads initial data, and configures the WebLogic domain. This is where most of the 60-120 minutes is actually spent.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># As oracle user \u2014 run OMS configuration\nsu - oracle\n\n$ORACLE_HOME\/sysman\/install\/ConfigureGC.pl \\\n    -responseFile \/stage\/oem\/em_install.rsp \\\n    <strong>2<\/strong>&gt;<strong>&amp;1<\/strong> | tee \/tmp\/ems_config.log<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd Monitor configuration progress:<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -100f \/tmp\/ems_config.log<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Expected success message at the end:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Enterprise Manager Cloud Control Installation Completed Successfully!\nOEM URL: https:\/\/emserver01.company.com:7803\/em\nWebLogic Admin URL: https:\/\/emserver01.company.com:7799\/console<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">7.5 \u2014 Set OEM Environment Variables<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># Add to oracle user's ~\/.bash_profile on OMS server\nsu - oracle\nvi ~\/.bash_profile<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># -------------------------------------------------------\n# Oracle OEM Environment Variables\n# -------------------------------------------------------\n\n# OMS Oracle Home\nexport OMS_HOME=\/u01\/app\/oracle\/product\/OMS\/19c\n# Convention B: export OMS_HOME=\/oracle\/OMS\/19c\n\n# OMS Instance Home\nexport OMS_INSTANCE=\/u01\/app\/oracle\/gc_inst\n# Convention B: export OMS_INSTANCE=\/oracle\/gc_inst\n\n# Add OMS bin to PATH\nexport PATH=$OMS_HOME\/bin:$PATH\n\n# Useful aliases for OEM management\nalias emctl='$OMS_HOME\/bin\/emctl'\nalias emcli='$OMS_HOME\/bin\/emcli'\nalias oms_start='$OMS_HOME\/bin\/emctl start oms'\nalias oms_stop='$OMS_HOME\/bin\/emctl stop oms -all'\nalias oms_status='$OMS_HOME\/bin\/emctl status oms'<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Apply profile\n. ~\/.bash_profile<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">8. Post-OMS Installation Verification<\/h3>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">8.1 \u2014 Check OMS Status<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>su - oracle\n\n# Check overall OMS status\nemctl status oms\n\n# Check OMS detailed status\nemctl status oms -details<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Expected output:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Oracle Enterprise Manager Cloud Control 19c Copyright (c) 1996, 2019 Oracle Corporation.\nWebTier is Up\nOracle Management Server is Up\nJVMD Engine is Up<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">8.2 \u2014 Verify OEM Console is Accessible<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># Check OEM URL is responding\ncurl -k -I https:\/\/emserver01.company.com:7803\/em\n\n# Expected: HTTP\/1.1 200 OK or 302 redirect<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd Open a browser and navigate to:<br><code>https:\/\/emserver01.company.com:7803\/em<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Login with:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Username: <code>sysman<\/code><\/li>\n\n\n\n<li>Password: <code>Sysman_123<\/code> (whatever you set in response file)<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">8.3 \u2014 Check Repository Database Connection from OMS<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>su - oracle\n\n# Check OMS can connect to repository\nemctl config oms -list_repos_details\n\n# Check SYSMAN schema status\nsqlplus \/ as sysdba<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>-- Connect to EMREP and check OEM schema\nset linesize 200\nset pagesize 100\ncol username    for a25\ncol status      for a15\ncol expiry_date for a20\n\nSELECT username, account_status, expiry_date\nFROM   dba_users\nWHERE  username LIKE '%SYSMAN%'\n   OR  username LIKE '%MGMT%'\nORDER BY username;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What to look for:<\/strong> SYSMAN account must show <code>OPEN<\/code> status. If it shows <code>EXPIRED<\/code> or <code>LOCKED<\/code>, unlock and change password:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ALTER USER sysman ACCOUNT UNLOCK;\nALTER USER sysman IDENTIFIED BY Sysman_123;<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">8.4 \u2014 Check All OEM Tablespaces in Repository<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>-- Connect to EMREP\nsqlplus \/ as sysdba\n\nset linesize 200\nset pagesize 100\ncol tablespace_name for a30\ncol total_mb        for 9999999\ncol free_mb         for 9999999\ncol used_pct        for 999.99\n\nSELECT df.tablespace_name,\n       ROUND(df.bytes\/1024\/1024,2)                 total_mb,\n       ROUND(NVL(fs.bytes,0)\/1024\/1024,2)           free_mb,\n       ROUND((1-NVL(fs.bytes,0)\/df.bytes)*100,2)    used_pct\nFROM  (SELECT tablespace_name, SUM(bytes) bytes\n       FROM   dba_data_files\n       GROUP BY tablespace_name) df,\n      (SELECT tablespace_name, SUM(bytes) bytes\n       FROM   dba_free_space\n       GROUP BY tablespace_name) fs\nWHERE  df.tablespace_name = fs.tablespace_name(+)\nORDER BY df.tablespace_name;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>OEM creates these tablespaces in the repository:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><thead><tr><th>Tablespace<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td>MGMT_TABLESPACE<\/td><td>Main OEM data<\/td><\/tr><tr><td>MGMT_ECM_DEPOT_TS<\/td><td>Configuration management<\/td><\/tr><tr><td>MGMT_AD4J_TS<\/td><td>Application Diagnostics<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">9. OEM Agent Deployment<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why do you need agents?<\/strong> OEM console can only show you what its agents report. Without an agent on a target server, OEM has no visibility into that server&#8217;s databases, hosts, listeners, or any other targets. Every server you want to monitor must have an OEM agent installed.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">9.1 \u2014 Agent Deployment Methods Overview<\/h4>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><thead><tr><th>Method<\/th><th>When to Use<\/th><th>Requires<\/th><\/tr><\/thead><tbody><tr><td>Push (Recommended)<\/td><td>Target is reachable via SSH from OMS server<\/td><td>SSH from OMS to target, oracle user on target<\/td><\/tr><tr><td>Pull (Agent Gold Image)<\/td><td>Large deployments, standardized rollout<\/td><td>Target initiates download from OMS<\/td><\/tr><tr><td>Manual (Response File)<\/td><td>When SSH is not available, air-gapped networks<\/td><td>Physical\/console access to target<\/td><\/tr><tr><td>RPM<\/td><td>Linux only, quick deployment<\/td><td>Root access on target<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>This SOP covers the Push method<\/strong> \u2014 most common in enterprise environments.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">9.2 \u2014 Pre-Deployment Checks on Target Server (Agent Host)<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Run these checks on EVERY server where you want to install the agent BEFORE attempting deployment.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># On TARGET SERVER (the server being monitored)\n\n# Check OS version\ncat \/etc\/os-release\n\n# Check disk space \u2014 agent needs about 1GB\ndf -hP \/u01\/app\/oracle\/agent\n# OR wherever you plan to install the agent\n\n# Verify oracle user exists\nid oracle\n\n# Check hostname resolves from OMS server\n# Run on OMS server:\nnslookup dbserver01.company.com\nping -c 3 dbserver01.company.com\n\n# Verify OMS can SSH to target as oracle user\n# Run on OMS server:\nssh oracle@dbserver01 hostname\nssh oracle@dbserver01 date<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>SSH must work WITHOUT password<\/strong> from OMS server to target as oracle user. Set up SSH key equivalence if not already done:<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># On OMS server as oracle user\nsu - oracle\n\n# Generate SSH key if not exists\nls ~\/.ssh\/id_rsa || ssh-keygen -t rsa -b 2048 -N \"\"\n\n# Copy public key to target server\nssh-copy-id oracle@dbserver01\n\n# Test passwordless SSH\nssh oracle@dbserver01 hostname<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">9.3 \u2014 Deploy Agent Using Push Method (OEM Console)<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why push from console?<\/strong> The OEM console push method is the easiest and most reliable for individual agents or small numbers of targets. It downloads the agent software from OMS, installs it on the target, and automatically registers the target back with OMS.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Steps in OEM Console:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Log into OEM Console: <code>https:\/\/emserver01.company.com:7803\/em<\/code><\/li>\n\n\n\n<li>Go to <strong>Setup<\/strong> \u2192 <strong>Add Target<\/strong> \u2192 <strong>Add Targets Manually<\/strong><\/li>\n\n\n\n<li>Select <strong>Install Agent on Host<\/strong><\/li>\n\n\n\n<li>Click <strong>Add<\/strong> to add target hosts<\/li>\n\n\n\n<li>Enter hostname: <code>dbserver01.company.com<\/code><\/li>\n\n\n\n<li>Platform: <code>Linux x86-64<\/code><\/li>\n\n\n\n<li>Installation Base Directory: <code>\/u01\/app\/oracle\/agent<\/code><\/li>\n\n\n\n<li>Instance Directory: <code>\/u01\/app\/oracle\/agent\/agent_inst<\/code><\/li>\n\n\n\n<li>Named Credential: Create or select oracle user SSH credentials<\/li>\n\n\n\n<li>Click <strong>Next<\/strong> then <strong>Deploy Agent<\/strong><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">9.4 \u2014 Deploy Agent Using Command Line (agentDeploy.sh)<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Use this method when OEM console is not accessible or for scripted deployments.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># On OMS server as oracle user\nsu - oracle\n\n# Download agent software to target using OMS-provided script\n$OMS_HOME\/bin\/emcli login -username=sysman -password=Sysman_123\n\n# Deploy agent to target host\n$OMS_HOME\/bin\/emcli add_target \\\n    -name=\"dbserver01.company.com\" \\\n    -type=\"host\" \\\n    -host=\"dbserver01.company.com\" \\\n    -properties=\"OracleHome:\/u01\/app\/oracle\/product\/19.3.0\/dbhome_1,port:1521\"<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Alternative \u2014 manual agent deployment using response file\n# Generate agent response file on OMS server\nsu - oracle\n\ncat &gt; \/tmp\/agent_deploy.rsp &lt;&lt; 'EOF'\nOMS_HOST=emserver01.company.com\nEM_UPLOAD_PORT=4903\nAGENT_REGISTRATION_PASSWORD=AgentReg_123\nORACLE_HOSTNAME=dbserver01.company.com\nAGENT_PORT=3872\nINSTALL_TYPE=AGENT_ONLY\nAGENT_BASE_DIR=\/u01\/app\/oracle\/agent\nAGENT_INSTANCE_HOME=\/u01\/app\/oracle\/agent\/agent_inst\nEOF\n\n# Copy agent installer to target server\nscp $OMS_HOME\/install\/agentDeploy.sh oracle@dbserver01:\/tmp\/\nscp -r \/stage\/oem\/agent_software oracle@dbserver01:\/tmp\/\n\n# Run agent installer on target server\nssh oracle@dbserver01 \"\/tmp\/agentDeploy.sh \\\n    AGENT_BASE_DIR=\/u01\/app\/oracle\/agent \\\n    OMS_HOST=emserver01.company.com \\\n    EM_UPLOAD_PORT=4903 \\\n    AGENT_REGISTRATION_PASSWORD=AgentReg_123 \\\n    -invPtrLoc \/u01\/app\/oraInventory\/oraInst.loc\"<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">9.5 \u2014 Verify Agent Installation on Target Server<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># On TARGET SERVER after agent deployment\nsu - oracle\n\n# Check agent home\nls -lh \/u01\/app\/oracle\/agent\/agent_19*\/bin\/emctl\n\n# Set agent environment\nexport AGENT_HOME=\/u01\/app\/oracle\/agent\/agent_19.x.x.x.x\nexport PATH=$AGENT_HOME\/bin:$PATH\n\n# Check agent status\n$AGENT_HOME\/bin\/emctl status agent<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Expected output:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Oracle Enterprise Manager Cloud Control 19c Release\nCopyright (c) 1996, 2019 Oracle Corporation. All rights reserved.\n---------------------------------------------------------------\nAgent Version          : 19.x.x.x.x\nOMS Version            : 19.x.x.x.x\nProtocol Version       : 12.1.0.1.0\nAgent Home             : \/u01\/app\/oracle\/agent\/agent_19.x.x.x.x\nAgent Log Directory    : \/u01\/app\/oracle\/agent\/agent_inst\/sysman\/log\nAgent Binaries         : \/u01\/app\/oracle\/agent\/agent_19.x.x.x.x\nCore JAR Location      : \/u01\/app\/oracle\/agent\/agent_19.x.x.x.x\/jlib\nAgent Process ID       : 12345\nParent Process ID      : 12344\nAgent URL              : https:\/\/dbserver01.company.com:3872\/emd\/main\/\nRepository URL         : https:\/\/emserver01.company.com:4903\/empbs\/upload\nStarted at             : 2024-01-15 10:30:00\nStarted by user        : oracle\nLast Reload            : (none)\nLast successful upload : 2024-01-15 10:35:00\nLast attempted upload  : 2024-01-15 10:35:00\nTotal Megabytes of XML files uploaded so far: 1.5\nNumber of XML files pending upload          : 0\nSize of XML files pending upload            : 0 kB\nAvailable disk space on upload filesystem   : 45.00%\nCollection Status                           : Collections enabled\nHeartbeat Status                            : Ok\n---------------------------------------------------------------\nAgent is Running and Ready<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">9.6 \u2014 Secure Agent Communication<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why?<\/strong> Agent-to-OMS communication must be secured. The agent must be authorized by OMS before it can upload data. This is done via the <code>secure<\/code> command.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># On TARGET SERVER\nsu - oracle\nexport AGENT_HOME=\/u01\/app\/oracle\/agent\/agent_19.x.x.x.x\n\n# Secure the agent (register with OMS using password)\n$AGENT_HOME\/bin\/emctl secure agent AgentReg_123\n\n# Restart agent after securing\n$AGENT_HOME\/bin\/emctl stop agent\n$AGENT_HOME\/bin\/emctl start agent\n$AGENT_HOME\/bin\/emctl status agent<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">10. Target Discovery and Configuration<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>What is target discovery?<\/strong> After the agent is installed, OEM does not automatically know what targets (databases, listeners, ASM instances) exist on that server. You must either let OEM auto-discover them or manually add them. Discovery scans the agent host and finds Oracle targets.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">10.1 \u2014 Auto-Discover Targets via OEM Console<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Steps in OEM Console:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Setup<\/strong> \u2192 <strong>Add Target<\/strong> \u2192 <strong>Configure Auto Discovery<\/strong><\/li>\n\n\n\n<li>Select the host where agent is installed<\/li>\n\n\n\n<li>Click <strong>Discover Now<\/strong><\/li>\n\n\n\n<li>OEM scans the host and lists all found Oracle targets<\/li>\n\n\n\n<li>Select targets to add (databases, listeners, ASM)<\/li>\n\n\n\n<li>Provide credentials (DB passwords for monitoring)<\/li>\n\n\n\n<li>Click <strong>Add Targets<\/strong><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">10.2 \u2014 Add Database Target Manually via Command Line<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># On OMS server\nsu - oracle\n\n# Login to EM CLI\n$OMS_HOME\/bin\/emcli login -username=sysman -password=Sysman_123\n\n# Add Oracle database target\n$OMS_HOME\/bin\/emcli add_target \\\n    -name=\"ORCL_dbserver01.company.com\" \\\n    -type=\"oracle_database\" \\\n    -host=\"dbserver01.company.com\" \\\n    -credentials=\"UserName:dbsnmp;password:dbsnmp_123;Role:Normal\" \\\n    -properties=\"SID:ORCL;Port:1521;OracleHome:\/u01\/app\/oracle\/product\/19.3.0\/dbhome_1;MachineName:dbserver01.company.com\"<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">10.3 \u2014 Create DBSNMP User on Monitored Databases<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why DBSNMP?<\/strong> OEM agent connects to each database using the DBSNMP account to collect monitoring metrics. DBSNMP is a dedicated low-privilege monitoring account created during database installation. It must be unlocked and have a password set before OEM can monitor the database.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>-- On each MONITORED database (ORCL, etc.)\nsqlplus \/ as sysdba\n\n-- Check DBSNMP status\nSELECT username, account_status\nFROM   dba_users\nWHERE  username = 'DBSNMP';\n\n-- Unlock and set password\nALTER USER dbsnmp IDENTIFIED BY dbsnmp_123 ACCOUNT UNLOCK;\n\n-- Verify\nSELECT username, account_status, expiry_date\nFROM   dba_users\nWHERE  username = 'DBSNMP';\n\n-- Test connection\nCONNECT dbsnmp\/dbsnmp_123\nSELECT 'DBSNMP connection OK' FROM dual;<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">10.4 \u2014 Verify Targets Are Monitored in OEM Console<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Check in OEM Console:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Targets<\/strong> \u2192 <strong>All Targets<\/strong><\/li>\n\n\n\n<li>Filter by type (Host, Database, Listener etc.)<\/li>\n\n\n\n<li>Status column must show <strong>Up<\/strong> (green) for all targets<\/li>\n\n\n\n<li>Any target showing <strong>Down<\/strong> (red) or <strong>Unknown<\/strong> (grey) needs investigation<\/li>\n<\/ol>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">11. Monitoring Configuration<\/h3>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">11.1 \u2014 Configure Metric Thresholds<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why configure thresholds?<\/strong> Out-of-the-box OEM has default thresholds for metrics like CPU, tablespace usage, wait events etc. These defaults may not match your environment \u2014 for example, a 90% tablespace threshold may be too high for a fast-growing OLTP database. Always review and customize thresholds for each target.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>In OEM Console:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Targets<\/strong> \u2192 Select your database target<\/li>\n\n\n\n<li>Click <strong>Oracle Database<\/strong> menu \u2192 <strong>Monitoring<\/strong> \u2192 <strong>Metric and Collection Settings<\/strong><\/li>\n\n\n\n<li>Find the metric (e.g., Tablespace Space Used %)<\/li>\n\n\n\n<li>Set <strong>Warning Threshold<\/strong>: 80%<\/li>\n\n\n\n<li>Set <strong>Critical Threshold<\/strong>: 90%<\/li>\n\n\n\n<li>Click <strong>OK<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Key metrics to configure thresholds for:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table class=\"has-fixed-layout\"><thead><tr><th>Metric<\/th><th>Warning<\/th><th>Critical<\/th><\/tr><\/thead><tbody><tr><td>Tablespace Space Used (%)<\/td><td>80%<\/td><td>90%<\/td><\/tr><tr><td>CPU Utilization (%)<\/td><td>80%<\/td><td>95%<\/td><\/tr><tr><td>Memory Utilization (%)<\/td><td>85%<\/td><td>95%<\/td><\/tr><tr><td>Response Time per Call<\/td><td>1 sec<\/td><td>5 sec<\/td><\/tr><tr><td>Archive Area Used (%)<\/td><td>70%<\/td><td>85%<\/td><\/tr><tr><td>Redo Log Switch Rate<\/td><td>20\/hr<\/td><td>40\/hr<\/td><\/tr><tr><td>Active Sessions<\/td><td>80% max sessions<\/td><td>90% max sessions<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">11.2 \u2014 Configure Notification Rules<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why?<\/strong> Alerts in OEM are useless if no one gets notified. Configure notification rules to send email when critical alerts fire.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>In OEM Console:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Setup<\/strong> \u2192 <strong>Notifications<\/strong> \u2192 <strong>Notification Methods<\/strong><\/li>\n\n\n\n<li>Configure SMTP server settings (your company mail relay)<\/li>\n\n\n\n<li>Test email connectivity<\/li>\n\n\n\n<li>Go to <strong>Setup<\/strong> \u2192 <strong>Notifications<\/strong> \u2192 <strong>My Notification Rules<\/strong><\/li>\n\n\n\n<li>Create rule for <strong>Critical<\/strong> and <strong>Warning<\/strong> alerts<\/li>\n\n\n\n<li>Add your email address as recipient<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">11.3 \u2014 Set Up Monitoring Templates<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why templates?<\/strong> When you manage many databases, applying thresholds individually is impractical. Create a monitoring template once and apply it to all databases of the same type (OLTP, Reporting, Dev etc.).<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>In OEM Console:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Enterprise<\/strong> \u2192 <strong>Monitoring<\/strong> \u2192 <strong>Monitoring Templates<\/strong><\/li>\n\n\n\n<li>Click <strong>Create<\/strong><\/li>\n\n\n\n<li>Name: <code>PROD_DB_Template<\/code><\/li>\n\n\n\n<li>Target Type: <code>Oracle Database<\/code><\/li>\n\n\n\n<li>Configure all thresholds in the template<\/li>\n\n\n\n<li>Click <strong>Apply to Targets<\/strong> to apply to multiple databases at once<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">12. Blackout Configuration<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>What is a blackout?<\/strong> A blackout is an OEM-managed maintenance period during which alerts for specific targets are suppressed. During patching, OS reboots, or planned maintenance, you do not want OEM sending false alerts. Creating a blackout tells OEM to silence alerts for the specified targets during the maintenance window.<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why not just ignore alerts?<\/strong> A blackout also stops metric collection during the window \u2014 so your historical data does not show a spike or dip caused by the maintenance. It also properly marks the target as &#8220;In Maintenance&#8221; in OEM reports.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">12.1 \u2014 Create Immediate Blackout via Command Line<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># On OMS server as oracle user\nsu - oracle\n\n# Create immediate blackout for a database target\nemctl start blackout \\\n    &lt;blackout_name&gt; \\\n    -nodelevel \\\n    &lt;target_name&gt;:&lt;target_type&gt; \\\n    -d &lt;duration_in_minutes&gt;\n\n# Example \u2014 blackout ORCL database for 60 minutes\nemctl start blackout PATCH_BLACKOUT_ORCL \\\n    -nodelevel \\\n    ORCL_dbserver01.company.com:oracle_database \\\n    -d 60\n\n# Blackout entire host including all targets on it\nemctl start blackout HOST_MAINTENANCE_dbserver01 \\\n    dbserver01.company.com:host \\\n    -d 120\n\n# Check blackout status\nemctl status blackout PATCH_BLACKOUT_ORCL<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">12.2 \u2014 Stop a Blackout<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># Stop a running blackout\nemctl stop blackout PATCH_BLACKOUT_ORCL\n\n# Verify blackout stopped\nemctl status blackout PATCH_BLACKOUT_ORCL<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">12.3 \u2014 Create Scheduled Blackout via OEM Console<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Use scheduled blackouts for recurring maintenance<\/strong> \u2014 for example, every Sunday morning for weekly maintenance windows.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>In OEM Console:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Targets<\/strong> \u2192 Select target<\/li>\n\n\n\n<li>Click <strong>Oracle Database<\/strong> \u2192 <strong>Control<\/strong> \u2192 <strong>Create Blackout<\/strong><\/li>\n\n\n\n<li>Name: <code>WEEKLY_MAINTENANCE<\/code><\/li>\n\n\n\n<li>Select target(s) to blackout<\/li>\n\n\n\n<li>Schedule: Repeating, Every Sunday, 02:00 AM &#8211; 06:00 AM<\/li>\n\n\n\n<li>Reason: Scheduled Maintenance<\/li>\n\n\n\n<li>Click <strong>OK<\/strong><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">12.4 \u2014 Create Blackout via EM CLI (Scriptable)<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># Create blackout using EM CLI (can be scripted for automated maintenance)\nsu - oracle\n\n# Login to EM CLI\n$OMS_HOME\/bin\/emcli login -username=sysman -password=Sysman_123\n\n# Create blackout\n$OMS_HOME\/bin\/emcli create_blackout \\\n    -name=\"PATCH_BLACKOUT_ORCL\" \\\n    -target_list=\"ORCL_dbserver01.company.com:oracle_database\" \\\n    -schedule=\"frequency:once;duration:60\" \\\n    -reason=\"Database patching\"\n\n# Start the blackout\n$OMS_HOME\/bin\/emcli start_blackout -name=\"PATCH_BLACKOUT_ORCL\"\n\n# Check status\n$OMS_HOME\/bin\/emcli get_blackout_status -name=\"PATCH_BLACKOUT_ORCL\"\n\n# Stop the blackout when maintenance is done\n$OMS_HOME\/bin\/emcli stop_blackout -name=\"PATCH_BLACKOUT_ORCL\"<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">13. OEM Startup and Shutdown Procedures<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Why a specific startup sequence?<\/strong> OEM components have dependencies. Starting them in the wrong order causes connection failures. Always follow the sequence below.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">13.1 \u2014 Correct Startup Sequence<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>su - oracle\n\n# STEP 1 \u2014 Start Repository Database first\n# OMS cannot start without the repository database\nexport ORACLE_SID=EMREP\nsqlplus \/ as sysdba<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>STARTUP;\nEXIT;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># STEP 2 \u2014 Start Listener for repository database\nlsnrctl start\n\n# STEP 3 \u2014 Start OMS (includes WebLogic and OEM application)\nemctl start oms\n\n# STEP 4 \u2014 Verify OMS started\nemctl status oms\n\n# STEP 5 \u2014 Start agents on all managed servers\n# On each managed server:\n$AGENT_HOME\/bin\/emctl start agent\n$AGENT_HOME\/bin\/emctl status agent<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">13.2 \u2014 Correct Shutdown Sequence<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>su - oracle\n\n# STEP 1 \u2014 Stop OMS first\n# -all flag also stops the WebLogic Admin Server and Node Manager\nemctl stop oms -all\n\n# STEP 2 \u2014 Verify OMS stopped\nemctl status oms\n\n# STEP 3 \u2014 Stop Listener\nlsnrctl stop\n\n# STEP 4 \u2014 Stop Repository Database\nexport ORACLE_SID=EMREP\nsqlplus \/ as sysdba<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>SHUTDOWN IMMEDIATE;\nEXIT;<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>IMPORTANT:<\/strong> Never shut down the repository database before stopping OMS. If OMS is running and the repository DB goes down, OMS will crash ungracefully and may require a restart with <code>emctl stop oms -force<\/code> to recover.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">14. OEM Patching<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>OEM itself needs to be patched.<\/strong> Oracle releases patches for OEM OMS and agents regularly. OEM patching has its own sequence and is separate from database patching.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">14.1 \u2014 Check Current OEM Version<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>su - oracle\n\n# Check OMS version\nemctl status oms | grep \"OMS Version\"\n\n# Check agent version on any target\n$AGENT_HOME\/bin\/emctl status agent | grep \"Agent Version\"<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">14.2 \u2014 Apply OEM Plugin\/Bundle Patch (Overview)<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>OEM patching sequence:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Download OEM patch from MOS (search for EM13c patches)<\/li>\n\n\n\n<li>Stop OMS<\/li>\n\n\n\n<li>Apply patch to OMS home using OPatch<\/li>\n\n\n\n<li>Start OMS<\/li>\n\n\n\n<li>Deploy updated agents to all managed hosts<\/li>\n\n\n\n<li>Verify all targets are still reporting correctly<\/li>\n<\/ol>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># Stop OMS before patching\nemctl stop oms -all\n\n# Apply patch to OMS home\n$OMS_HOME\/OPatch\/opatch apply \\\n    -oh $OMS_HOME \\\n    -silent \\\n    \/stage\/oem_patches\/&lt;PATCHNUM&gt;\n\n# Start OMS after patching\nemctl start oms\n\n# Verify OMS started with new version\nemctl status oms<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcce OEM patch downloads: MOS \u2192 Patches &amp; Updates \u2192 search <strong>&#8220;Enterprise Manager Base Platform&#8221;<\/strong><\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">15. Post-Installation Checks<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>IMPORTANT:<\/strong> Complete all post-installation checks before declaring OEM ready for use by the team.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">15.1 \u2014 Verify OMS is Running<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>su - oracle\nemctl status oms\nemctl status oms -details<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>All components must show UP.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">15.2 \u2014 Verify OEM Console Login<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># Test HTTPS connectivity\ncurl -k -I https:\/\/emserver01.company.com:7803\/em\n\n# Open browser and login\n# URL: https:\/\/emserver01.company.com:7803\/em\n# Username: sysman\n# Password: Sysman_123<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">15.3 \u2014 Verify All Agents Are Up and Uploading<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># On OMS server \u2014 check all agent status via EM CLI\nsu - oracle\n$OMS_HOME\/bin\/emcli login -username=sysman -password=Sysman_123\n$OMS_HOME\/bin\/emcli get_agents_status<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>In OEM Console:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Setup<\/strong> \u2192 <strong>Manage Cloud Control<\/strong> \u2192 <strong>Agents<\/strong><\/li>\n\n\n\n<li>All agents must show <strong>Up<\/strong> status<\/li>\n\n\n\n<li>Last Upload Time must be recent (within last 5 minutes)<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">15.4 \u2014 Verify All Targets Are Monitored<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># Check target status via EM CLI\n$OMS_HOME\/bin\/emcli get_targets \\\n    -targets=\"oracle_database\" \\\n    -status=all<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>In OEM Console:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Targets<\/strong> \u2192 <strong>All Targets<\/strong><\/li>\n\n\n\n<li>Filter by Target Type = Oracle Database<\/li>\n\n\n\n<li>Status must be <strong>Up<\/strong> for all targets<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">15.5 \u2014 Check Repository Database Alert Log<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># Check EMREP alert log for any OEM-related errors\ntail -200 \/u01\/app\/oracle\/diag\/rdbms\/emrep\/EMREP\/trace\/alert_EMREP.log \\\n     | grep -E \"ORA-|Error|WARNING\"<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">15.6 \u2014 Check OMS Log Files<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># OMS application log\ntail -200 $OMS_INSTANCE\/em\/EMGC_OMS1\/sysman\/log\/emoms.log \\\n     | grep -E \"ERROR|FATAL|Exception\"\n\n# OMS startup log\ntail -200 $OMS_INSTANCE\/em\/EMGC_OMS1\/sysman\/log\/emoms.trc \\\n     | grep -E \"ERROR|FATAL\"\n\n# OEM secure log\nls -lh $OMS_INSTANCE\/em\/EMGC_OMS1\/sysman\/log\/<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">15.7 \u2014 Verify WebLogic Admin Server is Running<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># Check WebLogic Admin Server status\nemctl status oms | grep -i weblogic\n\n# Access WebLogic Admin Console\n# URL: https:\/\/emserver01.company.com:7799\/console\n# Username: weblogic\n# Password: Weblogic_123<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">15.8 \u2014 Check OEM Tablespace Usage in Repository<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>sqlplus \/ as sysdba\n\nset linesize 200\nset pagesize 100\ncol tablespace_name for a30\ncol total_mb        for 9999999\ncol free_mb         for 9999999\ncol used_pct        for 999.99\n\nSELECT df.tablespace_name,\n       ROUND(df.bytes\/1024\/1024,2)                 total_mb,\n       ROUND(NVL(fs.bytes,0)\/1024\/1024,2)           free_mb,\n       ROUND((1-NVL(fs.bytes,0)\/df.bytes)*100,2)    used_pct\nFROM  (SELECT tablespace_name, SUM(bytes) bytes\n       FROM   dba_data_files\n       GROUP BY tablespace_name) df,\n      (SELECT tablespace_name, SUM(bytes) bytes\n       FROM   dba_free_space\n       GROUP BY tablespace_name) fs\nWHERE  df.tablespace_name = fs.tablespace_name(+)\nORDER BY used_pct DESC;<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>IMPORTANT:<\/strong> MGMT_TABLESPACE must have at least 20% free at all times. If it reaches 85% \u2014 add a datafile immediately. A full MGMT_TABLESPACE causes OEM to stop recording metrics and may crash OMS.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">15.9 \u2014 Verify Notification Setup Works<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udcdd <strong>Test that email alerts actually get delivered before trusting OEM to alert you.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># Send test notification from OEM Console\n# Setup \u2192 Notifications \u2192 Notification Methods \u2192 Test\n# Enter your email address and click Test\n\n# OR from command line \u2014 force a test alert\nsu - oracle\n$OMS_HOME\/bin\/emcli login -username=sysman -password=Sysman_123\n$OMS_HOME\/bin\/emcli send_test_notification -admin_username=sysman<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">15.10 \u2014 Configure OEM Repository Backup<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>IMPORTANT:<\/strong> The OEM repository database (EMREP) must be backed up regularly. If EMREP is lost and there is no backup, you lose ALL OEM configuration \u2014 all targets, thresholds, jobs, historical data, everything. EMREP backup is as critical as production database backup.<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code># Add EMREP to RMAN backup schedule\nsu - oracle\nexport ORACLE_SID=EMREP\n\nrman target \/<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>-- Configure RMAN for EMREP\nCONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;\nCONFIGURE BACKUP OPTIMIZATION ON;\nCONFIGURE DEFAULT DEVICE TYPE TO DISK;\nCONFIGURE CONTROLFILE AUTOBACKUP ON;\n\n-- Take immediate backup\nBACKUP DATABASE PLUS ARCHIVELOG;\nLIST BACKUP SUMMARY;\nEXIT;<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">16. Quick Reference Card<\/h3>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><thead><tr><th>Task<\/th><th>Command<\/th><\/tr><\/thead><tbody><tr><td>Check OMS status<\/td><td><code>emctl status oms<\/code><\/td><\/tr><tr><td>Check OMS detailed<\/td><td><code>emctl status oms -details<\/code><\/td><\/tr><tr><td>Start OMS<\/td><td><code>emctl start oms<\/code><\/td><\/tr><tr><td>Stop OMS<\/td><td><code>emctl stop oms -all<\/code><\/td><\/tr><tr><td>Restart OMS<\/td><td><code>emctl stop oms -all &amp;&amp; emctl start oms<\/code><\/td><\/tr><tr><td>Start agent<\/td><td><code>$AGENT_HOME\/bin\/emctl start agent<\/code><\/td><\/tr><tr><td>Stop agent<\/td><td><code>$AGENT_HOME\/bin\/emctl stop agent<\/code><\/td><\/tr><tr><td>Check agent status<\/td><td><code>$AGENT_HOME\/bin\/emctl status agent<\/code><\/td><\/tr><tr><td>Secure agent<\/td><td><code>$AGENT_HOME\/bin\/emctl secure agent &lt;password&gt;<\/code><\/td><\/tr><tr><td>Upload agent data now<\/td><td><code>$AGENT_HOME\/bin\/emctl upload agent<\/code><\/td><\/tr><tr><td>Reload agent<\/td><td><code>$AGENT_HOME\/bin\/emctl reload agent<\/code><\/td><\/tr><tr><td>EM CLI login<\/td><td><code>emcli login -username=sysman -password=Sysman_123<\/code><\/td><\/tr><tr><td>List all targets<\/td><td><code>emcli get_targets<\/code><\/td><\/tr><tr><td>List agents status<\/td><td><code>emcli get_agents_status<\/code><\/td><\/tr><tr><td>Start blackout<\/td><td><code>emctl start blackout &lt;name&gt; &lt;target&gt;:&lt;type&gt; -d &lt;mins&gt;<\/code><\/td><\/tr><tr><td>Stop blackout<\/td><td><code>emctl stop blackout &lt;name&gt;<\/code><\/td><\/tr><tr><td>Check blackout<\/td><td><code>emctl status blackout &lt;name&gt;<\/code><\/td><\/tr><tr><td>OEM Console URL<\/td><td><code>https:\/\/emserver:7803\/em<\/code><\/td><\/tr><tr><td>WebLogic Console<\/td><td><code>https:\/\/emserver:7799\/console<\/code><\/td><\/tr><tr><td>OMS log file<\/td><td><code>$OMS_INSTANCE\/em\/EMGC_OMS1\/sysman\/log\/emoms.log<\/code><\/td><\/tr><tr><td>Agent log file<\/td><td><code>$AGENT_HOME\/..\/agent_inst\/sysman\/log\/gcagent.log<\/code><\/td><\/tr><tr><td>Check SYSMAN status<\/td><td><code>SELECT username,account_status FROM dba_users WHERE username='SYSMAN';<\/code><\/td><\/tr><tr><td>Unlock SYSMAN<\/td><td><code>ALTER USER sysman ACCOUNT UNLOCK;<\/code><\/td><\/tr><tr><td>DBSNMP unlock<\/td><td><code>ALTER USER dbsnmp IDENTIFIED BY pwd ACCOUNT UNLOCK;<\/code><\/td><\/tr><tr><td>Check EMREP tablespace<\/td><td><code>SELECT tablespace_name,used_pct FROM ... (space query)<\/code><\/td><\/tr><tr><td>Patch OMS<\/td><td><code>opatch apply -oh $OMS_HOME -silent &lt;PATCHDIR&gt;<\/code><\/td><\/tr><tr><td>Check OEM version<\/td><td><code>emctl status oms | grep \"OMS Version\"<\/code><\/td><\/tr><tr><td>RMAN backup EMREP<\/td><td><code>BACKUP DATABASE PLUS ARCHIVELOG;<\/code><\/td><\/tr><tr><td>MOS OEM Install Guide<\/td><td>Doc ID 2349010.1<\/td><\/tr><tr><td>MOS OEM Prerequisites<\/td><td>Doc ID 1926545.1<\/td><\/tr><tr><td>MOS Agent Deployment<\/td><td>Doc ID 2219797.1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">This SOP covers everything you need to install and configure Oracle Enterprise Manager Cloud Control 19c on Linux without referring to any other source. Always size the OMS server correctly before installation, always use FQDN for the OMS hostname, always back up the repository database, configure blackouts before every maintenance window, and always verify all agents are uploading data after any OEM maintenance activity.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A complete production-ready SOP for installing and configuring Oracle Enterprise Manager Cloud Control 19c on Linux from scratch. Covers OMS prerequisites, repository database preparation, OEM Cloud Control installation, agent deployment, target discovery, monitoring configuration, blackout creation, and full post-installation validation \u2014 with real commands, expected outputs, and consultant-level notes for both standard OFA and enterprise [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5788,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"googlesitekit_rrm_CAowu461DA:productID":"","footnotes":""},"categories":[1534],"tags":[],"class_list":["post-5773","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle-sop"],"_links":{"self":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/posts\/5773","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/comments?post=5773"}],"version-history":[{"count":2,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/posts\/5773\/revisions"}],"predecessor-version":[{"id":5812,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/posts\/5773\/revisions\/5812"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/media\/5788"}],"wp:attachment":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/media?parent=5773"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/categories?post=5773"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/tags?post=5773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}