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.
In the Hard Disk section, click Create.
Select hard disk type: VDI. Click Next.
Select Pre-Allocate, since this disk will be used as ASM storage. Click Next.
Select a name, location, and size for the disk. Click Finish.
Monitor the progress.
Once completed, the hard disk can be viewed in the media manager.
Now select the machine and click Storage.
In the controller SATA section, click Add Hard Disk.
Select the disk name and click Choose.
Click OK.
Now in Storage, the added hard disk can be viewed.
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.
Provide the disk group name as CRS, and select Redundancy as External. Then click Change Discovery Path.
Provide the ASM disk path.
Select the disk for CRS. Click Next. (Note: the other disk groups are created later, in Step 13.)
Provide the password for the SYS user of the ASM instance. Click Next.
Click Next.
Provide the OS user group. Click Next.
Provide the Grid base. Click Next.
Provide the Inventory location. Click Next.
Root scripts will be run manually, so click Next.
The installer checks prerequisites.
Click on Fix and Check.
Run the provided script with the root user. Then click OK.
[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.
Review the summary and click Install.
Monitor the progress.
Run the provided scripts with the root user. Then click OK.
[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.
Installation has been completed. Click Close.
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.
Click Create at the bottom.
Provide the disk group name, its path, and other options. Click OK.
DATA disk group has been created. Click Create again to create the FRA disk group.
Provide the details and click OK.
The required disk groups have now been 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.
Select Single Instance and click Next.
Select the Edition and click Next.
Provide the Oracle Base and click Next.
Provide the OS group and click Next.
Root scripts will be run manually, so click Next.
Check Ignore All and click Next.
Verify the details and click Install.
Monitor the progress.
Run the script with the root user and click OK.
[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.
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.
Select Advanced and click Next.
Select General Purpose and click Next.
Provide the database, SID, and PDB name. Click Next.
Select storage option as ASM. Click Next.
Provide FRA options and click Next.
Check Listener and click Next.
Provide SGA and PGA values. Click Next.
Click Next.
Provide the SYS/SYSTEM password. Click Next.
Click Next.
Review the details and click Finish.
Monitor the progress.
The database has now been created. Click Close.
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.































































Comments
Post a Comment