Skip to main content

Oracle Restart 19c Installation Guide for Linux

Oracle Restart high availability architecture on a standalone server

Introduction

Oracle Restart is a high-availability feature of Oracle Grid Infrastructure for standalone servers that automatically restarts Oracle Database components, such as the database instance, listener, and Oracle Automatic Storage Management, after hardware or software failures, or following a server reboot. In this article, we will see how to install Oracle Restart 19c step by step.

Prerequisites

Below are the minimum requirements for a Linux environment.

  • CPU: 2 core
  • RAM: 8GB
  • Disk space: 45GB (/u01)
  • Raw disk storage: 50GB (for ASM disks)
  • Grid and Database binary. Download here.
  • Must have root user or sudo access.
  • Disable the firewall.

Environment Used in this Guide

Hostname orares.oraeasy.com
OS OL 7.3
Grid/Database Version 19c (19.3)
Grid Home /u01/app/grid/19c/grid_1
Database Home /u01/app/oracle/19c/db_1
ASM SID +ASM
Database SID orcldb

Installing Oracle Restart Step by Step

Step 1: Install Required Packages

All OS and ASM configuration in this article is done as the root user. The preinstall RPM pulls in most of the packages Oracle needs, and a separate install handles the ASMLib packages used for ASM disk management.


[root@orares ~]# yum -y install oracle-database-preinstall-19c.x86_64
Loaded plugins: langpacks, ulninfo
Resolving Dependencies
--> Running transaction check
---> Package oracle-database-preinstall-19c.x86_64 0:1.0-3.el7 will be installed
--> Processing Dependency: compat-libcap1 for package: oracle-database-preinstall-19c-1.0-3.el7.x86_64
--> Processing Dependency: glibc-devel for package: oracle-database-preinstall-19c-1.0-3.el7.x86_64
--> Processing Dependency: ksh for package: oracle-database-preinstall-19c-1.0-3.el7.x86_64
--> Processing Dependency: libaio-devel for package: oracle-database-preinstall-19c-1.0-3.el7.x86_64
--> Processing Dependency: libstdc++-devel for package: oracle-database-preinstall-19c-1.0-3.el7.x86_64
--> Running transaction check
---> Package compat-libcap1.x86_64 0:1.10-7.el7 will be installed
---> Package glibc-devel.x86_64 0:2.17-326.0.9.el7_9.3 will be installed
--> Processing Dependency: glibc = 2.17-326.0.9.el7_9.3 for package: glibc-devel-2.17-326.0.9.el7_9.3.x86_64
--> Processing Dependency: glibc-headers = 2.17-326.0.9.el7_9.3 for package: glibc-devel-2.17-326.0.9.el7_9.3.x86_64
--> Processing Dependency: glibc-headers for package: glibc-devel-2.17-326.0.9.el7_9.3.x86_64
---> Package ksh.x86_64 0:20120801-144.0.1.el7_9 will be installed
---> Package libaio-devel.x86_64 0:0.3.109-13.el7 will be installed
---> Package libstdc++-devel.x86_64 0:4.8.5-44.0.3.el7 will be installed
--> Processing Dependency: libstdc++(x86-64) = 4.8.5-44.0.3.el7 for package: libstdc++-devel-4.8.5-44.0.3.el7.x86_64
--> Running transaction check
---> Package glibc.x86_64 0:2.17-157.el7 will be updated
--> Processing Dependency: glibc = 2.17-157.el7 for package: glibc-common-2.17-157.el7.x86_64
---> Package glibc.x86_64 0:2.17-326.0.9.el7_9.3 will be an update
---> Package glibc-headers.x86_64 0:2.17-326.0.9.el7_9.3 will be installed
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.17-326.0.9.el7_9.3.x86_64
--> Processing Dependency: kernel-headers for package: glibc-headers-2.17-326.0.9.el7_9.3.x86_64
---> Package libstdc++.x86_64 0:4.8.5-11.el7 will be updated
---> Package libstdc++.x86_64 0:4.8.5-44.0.3.el7 will be an update
--> Running transaction check
---> Package glibc-common.x86_64 0:2.17-157.el7 will be updated
---> Package glibc-common.x86_64 0:2.17-326.0.9.el7_9.3 will be an update
---> Package kernel-headers.x86_64 0:3.10.0-1160.119.1.0.5.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================================
 Package                           Arch               Version                        Repository           Size
===============================================================================================================
Installing:
 oracle-database-preinstall-19c       x86_64         1.0-3.el7                         ol7_latest        27 k
Installing for dependencies:
 compat-libcap1                       x86_64         1.10-7.el7                        ol7_latest        17 k
 glibc-devel                          x86_64         2.17-326.0.9.el7_9.3              ol7_latest       1.1 M
 glibc-headers                        x86_64         2.17-326.0.9.el7_9.3              ol7_latest       695 k
 kernel-headers                       x86_64         3.10.0-1160.119.1.0.5.el7         ol7_latest       9.1 M
 ksh                                  x86_64         20120801-144.0.1.el7_9            ol7_latest       882 k
 libaio-devel                         x86_64         0.3.109-13.el7                    ol7_latest        12 k
 libstdc++-devel                      x86_64         4.8.5-44.0.3.el7                  ol7_latest       1.5 M
Updating for dependencies:
 glibc                                x86_64         2.17-326.0.9.el7_9.3              ol7_latest       3.6 M
 glibc-common                         x86_64         2.17-326.0.9.el7_9.3              ol7_latest        12 M
 libstdc++                            x86_64         4.8.5-44.0.3.el7                  ol7_latest       306 k

Transaction Summary
======================================================
Install  1 Package  (+7 Dependent packages)
Upgrade             ( 3 Dependent packages)

Total size: 29 M
Total download size: 13 M
Downloading packages:
warning: /var/cache/yum/x86_64/7Server/ol7_latest/packages/compat-libcap1-1.10-7.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY-:-- ETA
Public key for compat-libcap1-1.10-7.el7.x86_64.rpm is not installed
(1/8): compat-libcap1-1.10-7.el7.x86_64.rpm                                             |  17 kB  00:00:00
(2/8): glibc-devel-2.17-326.0.9.el7_9.3.x86_64.rpm                                      | 1.1 MB  00:00:00
(3/8): glibc-headers-2.17-326.0.9.el7_9.3.x86_64.rpm                                    | 695 kB  00:00:00
(4/8): ksh-20120801-144.0.1.el7_9.x86_64.rpm                                            | 882 kB  00:00:00
(5/8): libaio-devel-0.3.109-13.el7.x86_64.rpm                                           |  12 kB  00:00:00
(6/8): kernel-headers-3.10.0-1160.119.1.0.5.el7.x86_64.rpm                              | 9.1 MB  00:00:02
(7/8): oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpm                              |  27 kB  00:00:00
(8/8): libstdc++-devel-4.8.5-44.0.3.el7.x86_64.rpm                                      | 1.5 MB  00:00:01
---------------------------------------------------------------------------------------------------------------
Total                                                                          4.4 MB/s |  13 MB  00:00:03
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
Importing GPG key 0xEC551F03:
 Userid     : "Oracle OSS group (Open Source Software group) "
 Fingerprint: 4214 4123 fecf c55b 9086 313d 72f9 7b74 ec55 1f03
 Package    : 7:oraclelinux-release-7.3-1.0.4.el7.x86_64 (@anaconda/7.3)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : glibc-common-2.17-326.0.9.el7_9.3.x86_64                     1/14
  Updating   : glibc-2.17-326.0.9.el7_9.3.x86_64                            2/14
warning: /etc/nsswitch.conf created as /etc/nsswitch.conf.rpmnew
  Updating   : libstdc++-4.8.5-44.0.3.el7.x86_64                            3/14
  Installing : libstdc++-devel-4.8.5-44.0.3.el7.x86_64                      4/14
  Installing : ksh-20120801-144.0.1.el7_9.x86_64                            5/14
  Installing : compat-libcap1-1.10-7.el7.x86_64                             6/14
  Installing : libaio-devel-0.3.109-13.el7.x86_64                           7/14
  Installing : kernel-headers-3.10.0-1160.119.1.0.5.el7.x86_64              8/14
  Installing : glibc-headers-2.17-326.0.9.el7_9.3.x86_64                    9/14
  Installing : glibc-devel-2.17-326.0.9.el7_9.3.x86_64                     10/14
  Installing : oracle-database-preinstall-19c-1.0-3.el7.x86_64             11/14
  Cleanup    : libstdc++-4.8.5-11.el7.x86_64                               12/14
  Cleanup    : glibc-common-2.17-157.el7.x86_64                            13/14
  Cleanup    : glibc-2.17-157.el7.x86_64                                   14/14
  Verifying  : kernel-headers-3.10.0-1160.119.1.0.5.el7.x86_64              1/14
  Verifying  : glibc-2.17-326.0.9.el7_9.3.x86_64                            2/14
  Verifying  : glibc-devel-2.17-326.0.9.el7_9.3.x86_64                      3/14
  Verifying  : glibc-headers-2.17-326.0.9.el7_9.3.x86_64                    4/14
  Verifying  : ksh-20120801-144.0.1.el7_9.x86_64                            5/14
  Verifying  : oracle-database-preinstall-19c-1.0-3.el7.x86_64              6/14
  Verifying  : compat-libcap1-1.10-7.el7.x86_64                             7/14
  Verifying  : glibc-common-2.17-326.0.9.el7_9.3.x86_64                     8/14
  Verifying  : libaio-devel-0.3.109-13.el7.x86_64                           9/14
  Verifying  : libstdc++-devel-4.8.5-44.0.3.el7.x86_64                     10/14
  Verifying  : libstdc++-4.8.5-44.0.3.el7.x86_64                           11/14
  Verifying  : glibc-2.17-157.el7.x86_64                                   12/14
  Verifying  : glibc-common-2.17-157.el7.x86_64                            13/14
  Verifying  : libstdc++-4.8.5-11.el7.x86_64                               14/14

Installed:
  oracle-database-preinstall-19c.x86_64 0:1.0-3.el7

Dependency Installed:
  compat-libcap1.x86_64 0:1.10-7.el7                glibc-devel.x86_64 0:2.17-326.0.9.el7_9.3        glibc-headers.x86_64 0:2.17-326.0.9.el7_9.3
  kernel-headers.x86_64 0:3.10.0-1160.119.1.0.5.el7 ksh.x86_64 0:20120801-144.0.1.el7_9              libaio-devel.x86_64 0:0.3.109-13.el7
  libstdc++-devel.x86_64 0:4.8.5-44.0.3.el7

Dependency Updated:
  glibc.x86_64 0:2.17-326.0.9.el7_9.3       glibc-common.x86_64 0:2.17-326.0.9.el7_9.3               libstdc++.x86_64 0:4.8.5-44.0.3.el7

Complete!
[root@orares ~]#

Install ASM Package:
[root@orares ~]# yum -y install oracleasm kmod-oracleasm oracleasm-support Loaded plugins: langpacks, ulninfo Resolving Dependencies --> Running transaction check ---> Package kernel-uek.x86_64 0:4.1.12-124.93.1.el7uek will be installed --> Processing Dependency: kernel-firmware = 4.1.12-124.93.1.el7uek for package: kernel-uek-4.1.12-124.93.1.el7uek.x86_64 --> Processing Dependency: linux-firmware >= 20171128-57.git17e62881.0.2 for package: kernel-uek-4.1.12-124.93.1.el7uek.x86_64 ---> Package kmod-oracleasm.x86_64 0:2.0.8-28.0.1.el7 will be installed --> Processing Dependency: kernel(__check_object_size) = 0x88db9f48 for package: kmod-oracleasm-2.0.8-28.0.1.el7.x86_64 --> Processing Dependency: kernel(d_alloc) = 0x6fd8a0cd for package: kmod-oracleasm-2.0.8-28.0.1.el7.x86_64 --> Processing Dependency: kernel(d_genocide) = 0xb7073a6a for package: kmod-oracleasm-2.0.8-28.0.1.el7.x86_64 --> Processing Dependency: kernel(d_instantiate) = 0xa1501aec for package: kmod-oracleasm-2.0.8-28.0.1.el7.x86_64 --> Processing Dependency: kernel(d_make_root) = 0x46af2b76 for package: kmod-oracleasm-2.0.8-28.0.1.el7.x86_64 --> Processing Dependency: kernel(dput) = 0xa3a1832f for package: kmod-oracleasm-2.0.8-28.0.1.el7.x86_64 --> Processing Dependency: kernel(d_rehash) = 0x4dca5a4f for package: kmod-oracleasm-2.0.8-28.0.1.el7.x86_64 --> Processing Dependency: kernel(kern_mount_data) = 0xf482d525 for package: kmod-oracleasm-2.0.8-28.0.1.el7.x86_64 --> Processing Dependency: kernel(kern_unmount) = 0xbc42731d for package: kmod-oracleasm-2.0.8-28.0.1.el7.x86_64 --> Processing Dependency: kernel(_raw_qspin_lock_irq) = 0x3588d8ba for package: kmod-oracleasm-2.0.8-28.0.1.el7.x86_64 --> Processing Dependency: kernel >= 3.10.0-1133.el7 for package: kmod-oracleasm-2.0.8-28.0.1.el7.x86_64 ---> Package oracleasm-support.x86_64 0:2.1.11-2.el7 will be installed --> Running transaction check ---> Package kernel.x86_64 0:3.10.0-1160.119.1.0.5.el7 will be installed --> Processing Dependency: dracut >= 033-502 for package: kernel-3.10.0-1160.119.1.0.5.el7.x86_64 ---> Package kernel-uek-firmware.noarch 0:4.1.12-124.93.1.el7uek will be installed ---> Package linux-firmware.noarch 0:20160909-50.gitc883a6b6.0.1.el7 will be updated ---> Package linux-firmware.noarch 999:20241003-999.35.git95bfe086.el7 will be an update --> Running transaction check ---> Package dracut.x86_64 0:033-463.0.1.el7 will be updated --> Processing Dependency: dracut = 033-463.0.1.el7 for package: dracut-config-rescue-033-463.0.1.el7.x86_64 --> Processing Dependency: dracut = 033-463.0.1.el7 for package: dracut-network-033-463.0.1.el7.x86_64 ---> Package dracut.x86_64 0:033-572.0.13.el7 will be an update --> Running transaction check ---> Package dracut-config-rescue.x86_64 0:033-463.0.1.el7 will be updated ---> Package dracut-config-rescue.x86_64 0:033-572.0.13.el7 will be an update ---> Package dracut-network.x86_64 0:033-463.0.1.el7 will be updated ---> Package dracut-network.x86_64 0:033-572.0.13.el7 will be an update --> Processing Conflict: kernel-3.10.0-1160.119.1.0.5.el7.x86_64 conflicts selinux-policy-targeted < 3.13.1-201 --> Restarting Dependency Resolution with new changes. --> Running transaction check ---> Package selinux-policy-targeted.noarch 0:3.13.1-102.0.2.el7 will be updated ---> Package selinux-policy-targeted.noarch 0:3.13.1-268.0.25.el7_9.2 will be an update --> Processing Dependency: selinux-policy = 3.13.1-268.0.25.el7_9.2 for package: selinux-policy-targeted-3.13.1-268.0.25.el7_9.2.noarch --> Processing Dependency: selinux-policy = 3.13.1-268.0.25.el7_9.2 for package: selinux-policy-targeted-3.13.1-268.0.25.el7_9.2.noarch --> Processing Dependency: policycoreutils >= 2.5-24 for package: selinux-policy-targeted-3.13.1-268.0.25.el7_9.2.noarch --> Running transaction check ---> Package policycoreutils.x86_64 0:2.5-8.0.1.el7 will be updated --> Processing Dependency: policycoreutils = 2.5-8.0.1.el7 for package: policycoreutils-python-2.5-8.0.1.el7.x86_64 ---> Package policycoreutils.x86_64 0:2.5-34.0.1.el7 will be an update --> Processing Dependency: libselinux-utils >= 2.5-14 for package: policycoreutils-2.5-34.0.1.el7.x86_64 --> Processing Dependency: libsemanage >= 2.5-14 for package: policycoreutils-2.5-34.0.1.el7.x86_64 --> Processing Dependency: libsepol >= 2.5-10 for package: policycoreutils-2.5-34.0.1.el7.x86_64 ---> Package selinux-policy.noarch 0:3.13.1-102.0.2.el7 will be updated ---> Package selinux-policy.noarch 0:3.13.1-268.0.25.el7_9.2 will be an update --> Running transaction check ---> Package libselinux-utils.x86_64 0:2.5-6.el7 will be updated ---> Package libselinux-utils.x86_64 0:2.5-15.el7 will be an update --> Processing Dependency: libselinux(x86-64) = 2.5-15.el7 for package: libselinux-utils-2.5-15.el7.x86_64 ---> Package libsemanage.x86_64 0:2.5-4.el7 will be updated --> Processing Dependency: libsemanage = 2.5-4.el7 for package: libsemanage-python-2.5-4.el7.x86_64 ---> Package libsemanage.x86_64 0:2.5-14.el7 will be an update ---> Package libsepol.x86_64 0:2.5-6.el7 will be updated ---> Package libsepol.x86_64 0:2.5-10.el7 will be an update ---> Package policycoreutils-python.x86_64 0:2.5-8.0.1.el7 will be updated ---> Package policycoreutils-python.x86_64 0:2.5-34.0.1.el7 will be an update --> Processing Dependency: setools-libs >= 3.3.8-4 for package: policycoreutils-python-2.5-34.0.1.el7.x86_64 --> Running transaction check ---> Package libselinux.x86_64 0:2.5-6.el7 will be updated --> Processing Dependency: libselinux(x86-64) = 2.5-6.el7 for package: libselinux-python-2.5-6.el7.x86_64 ---> Package libselinux.x86_64 0:2.5-15.el7 will be an update ---> Package libsemanage-python.x86_64 0:2.5-4.el7 will be updated ---> Package libsemanage-python.x86_64 0:2.5-14.el7 will be an update ---> Package setools-libs.x86_64 0:3.3.8-1.1.el7 will be updated ---> Package setools-libs.x86_64 0:3.3.8-4.el7 will be an update --> Running transaction check ---> Package libselinux-python.x86_64 0:2.5-6.el7 will be updated ---> Package libselinux-python.x86_64 0:2.5-15.el7 will be an update --> Processing Conflict: kernel-3.10.0-1160.119.1.0.5.el7.x86_64 conflicts kexec-tools < 2.0.14-3 --> Restarting Dependency Resolution with new changes. --> Running transaction check ---> Package kexec-tools.x86_64 0:2.0.7-50.0.1.el7 will be updated ---> Package kexec-tools.x86_64 0:2.0.15-51.0.5.el7_9.3 will be an update --> Finished Dependency Resolution Dependencies Resolved ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Installing: kernel x86_64 3.10.0-1160.119.1.0.5.el7 ol7_latest 52 M kernel-uek x86_64 4.1.12-124.93.1.el7uek ol7_UEKR4 45 M kernel-uek-firmware noarch 4.1.12-124.93.1.el7uek ol7_UEKR4 2.7 M kmod-oracleasm x86_64 2.0.8-28.0.1.el7 ol7_latest 298 k oracleasm-support x86_64 2.1.11-2.el7 ol7_latest 85 k Updating: kexec-tools x86_64 2.0.15-51.0.5.el7_9.3 ol7_latest 356 k selinux-policy-targeted noarch 3.13.1-268.0.25.el7_9.2 ol7_latest 7.2 M Updating for dependencies: dracut x86_64 033-572.0.13.el7 ol7_latest 331 k dracut-config-rescue x86_64 033-572.0.13.el7 ol7_latest 63 k dracut-network x86_64 033-572.0.13.el7 ol7_latest 107 k libselinux x86_64 2.5-15.el7 ol7_latest 162 k libselinux-python x86_64 2.5-15.el7 ol7_latest 235 k libselinux-utils x86_64 2.5-15.el7 ol7_latest 151 k libsemanage x86_64 2.5-14.el7 ol7_latest 150 k libsemanage-python x86_64 2.5-14.el7 ol7_latest 112 k libsepol x86_64 2.5-10.el7 ol7_latest 297 k linux-firmware noarch 999:20241003-999.35.git95bfe086.el7 ol7_latest 382 M policycoreutils x86_64 2.5-34.0.1.el7 ol7_latest 916 k policycoreutils-python x86_64 2.5-34.0.1.el7 ol7_latest 457 k selinux-policy noarch 3.13.1-268.0.25.el7_9.2 ol7_latest 500 k setools-libs x86_64 3.3.8-4.el7 ol7_latest 620 k Transaction Summary ============================================================== Install 5 Packages Upgrade 2 Packages (+14 Dependent packages) Total size: 493 M Total download size: 383 k Downloading packages: (1/2): oracleasm-support-2.1.11-2.el7.x86_64.rpm | 85 kB 00:00:00 (2/2): kmod-oracleasm-2.0.8-28.0.1.el7.x86_64.rpm | 298 kB 00:00:01 -------------------------------------------------------------------------------------- Total 240 kB/s | 383 kB 00:00:01 Running transaction check Running transaction test Transaction test succeeded Running transaction Updating : libsepol-2.5-10.el7.x86_64 1/37 Updating : libselinux-2.5-15.el7.x86_64 2/37 Updating : dracut-033-572.0.13.el7.x86_64 3/37 Updating : libsemanage-2.5-14.el7.x86_64 4/37 Updating : 999:linux-firmware-20241003-999.35.git95bfe086.el7.noarch 5/37 Installing : kernel-3.10.0-1160.119.1.0.5.el7.x86_64 6/37 Updating : libsemanage-python-2.5-14.el7.x86_64 7/37 Updating : dracut-network-033-572.0.13.el7.x86_64 8/37 Updating : libselinux-utils-2.5-15.el7.x86_64 9/37 Updating : policycoreutils-2.5-34.0.1.el7.x86_64 10/37 Updating : selinux-policy-3.13.1-268.0.25.el7_9.2.noarch 11/37 Updating : setools-libs-3.3.8-4.el7.x86_64 12/37 Updating : libselinux-python-2.5-15.el7.x86_64 13/37 Installing : kernel-uek-firmware-4.1.12-124.93.1.el7uek.noarch 14/37 Installing : kernel-uek-4.1.12-124.93.1.el7uek.x86_64 15/37 Updating : policycoreutils-python-2.5-34.0.1.el7.x86_64 16/37 Updating : selinux-policy-targeted-3.13.1-268.0.25.el7_9.2.noarch 17/37 Updating : kexec-tools-2.0.15-51.0.5.el7_9.3.x86_64 18/37 Installing : kmod-oracleasm-2.0.8-28.0.1.el7.x86_64 19/37 Updating : dracut-config-rescue-033-572.0.13.el7.x86_64 20/37 Installing : oracleasm-support-2.1.11-2.el7.x86_64 21/37 Note: Forwarding request to 'systemctl enable oracleasm.service'. Created symlink from /etc/systemd/system/multi-user.target.wants/oracleasm.service to /usr/lib/systemd/system/oracleasm.service. Cleanup : selinux-policy-targeted-3.13.1-102.0.2.el7.noarch 22/37 Cleanup : selinux-policy-3.13.1-102.0.2.el7.noarch 23/37 Cleanup : dracut-config-rescue-033-463.0.1.el7.x86_64 24/37 Cleanup : linux-firmware-20160909-50.gitc883a6b6.0.1.el7.noarch 25/37 Cleanup : policycoreutils-python-2.5-8.0.1.el7.x86_64 26/37 Cleanup : policycoreutils-2.5-8.0.1.el7.x86_64 27/37 Cleanup : libselinux-utils-2.5-6.el7.x86_64 28/37 Cleanup : setools-libs-3.3.8-1.1.el7.x86_64 29/37 Cleanup : kexec-tools-2.0.7-50.0.1.el7.x86_64 30/37 Cleanup : dracut-network-033-463.0.1.el7.x86_64 31/37 Cleanup : libselinux-python-2.5-6.el7.x86_64 32/37 Cleanup : libsemanage-python-2.5-4.el7.x86_64 33/37 Cleanup : libsemanage-2.5-4.el7.x86_64 34/37 Cleanup : libselinux-2.5-6.el7.x86_64 35/37 Cleanup : libsepol-2.5-6.el7.x86_64 36/37 Cleanup : dracut-033-463.0.1.el7.x86_64 37/37 Verifying : 999:linux-firmware-20241003-999.35.git95bfe086.el7.noarch 1/37 Verifying : libselinux-2.5-15.el7.x86_64 2/37 Verifying : dracut-033-572.0.13.el7.x86_64 3/37 Verifying : policycoreutils-2.5-34.0.1.el7.x86_64 4/37 Verifying : policycoreutils-python-2.5-34.0.1.el7.x86_64 5/37 Verifying : selinux-policy-3.13.1-268.0.25.el7_9.2.noarch 6/37 Verifying : dracut-network-033-572.0.13.el7.x86_64 7/37 Verifying : libselinux-utils-2.5-15.el7.x86_64 8/37 Verifying : kernel-3.10.0-1160.119.1.0.5.el7.x86_64 9/37 Verifying : oracleasm-support-2.1.11-2.el7.x86_64 10/37 Verifying : setools-libs-3.3.8-4.el7.x86_64 11/37 Verifying : libsemanage-python-2.5-14.el7.x86_64 12/37 Verifying : libsemanage-2.5-14.el7.x86_64 13/37 Verifying : libsepol-2.5-10.el7.x86_64 14/37 Verifying : libselinux-python-2.5-15.el7.x86_64 15/37 Verifying : dracut-config-rescue-033-572.0.13.el7.x86_64 16/37 Verifying : kernel-uek-firmware-4.1.12-124.93.1.el7uek.noarch 17/37 Verifying : kernel-uek-4.1.12-124.93.1.el7uek.x86_64 18/37 Verifying : selinux-policy-targeted-3.13.1-268.0.25.el7_9.2.noarch 19/37 Verifying : kmod-oracleasm-2.0.8-28.0.1.el7.x86_64 20/37 Verifying : kexec-tools-2.0.15-51.0.5.el7_9.3.x86_64 21/37 Verifying : libsepol-2.5-6.el7.x86_64 22/37 Verifying : selinux-policy-3.13.1-102.0.2.el7.noarch 23/37 Verifying : libselinux-python-2.5-6.el7.x86_64 24/37 Verifying : libselinux-utils-2.5-6.el7.x86_64 25/37 Verifying : libsemanage-python-2.5-4.el7.x86_64 26/37 Verifying : kexec-tools-2.0.7-50.0.1.el7.x86_64 27/37 Verifying : dracut-network-033-463.0.1.el7.x86_64 28/37 Verifying : dracut-033-463.0.1.el7.x86_64 29/37 Verifying : dracut-config-rescue-033-463.0.1.el7.x86_64 30/37 Verifying : selinux-policy-targeted-3.13.1-102.0.2.el7.noarch 31/37 Verifying : policycoreutils-python-2.5-8.0.1.el7.x86_64 32/37 Verifying : libselinux-2.5-6.el7.x86_64 33/37 Verifying : policycoreutils-2.5-8.0.1.el7.x86_64 34/37 Verifying : libsemanage-2.5-4.el7.x86_64 35/37 Verifying : linux-firmware-20160909-50.gitc883a6b6.0.1.el7.noarch 36/37 Verifying : setools-libs-3.3.8-1.1.el7.x86_64 37/37 Installed: kernel.x86_64 0:3.10.0-1160.119.1.0.5.el7 kernel-uek.x86_64 0:4.1.12-124.93.1.el7uek kernel-uek-firmware.noarch 0:4.1.12-124.93.1.el7uek kmod-oracleasm.x86_64 0:2.0.8-28.0.1.el7 oracleasm-support.x86_64 0:2.1.11-2.el7 Updated: kexec-tools.x86_64 0:2.0.15-51.0.5.el7_9.3 selinux-policy-targeted.noarch 0:3.13.1-268.0.25.el7_9.2 Dependency Updated: dracut.x86_64 0:033-572.0.13.el7 dracut-config-rescue.x86_64 0:033-572.0.13.el7 dracut-network.x86_64 0:033-572.0.13.el7 libselinux.x86_64 0:2.5-15.el7 libselinux-python.x86_64 0:2.5-15.el7 libselinux-utils.x86_64 0:2.5-15.el7 libsemanage.x86_64 0:2.5-14.el7 libsemanage-python.x86_64 0:2.5-14.el7 libsepol.x86_64 0:2.5-10.el7 linux-firmware.noarch 999:20241003-999.35.git95bfe086.el7 policycoreutils.x86_64 0:2.5-34.0.1.el7 policycoreutils-python.x86_64 0:2.5-34.0.1.el7 selinux-policy.noarch 0:3.13.1-268.0.25.el7_9.2 setools-libs.x86_64 0:3.3.8-4.el7 Complete!

Step 2: Configure Additional Groups for the Oracle User and Change Its Password

Grid Infrastructure needs dedicated OS groups (asmdba, asmoper, asmadmin) beyond the standard database groups, since the oracle user needs to administer ASM as well as the database.


[root@orares ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)
[root@orares ~]#
[root@orares ~]# groupadd -g 54327 asmdba
[root@orares ~]# groupadd -g 54328 asmoper
[root@orares ~]# groupadd -g 54329 asmadmin
[root@orares ~]#
[root@orares ~]# usermod -a -G asmadmin,asmdba,asmoper oracle
[root@orares ~]#
[root@orares ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba),54327(asmdba),54328(asmoper),54329(asmadmin)
[root@orares ~]#
[root@orares ~]# passwd oracle
Changing password for user oracle.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

[root@orares ~]#

Step 3: Create Directories for Grid and Database Home

Set up the directory structure both homes will install into, and hand ownership to the oracle user before installation starts.


[root@orares ~]# mkdir -p /u01/app/grid/19c/grid_1
[root@orares ~]# mkdir -p /u01/app/oracle/19c/db_1
[root@orares ~]# mkdir -p /u01/app/oraInventory
[root@orares ~]# chown -R oracle:oinstall /u01
[root@orares ~]# chmod -R 775 /u01

Step 4: Configure SELinux and Disable the Firewall

SELinux is set to permissive rather than fully disabled, which is enough to avoid installer conflicts while still keeping some policy enforcement. The firewall is stopped and disabled outright, per the prerequisites.


[root@orares ~]# cat /etc/selinux/config | grep SELINUX
# SELINUX= can take one of these three values:
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
SELINUXTYPE=targeted

[root@orares ~]# vi /etc/selinux/config
[root@orares ~]# cat /etc/selinux/config | grep SELINUX
# SELINUX= can take one of these three values:
SELINUX=permissive
# SELINUXTYPE= can take one of three two values:
SELINUXTYPE=targeted
[root@orares ~]#

[root@orares ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2025-12-22 23:54:13 IST; 15min ago
     Docs: man:firewalld(1)
 Main PID: 788 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─788 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

Dec 22 23:54:07 orares.oraeasy.com systemd[1]: Starting firewalld - dynamic firewall daemon...
Dec 22 23:54:13 orares.oraeasy.com systemd[1]: Started firewalld - dynamic firewall daemon.
Dec 22 23:54:14 orares.oraeasy.com firewalld[788]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It wil... it now.
Hint: Some lines were ellipsized, use -l to show in full.
[root@orares ~]#
[root@orares ~]# systemctl stop firewalld
[root@orares ~]#
[root@orares ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@orares ~]#
[root@orares ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

Dec 22 23:54:07 orares.oraeasy.com systemd[1]: Starting firewalld - dynamic firewall daemon...
Dec 22 23:54:13 orares.oraeasy.com systemd[1]: Started firewalld - dynamic firewall daemon.
Dec 22 23:54:14 orares.oraeasy.com firewalld[788]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It wil... it now.
Dec 23 00:09:48 orares.oraeasy.com systemd[1]: Stopping firewalld - dynamic firewall daemon...
Dec 23 00:09:50 orares.oraeasy.com systemd[1]: Stopped firewalld - dynamic firewall daemon.
Hint: Some lines were ellipsized, use -l to show in full.
[root@orares ~]#

Step 5: Configure oracleasm

Initializing ASMLib creates the kernel driver mount point, and configure -i sets the driver to load automatically on boot with the correct ownership for the oracle/oinstall pair.


[root@orares ~]# oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Configuring "oracleasm" to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm
[root@orares ~]#
[root@orares ~]# oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting  without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: oracle
Default group to own the driver interface []: oinstall
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
[root@orares ~]#

Step 6: Add a Raw Disk to the Machine

Before this step, only the OS disk (/dev/sda) exists. Confirm that first, so it's clear which disk is new once the extra one is attached.


[root@orares ~]# fdisk -l
Disk /dev/sda: 75.2 GB, 75161927680 bytes, 146800640 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000bf650

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    27265023    12582912   83  Linux
/dev/sda3        27265024    37750783     5242880   82  Linux swap / Solaris
/dev/sda4        37750784   146800639    54524928    5  Extended
/dev/sda5        37752832    46141439     4194304   83  Linux
/dev/sda6        46143488   146800639    50328576   83  Linux
[root@orares ~]#

Shut down the machine, then attach a new virtual disk to be used for ASM.

Select the machine and click Tools.

Selecting the Tools menu for the virtual machine

In the Hard Disk section, click Create.

Creating a new virtual hard disk

Select hard disk type: VDI. Click Next.

Selecting VDI as the virtual disk file type

Select Pre-Allocate, since this disk will be used as ASM storage. Click Next.

Selecting pre-allocated fixed-size storage for the ASM disk

Select a name, location, and size for the disk. Click Finish.

Specifying the new virtual disk name, location, and size

Monitor the progress.

Virtual disk creation progress

Once completed, the hard disk can be viewed in the media manager.

Newly created virtual hard disk listed in the media manager

Now select the machine and click Storage.

Opening the Storage settings for the virtual machine

In the controller SATA section, click Add Hard Disk.

Adding a hard disk to the SATA controller

Select the disk name and click Choose.

Selecting the created virtual disk to attach

Click OK.

Confirming the hard disk attachment

Now in Storage, the added hard disk can be viewed.

Storage settings showing the attached hard disk

Now start the machine and view the newly attached hard disk.


[root@orares ~]# fdisk -l
Disk /dev/sda: 75.2 GB, 75161927680 bytes, 146800640 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000bf650

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    27265023    12582912   83  Linux
/dev/sda3        27265024    37750783     5242880   82  Linux swap / Solaris
/dev/sda4        37750784   146800639    54524928    5  Extended
/dev/sda5        37752832    46141439     4194304   83  Linux
/dev/sda6        46143488   146800639    50328576   83  Linux

Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
[root@orares ~]#

Step 7: Partition the New Hard Disk

Three partitions are created on /dev/sdb to back three separate ASM disk groups later: CRS, DATA, and FRA.


[root@orares ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xea9db3d7.

Command (m for help): n        Press "n" for new partition:
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):     Press Enter for default:
Using default response p
Partition number (1-4, default 1):   Press Enter for default:
First sector (2048-104857599, default 2048):
Using default value 2048

Provide size:
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599): +25G Partition 1 of type Linux and of size 25 GiB is set Do same for next two partition:
Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): Using default response p Partition number (2-4, default 2): First sector (52430848-104857599, default 52430848): Using default value 52430848 Last sector, +sectors or +size{K,M,G} (52430848-104857599, default 104857599): +15G Partition 2 of type Linux and of size 15 GiB is set Command (m for help): Command (m for help): n Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): Using default response p Partition number (3,4, default 3): First sector (83888128-104857599, default 83888128): Using default value 83888128 Last sector, +sectors or +size{K,M,G} (83888128-104857599, default 104857599): Using default value 104857599 Partition 3 of type Linux and of size 10 GiB is set Command (m for help): w Press "w" to save the changes: The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@orares ~]# View the partitions:
[root@orares ~]# fdisk -l Disk /dev/sda: 75.2 GB, 75161927680 bytes, 146800640 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000bf650 Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 27265023 12582912 83 Linux /dev/sda3 27265024 37750783 5242880 82 Linux swap / Solaris /dev/sda4 37750784 146800639 54524928 5 Extended /dev/sda5 37752832 46141439 4194304 83 Linux /dev/sda6 46143488 146800639 50328576 83 Linux Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xea9db3d7 Device Boot Start End Blocks Id System /dev/sdb1 2048 52430847 26214400 83 Linux /dev/sdb2 52430848 83888127 15728640 83 Linux /dev/sdb3 83888128 104857599 10484736 83 Linux [root@orares ~]# [root@orares ~]# fdisk -l /dev/sdb Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xea9db3d7 Device Boot Start End Blocks Id System /dev/sdb1 2048 52430847 26214400 83 Linux /dev/sdb2 52430848 83888127 15728640 83 Linux /dev/sdb3 83888128 104857599 10484736 83 Linux

Step 8: Create ASM Disks

Label each partition as an ASMLib disk, then scan and list to confirm all three are recognized.


[root@orares ~]# oracleasm createdisk DATA1 /dev/sdb1
Writing disk header: done
Instantiating disk: done
[root@orares ~]#
[root@orares ~]# oracleasm createdisk FRA1 /dev/sdb2
Writing disk header: done
Instantiating disk: done
[root@orares ~]#
[root@orares ~]# oracleasm createdisk CRS1 /dev/sdb3
Writing disk header: done
Instantiating disk: done
[root@orares ~]#
[root@orares ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
[root@orares ~]#
[root@orares ~]# oracleasm listdisks
CRS1
DATA1
FRA1
[root@orares ~]#

Step 9: Log In with the Oracle User, Place and Unzip the Grid Software

From here on, installation runs as the oracle user rather than root.


[oracle@orares software]$ pwd
/u01/software
[oracle@orares software]$
[oracle@orares software]$ ls -lrth
total 2.7G
-rw-r--r--. 1 oracle oinstall 2.7G Dec 23 02:05 LINUX.X64_193000_grid_home.zip
[oracle@orares software]$
[oracle@orares software]$ unzip LINUX.X64_193000_grid_home.zip -d /u01/app/grid/19c/grid_1

Step 10: Create an Environment File for ASM and the Grid Home

A dedicated environment file makes it easy to switch context to the ASM/Grid environment on demand, without permanently altering the default shell profile.


[oracle@orares ~]$ cat .grid_env

# Environment variables for ASM - Grid Home
ORACLE_SID=+ASM; export ORACLE_SID
ORACLE_BASE=/u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/u01/app/grid/19c/grid_1; export ORACLE_HOME
JAVA_HOME=/usr/bin/java; export JAVA_HOME
PATH=$ORACLE_HOME/bin:$JAVA_HOME/bin:$PATH:.
export PATH

[oracle@orares ~]$
[oracle@orares ~]$ chmod 775 .grid_env
[oracle@orares ~]$ ls -larth .grid_env 
-rwxrwxr-x. 1 oracle oinstall 286 Dec 23 20:07 .grid_env
[oracle@orares ~]$
[oracle@orares ~]$ . .grid_env
[oracle@orares ~]$ env|grep ORA
ORACLE_SID=+ASM
ORACLE_BASE=/u01/app/grid
ORACLE_HOME=/u01/app/grid/19c/grid_1

Step 11: Start the Grid Installation

Launch gridSetup.sh from the Grid home to start the installer.


[oracle@orares ~]$ cd /u01/app/grid/19c/grid_1
[oracle@orares grid_1]$
[oracle@orares grid_1]$ ls
addnode     crs     deinstall    evm           install        jdk   network  ord   perl     racg      root.sh.old     slax      tomcat        wlm
assistants  css     demo         gpnp          instantclient  jlib  nls      ords  plsql    rdbms     root.sh.old.1   sqlpatch  ucp           wwg
bin         cv      diagnostics  gridSetup.sh  inventory      ldap  OPatch   oss   precomp  relnotes  rootupgrade.sh  sqlplus   usm           xag
cha         dbjava  dmu          has           javavm         lib   opmn     oui   QOpatch  rhp       runcluvfy.sh    srvm      utl           xdk
clone       dbs     env.ora      hs            jdbc           md    oracore  owm   qos      root.sh   sdk             suptools  welcome.html
[oracle@orares grid_1]$

[oracle@orares grid_1]$ ./gridSetup.sh
Launching Oracle Grid Infrastructure Setup Wizard...

The response file for this session can be found at:
 /u01/app/grid/19c/grid_1/install/response/grid_2025-12-23_09-13-25PM.rsp

You can find the log of this install session at:
 /tmp/GridSetupActions2025-12-23_09-13-25PM/gridSetupActions2025-12-23_09-13-25PM.log
You can find the log of this install session at:
 /u01/app/oraInventory/logs/UpdateNodeList2025-12-23_09-13-25PM.log
Moved the install session logs to:
 /u01/app/oraInventory/logs/GridSetupActions2025-12-23_09-13-25PM
[oracle@orares grid_1]$

A GUI installer window will open. Follow the steps below.

Select Oracle Restart and click Next.

Selecting Oracle Restart configuration option

Provide the disk group name as CRS, and select Redundancy as External. Then click Change Discovery Path.

Configuring the CRS disk group with External redundancy

Provide the ASM disk path.

Specifying the ASM disk discovery path

Select the disk for CRS. Click Next. (Note: the other disk groups are created later, in Step 13.)

Selecting the ASM disk for the CRS disk group

Provide the password for the SYS user of the ASM instance. Click Next.

Setting the SYS password for the ASM instance

Click Next.

Grid Infrastructure management options screen

Provide the OS user group. Click Next.

Specifying OS groups for Grid Infrastructure

Provide the Grid base. Click Next.

Specifying the Grid base directory

Provide the Inventory location. Click Next.

Specifying the Oracle Inventory directory

Root scripts will be run manually, so click Next.

Choosing to run configuration scripts manually

The installer checks prerequisites.

Grid Infrastructure prerequisite checks running

Click on Fix and Check.

Prerequisite check failures with a Fix and Check option

Run the provided script with the root user. Then click OK.

Dialog showing the fixup script to run as root

[root@orares ~]# /tmp/GridSetupActions2025-12-23_09-13-25PM/CVU_19.0.0.0.0_oracle/runfixup.sh
All Fix-up operations were completed successfully.
[root@orares ~]#

Check Ignore All and click Next.

Ignoring remaining prerequisite warnings

Review the summary and click Install.

Reviewing Grid Infrastructure installation summary

Monitor the progress.

Grid Infrastructure installation progress

Run the provided scripts with the root user. Then click OK.

Dialog prompting to run root configuration scripts

[root@orares ~]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@orares ~]#

[root@orares ~]# /u01/app/grid/19c/grid_1/root.sh
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/grid/19c/grid_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...

Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /u01/app/grid/19c/grid_1/crs/install/crsconfig_params
The log of current session can be found at:
  /u01/app/grid/crsdata/orares/crsconfig/roothas_2025-12-23_09-30-57PM.log
2025/12/23 21:31:09 CLSRSC-363: User ignored prerequisites during installation
LOCAL ADD MODE
Creating OCR keys for user 'oracle', privgrp 'oinstall'..
Operation successful.
LOCAL ONLY MODE
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
CRS-4664: Node orares successfully pinned.
2025/12/23 21:31:22 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service'

orares     2025/12/23 21:34:36     /u01/app/grid/crsdata/orares/olr/backup_20251223_213436.olr     724960844
2025/12/23 21:34:37 CLSRSC-327: Successfully configured Oracle Restart for a standalone server
[root@orares ~]#

Monitor the progress.

Grid Infrastructure configuration progress

Installation has been completed. Click Close.

Grid Infrastructure installation completion screen

Step 12: Verify the Grid Installation

Confirm the ASM instance and listener processes are running, and that High Availability Services and Cluster Synchronization Services both report healthy.


[oracle@orares grid_1]$ ps -ef|grep pmon
oracle   16922     1  0 21:40 ?        00:00:00 asm_pmon_+ASM
oracle   26980  3614  0 21:56 pts/1    00:00:00 grep --color=auto pmon
[oracle@orares grid_1]$
[oracle@orares grid_1]$ ps -ef|grep tns
root        22     2  0 19:45 ?        00:00:00 [netns]
oracle   10663     1  0 21:38 ?        00:00:00 /u01/app/grid/19c/grid_1/bin/tnslsnr LISTENER -no_crs_notify -inherit
oracle   26994  3614  0 21:56 pts/1    00:00:00 grep --color=auto tns
[oracle@orares grid_1]$ cd bin
[oracle@orares bin]$
[oracle@orares bin]$ ./crsctl check has
CRS-4638: Oracle High Availability Services is online
[oracle@orares bin]$
[oracle@orares bin]$ ./crsctl query has releaseversion
Oracle High Availability Services release version on the local node is [19.0.0.0.0]
[oracle@orares bin]$ ./crsctl check css
CRS-4529: Cluster Synchronization Services is online
[oracle@orares bin]$

Step 13: Create the Remaining ASM Disk Groups Using ASMCA

Only the CRS disk group was created during the Grid install. DATA and FRA are created here using the graphical ASM Configuration Assistant.


[oracle@orares grid_1]$ asmca

A GUI window will open. Follow the steps below.

Click on Disk Groups.

Disk Groups tab in ASM Configuration Assistant

Click Create at the bottom.

Creating a new ASM disk group

Provide the disk group name, its path, and other options. Click OK.

Specifying the DATA disk group name and candidate disk

DATA disk group has been created. Click Create again to create the FRA disk group.

DATA disk group created, starting FRA disk group creation

Provide the details and click OK.

Specifying the FRA disk group name and candidate disk

The required disk groups have now been created.

ASM Configuration Assistant showing all disk groups created

Step 14: Verify the Disk Groups via SQL*Plus

Connect as sysasm and confirm all three disk groups exist with the expected capacity.


[oracle@orares grid_1]$ sqlplus / as sysasm

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Dec 23 22:27:20 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> select NAME,TOTAL_MB/(1024) TOTAL_GB,FREE_MB/1024 FREE_GB,(TOTAL_MB-FREE_MB)/1024 USED_GB,(FREE_MB/TOTAL_MB)*100 FREE_PER 
     from v$asm_diskgroup;

NAME                             TOTAL_GB    FREE_GB    USED_GB   FREE_PER
------------------------------ ---------- ---------- ---------- ----------
CRS                            9.99609375  9.8984375  .09765625 99.0230559
DATA                                   25 24.9140625   .0859375   99.65625
FRA                                    15 14.9140625   .0859375 99.4270833

Step 15: Unzip the Database Home Software

Same pattern as the Grid software: place the zip on disk and unzip it directly into the target Database home.


[oracle@orares software]$ pwd
/u01/software
[oracle@orares software]$ ls -lrth
total 5.6G
-rw-r--r--. 1 oracle oinstall 2.9G Dec 23 02:03 LINUX.X64_193000_db_home.zip
-rw-r--r--. 1 oracle oinstall 2.7G Dec 23 02:05 LINUX.X64_193000_grid_home.zip
[oracle@orares software]$ unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/19c/db_1
[oracle@orares software]$

Step 16: Create an Environment File for the Database Home

A second environment file, separate from .grid_env, makes it easy to switch between the ASM/Grid context and the database context as needed.


[oracle@orares ~]$ cat .db_env

# Environment variables for Database - DB Home
ORACLE_SID=orcldb; export ORACLE_SID
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle/19c/db_1; export ORACLE_HOME
JAVA_HOME=/usr/bin/java; export JAVA_HOME
PATH=$ORACLE_HOME/bin:$JAVA_HOME/bin:$PATH:.
export PATH
[oracle@orares ~]$ . .db_env
[oracle@orares ~]$  env|grep ORA
ORACLE_SID=orcldb
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/19c/db_1
[oracle@orares ~]$

Step 17: Start the Database Home Installation

Launch runInstaller from the new Database home.


[oracle@orares ~]$ cd /u01/app/oracle/19c/db_1
[oracle@orares db_1]$ ls
addnode     crs   dbjava       dmu      hs             jdbc  md       olap     ords  plsql    rdbms          runInstaller   sqlj      ucp
apex        css   dbs          drdaas   install        jdk   mgw      OPatch   oss   precomp  relnotes       schagent.conf  sqlpatch  usm
assistants  ctx   deinstall    dv       instantclient  jlib  network  opmn     oui   QOpatch  root.sh        sdk            sqlplus   utl
bin         cv    demo         env.ora  inventory      ldap  nls      oracore  owm   R        root.sh.old    slax           srvm      wwg
clone       data  diagnostics  has      javavm         lib   odbc     ord      perl  racg     root.sh.old.1  sqldeveloper   suptools  xdk
[oracle@orares db_1]$ ./runInstaller
Launching Oracle Database Setup Wizard...

The response file for this session can be found at:
 /u01/app/oracle/19c/db_1/install/response/db_2025-12-23_10-36-19PM.rsp

You can find the log of this install session at:
 /u01/app/oraInventory/logs/InstallActions2025-12-23_10-36-19PM/installActions2025-12-23_10-36-19PM.log
[oracle@orares db_1]$

A GUI installer window will open. Follow the steps below.

Select Software Only and click Next — the database itself gets created separately with DBCA in Step 18.

Selecting the Software Only installation option

Select Single Instance and click Next.

Selecting Single Instance database installation type

Select the Edition and click Next.

Selecting the database Edition

Provide the Oracle Base and click Next.

Specifying the Oracle Base directory for the database home

Provide the OS group and click Next.

Specifying OS groups for the database installation

Root scripts will be run manually, so click Next.

Choosing to run root scripts manually for the database install

Check Ignore All and click Next.

Ignoring prerequisite check warnings for the database install

Verify the details and click Install.

Reviewing database software installation summary

Monitor the progress.

Database software installation progress

Run the script with the root user and click OK.

Dialog prompting to run root.sh for the database home

[root@orares ~]# /u01/app/oracle/19c/db_1/root.sh
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/19c/db_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.

Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Oracle Trace File Analyzer (TFA - Standalone Mode) is available at :
    /u01/app/oracle/19c/db_1/bin/tfactl

Note :
1. tfactl will use TFA Service if that service is running and user has been granted access
2. tfactl will configure TFA Standalone Mode only if user has no access to TFA Service or TFA is not installed
[root@orares ~]#

Installation has now been completed. Click Close.

Database software installation completion screen

Step 18: Create the Database with DBCA

With the software installed, DBCA handles the actual database creation, including its ASM storage placement and initial sizing.


[oracle@orares db_1]$ dbca

Select Create Database and click Next.

Selecting Create a database in DBCA

Select Advanced and click Next.

Selecting the Advanced Configuration option in DBCA

Select General Purpose and click Next.

Selecting the General Purpose database template

Provide the database, SID, and PDB name. Click Next.

Specifying the database name, SID, and PDB name

Select storage option as ASM. Click Next.

Selecting ASM as the database storage type

Provide FRA options and click Next.

Configuring the Fast Recovery Area options

Check Listener and click Next.

Confirming listener registration for the new database

Provide SGA and PGA values. Click Next.

Setting SGA and PGA memory allocation for the database

Click Next.

Database configuration options screen

Provide the SYS/SYSTEM password. Click Next.

Setting the SYS and SYSTEM user passwords

Click Next.

Database creation options summary screen

Review the details and click Finish.

Reviewing database creation summary before Finish

Monitor the progress.

Database creation progress

Database creation progress continuing

The database has now been created. Click Close.

Database creation completion screen

Step 19: Verify the Database

Confirm the database instance and listener are running, and that the database and its PDB are open.


[oracle@orares ~]$ ps -ef|grep pmon
oracle    5757     1  0 Dec23 ?        00:00:00 ora_pmon_orcldb
oracle   16922     1  0 Dec23 ?        00:00:00 asm_pmon_+ASM
oracle   20747  3614  0 00:32 pts/1    00:00:00 grep --color=auto pmon
[oracle@orares ~]$
[oracle@orares ~]$ ps -ef|grep tns
root        22     2  0 Dec23 ?        00:00:00 [netns]
oracle   10663     1  0 Dec23 ?        00:00:00 /u01/app/grid/19c/grid_1/bin/tnslsnr LISTENER -no_crs_notify -inherit
oracle   20761  3614  0 00:32 pts/1    00:00:00 grep --color=auto tns
[oracle@orares ~]$
[oracle@orares ~]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 24-DEC-2025 00:32:30

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                23-DEC-2025 21:38:01
Uptime                    0 days 2 hr. 54 min. 29 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/grid/19c/grid_1/network/admin/listener.ora
Listener Log File         /u01/app/grid/diag/tnslsnr/orares/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=orares.oraeasy.com)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "+ASM_CRS" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "+ASM_FRA" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "46a3632ba42417ede0651fe43e14032c" has 1 instance(s).
  Instance "orcldb", status READY, has 1 handler(s) for this service...
Service "86b637b62fdf7a65e053f706e80a27ca" has 1 instance(s).
  Instance "orcldb", status READY, has 1 handler(s) for this service...
Service "orcldb" has 1 instance(s).
  Instance "orcldb", status READY, has 1 handler(s) for this service...
Service "orcldbXDB" has 1 instance(s).
  Instance "orcldb", status READY, has 1 handler(s) for this service...
Service "orclpdb" has 1 instance(s).
  Instance "orcldb", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@orares ~]$

[oracle@orares ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Dec 24 00:29:17 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL>
SQL> def
DEFINE _DATE           = "24-DEC-25" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "orcldb" (CHAR)
DEFINE _USER           = "SYS" (CHAR)
DEFINE _PRIVILEGE      = "AS SYSDBA" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1903000000" (CHAR)
DEFINE _EDITOR         = "vi" (CHAR)
DEFINE _O_VERSION      = "Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0" (CHAR)
DEFINE _O_RELEASE      = "1903000000" (CHAR)
SQL>
SQL> select name,open_mode,cdb,version,status from v$database, v$instance;

NAME      OPEN_MODE            CDB VERSION           STATUS
--------- -------------------- --- ----------------- ------------
ORCLDB    READ WRITE           YES 19.0.0.0.0        OPEN

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO
SQL>

Step 20: Check the Oracle Restart Configuration Using srvctl

srvctl is the standard tool for checking how Oracle Restart has registered the database as a managed resource.


[oracle@orares ~]$ srvctl config
orcldb
[oracle@orares ~]$
[oracle@orares ~]$ srvctl status database -d orcldb
Database is running.
[oracle@orares ~]$ srvctl config database -d orcldb
Database unique name: orcldb
Database name: orcldb
Oracle home: /u01/app/oracle/19c/db_1
Oracle user: oracle
Spfile: +DATA/ORCLDB/PARAMETERFILE/spfile.269.1220657139
Password file:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups: DATA,FRA
Services:
OSDBA group:
OSOPER group:
Database instance: orcldb

Step 21: Ensure CRS Resources Auto-Start on Reboot

By default, the DATA and FRA disk groups are not set to auto-start, which would leave the database unable to mount them after a reboot. Both disk groups and the database resource need AUTO_START=always for Oracle Restart to bring everything back up automatically.


Check current setting:
[root@orares ~]# ps -ef|grep d.bin root 1010 946 0 15:20 pts/0 00:00:00 grep --color=auto d.bin oracle 1981 1 8 13:20 ? 00:09:53 /u01/app/grid/19c/grid_1/bin/ohasd.bin reboot oracle 2271 1 0 13:20 ? 00:00:20 /u01/app/grid/19c/grid_1/bin/evmd.bin oracle 2369 1 0 13:20 ? 00:00:24 /u01/app/grid/19c/grid_1/bin/ocssd.bin [root@orares ~]# [root@orares ~]# cd /u01/app/grid/19c/grid_1/bin [root@orares bin]# ./crsctl stat res ora.orcldb.db -p | grep AUTO_START AUTO_START=restore [root@orares bin]# ./crsctl stat res ora.DATA.dg -p | grep AUTO_START AUTO_START=never [root@orares bin]# ./crsctl stat res ora.FRA.dg -p | grep AUTO_START AUTO_START=never [root@orares bin]# As its not set up for Auto start, so let's modify that:
[root@orares bin]# ./crsctl modify resource "ora.DATA.dg" -attr "AUTO_START=always" CRS-4995: The command 'Modify resource' is invalid in crsctl. Use srvctl for this command. [root@orares bin]# [root@orares bin]# ./crsctl modify resource "ora.DATA.dg" -attr "AUTO_START=always" -unsupported [root@orares bin]# ./crsctl modify resource "ora.FRA.dg" -attr "AUTO_START=always" -unsupported [root@orares bin]# ./crsctl modify resource "ora.orcldb.db" -attr "AUTO_START=always" -unsupported Now verify:
[root@orares bin]# ./crsctl stat res ora.orcldb.db -p | grep AUTO_START AUTO_START=always [root@orares bin]# ./crsctl stat res ora.DATA.dg -p | grep AUTO_START AUTO_START=always [root@orares bin]# ./crsctl stat res ora.FRA.dg -p | grep AUTO_START AUTO_START=always

Step 22: Reboot the Server and Verify the DB Services

The final proof of Oracle Restart doing its job: after a full reboot, both the ASM instance and the database instance should come back up on their own, without any manual intervention.


[oracle@orares bin]$ su -
Password:
Last login: Thu Dec 25 13:10:43 IST 2025 on pts/0
[root@orares ~]#

[root@orares bin]# init 6

Remote side unexpectedly closed network connection
─────────────────────────────────────────────────────────────────────────────────────
Session stopped
    - Press  to exit tab
    - Press R to restart session
    - Press S to save terminal output to file
    ┌──────────────────────────────────────────────────────────────────────┐
    │                 • MobaXterm Personal Edition v23.2 •                 │
    │               (SSH client, X server and network tools)               │
    │                                                                      │
    │ ⮞ SSH session to oracle@192.168.1.45                                 │
    │   • Direct SSH      :  ✓                                             │
    │   • SSH compression :  ✓                                             │
    │   • SSH-browser     :  ✓                                             │
    │   • X11-forwarding  :  ✓  (remote display is forwarded through SSH)  │
    │                                                                      │
    │ ⮞ For more info, ctrl+click on help or visit our website.            │
    └──────────────────────────────────────────────────────────────────────┘

Last login: Thu Dec 25 15:26:49 2025
[oracle@orares ~]$ ps -ef|grep pmon
oracle    2732     1  0 15:27 ?        00:00:00 asm_pmon_+ASM
oracle    2814  2689  0 15:27 pts/0    00:00:00 grep --color=auto pmon
[oracle@orares ~]$
[oracle@orares ~]$
[oracle@orares ~]$ ps -ef|grep pmon
oracle    2732     1  0 15:27 ?        00:00:00 asm_pmon_+ASM
oracle    2818  2689  0 15:27 pts/0    00:00:00 grep --color=auto pmon
[oracle@orares ~]$
[oracle@orares ~]$
[oracle@orares ~]$ uptime -p
up 2 minutes
[oracle@orares ~]$
[oracle@orares ~]$ ps -ef|grep pmon
oracle    2732     1  0 15:27 ?        00:00:00 asm_pmon_+ASM
oracle    2892     1  0 15:27 ?        00:00:00 ora_pmon_orcldb
oracle    3021  2689  0 15:28 pts/0    00:00:00 grep --color=auto pmon
[oracle@orares ~]$

The ora_pmon_orcldb process appearing a couple of minutes after reboot, alongside asm_pmon_+ASM, confirms Oracle Restart brought both ASM and the database instance back online automatically, with no manual startup required.



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

Oracle DBA with hands-on experience managing production Data Guard, RAC, GoldenGate, and APEX environments. I write practical, tested installation and troubleshooting guides based on real deployment work.

📧 Email: oraeasyy@gmail.com
🌐 Website: www.oraeasy.com

Follow Us

Comments