All steps on this page should be performed as 'root' unless otherwise indicated.
This has been tested on Oracle Linux 8 and Oracle Database 19c (Apr-2025)
Check:
yum list oracle-rdbms-server-12cR1-preinstall
Install:
yum install oracle-rdbms-server-12cR1-preinstall -y
Check:
yum list oracle-database-server-12cR2-preinstall
Install:
yum install oracle-database-server-12cR2-preinstall -y
Linux is assumed to be Oracle Enterprise Linux 7
As root:
yum install oracle-database-preinstall-18c.x86_64 –y
To check if it is already installed use:
yum list oracle-database-preinstall-18c.x86_64
Linux is assumed to be Oracle Enterprise Linux 7, 8 or 9 or RHEL 7, 8 or 9.
You can only download this script if you have an active ULN subscription.
As root:
dnf install oracle-database-preinstall-19cTo check if it is already installed use:
dnf list oracle-database-preinstall-19cIf you cannot use the preinstall rpm. The list of required packages is...
To install, if necessary...
dnf install bcdnf install binutilsdnf install compat-openssl10dnf install elfutils-libelfdnf install elfutils-libelf-develdnf install fontconfigdnf install glibcdnf install glibc-develdnf install kshdnf install libaiodnf install libaio-develdnf install libXrenderdnf install libX11dnf install libXaudnf install libXidnf install libXtstdnf install libgccdnf install libnsldnf install librdmacmdnf install libstdc++dnf install libstdc++-develdnf install libxcbdnf install libibverbsdnf install libasandnf install liblsandnf install makednf install policycoreutilsdnf install policycoreutils-python-utilsdnf install smartmontoolsdnf install sysstatdnf install gccdnf install libgfortrandnf install nfs-utilsOracle recommeds using tsc as the clock source.
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
GRUB_CMDLINE_LINUX="rd.lvm.lv=ol/root rd.lvm.lv=ol/swap rhgb quiet numa=off transparent_hugepage=never clocksource=tsc"
grub2-mkconfig -o /boot/grub2/grub.cfg
Add the following lines to the /etc/security/limits.conf file:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
Check (Red Hat Kernel):
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
Check (Oracle Kernel):
cat /sys/kernel/mm/transparent_hugepage/enabled
Output as shown below indicates that transparent hugepages are disabled
always madvise [never]
Output as shown below indicates that transparent hugepages is being used and is set to madvise...
always [madvise] never
You SHOULD DISABLE Transparent Huge Pages BEFORE installing Oracle Database where the kernel is NOT UEK7 or above
Update the /etc/default/grub file to include "transparent_hugepage=never"...
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"
grub2-mkconfig -o /boot/grub2/grub.cfg
UEK7 and later
Update the /etc/default/grub file to include "transparent_hugepage=madvise"...
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off transparent_hugepage=madvise"
GRUB_DISABLE_RECOVERY="true"
Oracle Linux 8
grub2-mkconfig -o /boot/grub2/grub.cfg
Oracle Linux 9
grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline
Check if the kernal supports HugePages...
grep Huge /proc/meminfo
This output is fine for 19c+ as the actual configuration of the Huge Pages is controlled within the database configuration. For earlier versions of Oracle database refer to the Oracle documentation.
Edit the memlock settings in /etc/security/limits.conf.
Set the maximum locked memory to 90% of physical RAM in KB.
* soft memlock 60397977
* hard memlock 60397977
Create configuration file...
vi /etc/sysctl.d/97-oracle-database-sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
shmmax should by 0.5 * Physical RAM in bytes
Apply...
/sbin/sysctl --system
Check...
/sbin/sysctl -a
getent passwd
getent group
/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g 54324 backupdba
/usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54326 kmdba
/usr/sbin/groupadd -g 54327 asmdba
/usr/sbin/groupadd -g 54328 asmoper
/usr/sbin/groupadd -g 54330 racdba
/usr/sbin/useradd -u 54321 -g oinstall -G dba,oper,asmdba,backupdba,dgdba,kmdba,racdba oracle
/usr/sbin/useradd -u 54331 -g oinstall -G dba,oper,asmdba,backupdba,dgdba,kmdba,racdba grid
You should change the passwords to known values:
passwd oracle
passwd grid
If this is a fresh install on an empty server, the Oracle Inventory should not exist.
To run the installer, runlevel must be 3 or 5...
runlevel