3. Oracle Database 19c Installation on Oracle Linux 10 (OL10)

 

Oracle Database 19c Installation on Oracle Linux 10 (OL10)

Introduction

This article describes the installation of Oracle Database 19c 64-bit on Oracle Linux 10 (OL10) 64-bit. The installation is based on a server configuration with a minimum of 2 GB swap space and secure Linux (SELinux) set to permissive.

⚠️ Important Warning: Oracle Database 19c is not currently supported on Oracle Linux 10. This installation should not be performed for a real production database. It is intended for testing, learning, or lab environments only. For production, always use a certified combination of Oracle Database and Oracle Linux.


Overview of the Installation Process

#PhaseDescription
1Download SoftwareObtain Oracle 19c installation media and required patches
2Hosts FileConfigure the server's hostname
3Oracle Installation PrerequisitesAutomatic or manual setup
4Additional SetupSteps required for all installations
5InstallationRun the Oracle Universal Installer (OUI)
6Patch InstallationApply the required patches
7Database CreationCreate a database using DBCA
8Post InstallationConfigure automatic startup

Phase 1: Download Software

Download the Oracle software from one of the following sources:

SourceDescription
OTNOracle Database 19c (19.3) Software (64-bit)
eDeliveryOracle Database 19c (19.3) Software (64-bit)

Note: Access to OTN is free, but access to eDelivery may require a support contract. For patches, a valid Oracle Support CSI is required.


Phase 2: Configure the Hosts File

The /etc/hosts file must contain a fully qualified name for the server.

Format:

text
<IP-address>  <fully-qualified-machine-name>  <machine-name>

Example:

text
127.0.0.1       localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.56.107  ol10-19.localdomain  ol10-19

Set the hostname in /etc/hostname:

text
ol10-19.localdomain

Important: The hostname must be resolvable both forward and backward. Verify with hostname and ping ol10-19.localdomain.


Phase 3: Oracle Installation Prerequisites

Automatic Setup

Note: Until Oracle Database 19c is officially supported on Oracle Linux 10, please use the manual setup described below.

Manual Setup

If you have not used the oracle-database-preinstall-19c package, perform the following steps manually.

Step 1: Configure Kernel Parameters

Add the following lines to /etc/sysctl.conf (or create a file called /etc/sysctl.d/98-oracle.conf):

bash
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500

Apply the changes:

bash
/sbin/sysctl -p
# Or
/sbin/sysctl -p /etc/sysctl.d/98-oracle.conf

Step 2: Configure User Limits

Create a file called /etc/security/limits.d/oracle-database-preinstall-19c.conf with the following content:

bash
oracle   soft   nofile    1024
oracle   hard   nofile    65536
oracle   soft   nproc    16384
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768
oracle   hard   memlock    134217728
oracle   soft   memlock    134217728

Step 3: Install Required Packages

Install the required packages using dnf:

bash
dnf install -y bc
dnf install -y binutils
dnf install -y compat-openssl11
dnf install -y elfutils-libelf
dnf install -y fontconfig
dnf install -y glibc
dnf install -y glibc-devel
dnf install -y ksh
dnf install -y libaio
dnf install -y libasan
dnf install -y liblsan
dnf install -y libX11
dnf install -y libXau
dnf install -y libXi
dnf install -y libXrender
dnf install -y libXtst
dnf install -y libxcrypt-compat
dnf install -y libgcc
dnf install -y libibverbs
dnf install -y libnsl
dnf install -y librdmacm
dnf install -y libstdc++
dnf install -y libxcb
dnf install -y libvirt-libs
dnf install -y make
dnf install -y policycoreutils
dnf install -y policycoreutils-python-utils
dnf install -y smartmontools
dnf install -y sysstat

dnf install -y glibc-headers
dnf install -y ipmiutil
dnf install -y libnsl2
dnf install -y libnsl2-devel
dnf install -y net-tools
dnf install -y nfs-utils

# Additional packages
dnf install -y gcc
dnf install -y unixODBC
dnf install -y libnsl
dnf install -y libxcrypt-compat

Note: Don't worry if some packages don't install. It won't prevent the installation.

Step 4: Create Groups and Users

Create the required groups and users:

bash
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
#groupadd -g 54324 backupdba
#groupadd -g 54325 dgdba
#groupadd -g 54326 kmdba
#groupadd -g 54327 asmdba
#groupadd -g 54328 asmoper
#groupadd -g 54329 asmadmin
#groupadd -g 54330 racdba

useradd -u 54321 -g oinstall -G dba,oper oracle

Note: Uncomment the extra groups you require (e.g., backupdba, dgdba, kmdba for advanced features).


Phase 4: Additional Setup

The following steps are required regardless of whether you performed the manual or automatic setup.

Step 1: Set the Oracle User Password

bash
passwd oracle

Step 2: Set SELinux to Permissive

Edit /etc/selinux/config and set:

text
SELINUX=permissive

Apply the change:

bash
# setenforce Permissive

Note: Alternatively, restart the server for the change to take effect.

Step 3: Disable the Firewall

bash
# systemctl stop firewalld
# systemctl disable firewalld

Note: In production environments, configure the firewall to allow Oracle ports instead of disabling it entirely.

Step 4: Disable Transparent Huge Pages (If Not Using Oracle Linux/UEK)

If you are not using Oracle Linux with UEK, you will need to manually disable transparent huge pages.

Step 5: Create Oracle Directories

bash
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
mkdir -p /u02/oradata
chown -R oracle:oinstall /u01 /u02
chmod -R 775 /u01 /u02

Important: Mount points should ideally be separate disks rather than directories under /. Putting mount points directly under root is done here for simplicity, but for a real installation, / storage should be reserved for the OS.

Step 6: Configure X11 Access (If Using GUI)

If you are not working from the console or using SSH tunnelling, log in as root and issue:

bash
xhost +<machine-name>

Step 7: Create Environment Scripts

Create a scripts directory:

bash
mkdir /home/oracle/scripts

Create setEnv.sh:

bash
cat > /home/oracle/scripts/setEnv.sh <<EOF
# Oracle Settings
export TMP=/tmp
export TMPDIR=\$TMP

export ORACLE_HOSTNAME=ol10-19.localdomain
export ORACLE_UNQNAME=cdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/19.0.0/dbhome_1
export ORA_INVENTORY=/u01/app/oraInventory
export ORACLE_SID=cdb1
export PDB_NAME=pdb1
export DATA_DIR=/u02/oradata

export PATH=/usr/sbin:/usr/local/bin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$PATH

export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
EOF

Note: The $ characters are escaped using \ because the script is created using the cat command. If you create the file manually, remove the escape characters.

Add a reference to .bash_profile:

bash
echo ". /home/oracle/scripts/setEnv.sh" >> /home/oracle/.bash_profile

Create start_all.sh and stop_all.sh:

bash
cat > /home/oracle/scripts/start_all.sh <<EOF
#!/bin/bash
. /home/oracle/scripts/setEnv.sh

export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES

dbstart \$ORACLE_HOME
EOF

cat > /home/oracle/scripts/stop_all.sh <<EOF
#!/bin/bash
. /home/oracle/scripts/setEnv.sh

export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES

dbshut \$ORACLE_HOME
EOF

chown -R oracle:oinstall /home/oracle/scripts
chmod u+x /home/oracle/scripts/*.sh

Result: Once the installation is complete and /etc/oratab is edited, you can start/stop the database with:

bash
~/scripts/start_all.sh
~/scripts/stop_all.sh

Phase 5: Installation

Step 1: Log In as Oracle User

bash
su - oracle

If using X emulation, set the DISPLAY variable:

bash
DISPLAY=<machine-name>:0.0; export DISPLAY

Step 2: Unzip the Software

Switch to the ORACLE_HOME directory and unzip the software directly into this path:

bash
export SOFTWARE_DIR=/u01/software
export OPATCH_FILE="p6880880_190000_Linux-x86-64.zip"
export PATCH_FILE="p37591483_190000_Linux-x86-64.zip"
export PATCH_TOP=${SOFTWARE_DIR}/37591483
export PATCH_PATH1=${PATCH_TOP}/37642901
export PATCH_PATH2=${PATCH_TOP}/37499406

# Unzip software
cd $ORACLE_HOME
unzip -oq ${SOFTWARE_DIR}/LINUX.X64_193000_db_home.zip
unzip -oq ${SOFTWARE_DIR}/${OPATCH_FILE}

cd ${SOFTWARE_DIR}
unzip -oq ${SOFTWARE_DIR}/${PATCH_FILE}

Note: Patch names and directories may vary depending on patch numbers. Adjust as required.

Step 3: Fake the OS Version

bash
cd $ORACLE_HOME
export CV_ASSUME_DISTID=OL8

Important: This step is required because Oracle Database 19c is not certified on Oracle Linux 10. The CV_ASSUME_DISTID environment variable tricks the installer into thinking it's running on Oracle Linux 8.

Step 4: Run the Installer

Interactive Mode (GUI):

bash
./runInstaller

Silent Mode (includes patch application):

bash
./runInstaller -ignorePrereq -waitforcompletion -silent                        \
    -applyRU ${PATCH_PATH1}                                                    \
    -responseFile ${ORACLE_HOME}/install/response/db_install.rsp               \
    oracle.install.option=INSTALL_DB_SWONLY                                    \
    ORACLE_HOSTNAME=${ORACLE_HOSTNAME}                                         \
    UNIX_GROUP_NAME=oinstall                                                   \
    INVENTORY_LOCATION=${ORA_INVENTORY}                                        \
    SELECTED_LANGUAGES=en,en_GB                                                \
    ORACLE_HOME=${ORACLE_HOME}                                                 \
    ORACLE_BASE=${ORACLE_BASE}                                                 \
    oracle.install.db.InstallEdition=EE                                        \
    oracle.install.db.OSDBA_GROUP=dba                                          \
    oracle.install.db.OSBACKUPDBA_GROUP=dba                                    \
    oracle.install.db.OSDGDBA_GROUP=dba                                        \
    oracle.install.db.OSKMDBA_GROUP=dba                                        \
    oracle.install.db.OSRACDBA_GROUP=dba                                       \
    SECURITY_UPDATES_VIA_MYORACLESUPPORT=false                                 \
    DECLINE_SECURITY_UPDATES=true

Step 5: Run the Root Scripts

When prompted, run the following scripts as root:

bash
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/19.0.0/dbhome_1/root.sh

Tip: You are now ready to create a database, but it's better to patch the installation first if you have access to Oracle Support.


Phase 6: Patch Installation

For the installation to be supported, you need to be on patch level 19.19 or later. To get the patches, you need a valid Oracle Support CSI.

This is an example of applying the 19.21 patch to a clean standalone installation without ASM and before a database is created. Since the main RU was already applied during the software installation, only the OJVM needs to be patched.

bash
export SOFTWARE_DIR=/u01/software
export PATH=${ORACLE_HOME}/OPatch:${PATH}
export OPATCH_FILE="p6880880_190000_Linux-x86-64.zip"
export PATCH_FILE="p37591483_190000_Linux-x86-64.zip"
export PATCH_TOP=${SOFTWARE_DIR}/37591483
export PATCH_PATH1=${PATCH_TOP}/37642901
export PATCH_PATH2=${PATCH_TOP}/37499406

cd ${PATCH_PATH2}
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch apply -silent

Important: For patches on real systems, always read the patch notes first.


Phase 7: Database Creation

Create a database using the Database Configuration Assistant (DBCA).

Step 1: Start the Listener

bash
lsnrctl start

Step 2: Run DBCA

Interactive Mode (GUI):

bash
dbca

Silent Mode:

bash
dbca -silent -createDatabase                                                   \
     -templateName General_Purpose.dbc                                         \
     -gdbname ${ORACLE_SID} -sid ${ORACLE_SID} -responseFile NO_VALUE          \
     -characterSet AL32UTF8                                                    \
     -sysPassword SysPassword1                                                 \
     -systemPassword SysPassword1                                              \
     -createAsContainerDatabase true                                           \
     -numberOfPDBs 1                                                           \
     -pdbName ${PDB_NAME}                                                      \
     -pdbAdminPassword PdbPassword1                                            \
     -databaseType MULTIPURPOSE                                                \
     -memoryMgmtType auto_sga                                                  \
     -totalMemory 2000                                                         \
     -storageType FS                                                           \
     -datafileDestination "${DATA_DIR}"                                        \
     -redoLogFileSize 50                                                       \
     -emConfiguration NONE                                                     \
     -ignorePreReqs

Note: Replace SysPassword1 and PdbPassword1 with secure passwords of your choice. The -totalMemory 2000 parameter sets the total memory to 2 GB; adjust based on your server's resources.


Phase 8: Post Installation

Edit the /etc/oratab file and set the restart flag for each instance to Y:

text
cdb1:/u01/app/oracle/product/19.0.0/dbhome_1:Y

Purpose: The Y flag enables automatic startup of the database when the server boots, using the dbstart utility.


The Complete Installation Flow

text
┌─────────────────────────────────────────────────────────────────┐
│  1. DOWNLOAD SOFTWARE                                           │
│     Oracle Database 19c (19.3) Software + Patches               │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│  2. HOSTS FILE                                                  │
│     Configure /etc/hosts and /etc/hostname                      │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│  3. PREREQUISITES (Manual)                                      │
│     sysctl, limits, packages, groups, users                     │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│  4. ADDITIONAL SETUP                                            │
│     Password, SELinux, firewall, directories, scripts           │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│  5. INSTALLATION                                                │
│     export CV_ASSUME_DISTID=OL8                                 │
│     ./runInstaller (interactive or silent)                      │
│     Run root scripts                                            │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│  6. PATCH INSTALLATION                                          │
│     opatch apply (OJVM and other patches)                       │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│  7. DATABASE CREATION                                           │
│     lsnrctl start                                               │
│     dbca (interactive or silent)                                │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│  8. POST INSTALLATION                                           │
│     Edit /etc/oratab and set the restart flag to Y              │
└─────────────────────────────────────────────────────────────────┘

Key Configuration Files

FilePurpose
/etc/hostsHostname resolution
/etc/hostnameServer hostname
/etc/sysctl.confKernel parameters
/etc/security/limits.d/oracle-database-preinstall-19c.confUser limits
/etc/selinux/configSELinux mode
/home/oracle/scripts/setEnv.shOracle environment variables
/home/oracle/.bash_profileShell profile
/etc/oratabDatabase startup configuration

Best Practices

PracticeDescription
Use Certified CombinationsFor production, use certified OS and database versions
Use Separate Mount PointsMount /u01, /u02, etc. on separate disks
Configure the FirewallInstead of disabling, configure ports (1521, etc.)
Set Secure PasswordsUse strong passwords for SYS, SYSTEM, and PDB admin
Patch Before Creating DBApply the latest patches before creating the database
Use Silent Mode for AutomationSilent installs are ideal for scripting and automation
Read Patch NotesAlways read patch notes before applying patches
Test the InstallationVerify connectivity and basic operations after installation
Document ConfigurationKeep a record of all parameters and settings

Troubleshooting Common Issues

IssuePossible CauseSolution
Prerequisite check failsMissing packagesInstall required packages via dnf
Installer won't startDISPLAY not setSet the DISPLAY variable or use silent mode
OS version not supportedOracle Linux 10 not certifiedUse CV_ASSUME_DISTID=OL8
Root script failsWrong permissionsRun as root and verify paths
DBCA failsListener not runningStart the listener with lsnrctl start
Database won't startWrong ORACLE_HOMEVerify environment variables
Memory errorsInsufficient memoryIncrease server memory or reduce SGA
Firewall blocks connectionsFirewall enabledConfigure or disable the firewall
Patch application failsWrong OPatch versionUpdate OPatch to the latest version

Summary

Installing Oracle Database 19c on Oracle Linux 10 involves the following key phases:

  1. Download Software: Obtain the installation media and required patches

  2. Hosts File: Configure the server's hostname

  3. Prerequisites: Install required packages, kernel parameters, and user limits

  4. Additional Setup: Set passwords, SELinux, firewall, directories, and scripts

  5. Installation: Run the Oracle Universal Installer (OUI) with CV_ASSUME_DISTID=OL8

  6. Patch Installation: Apply the required patches (19.19 or later)

  7. Database Creation: Use DBCA to create a container database with a PDB

  8. Post Installation: Configure automatic startup via /etc/oratab

Key Points to Remember

  • Oracle Database 19c is not certified on Oracle Linux 10 — use CV_ASSUME_DISTID=OL8 to work around this

  • Do not use this installation for production — it is for testing and learning only

  • Kernel parameters and user limits must be configured for optimal performance

  • SELinux should be set to permissive during installation

  • The root scripts must be run after the installer completes

  • Patches must be applied to reach a supported patch level (19.19 or later)

  • DBCA creates the database with a container (CDB) and pluggable database (PDB)

  • The /etc/oratab file controls automatic startup

Why This Matters

Proper installation and configuration of Oracle Database 19c is essential for:

  • Reliable Performance: Correct kernel parameters and user limits ensure optimal database performance

  • Security: Proper user/group setup and SELinux configuration protect the database

  • Manageability: Environment scripts and automatic startup simplify administration

  • Scalability: A well-configured database can handle growing workloads

  • Compatibility: Correct setup ensures compatibility with Oracle E-Business Suite and other applications

By following this guide, you can successfully install Oracle Database 19c on Oracle Linux 10 for testing and learning purposes, understanding the workarounds required for unsupported configurations.


References

  • Oracle Database Documentation: Database Installation Guide for Linux

  • Oracle Database Documentation: Database Administrator's Reference

  • My Oracle Support: Oracle Database 19c Certification Matrix

  • Oracle Linux Documentation: Oracle Linux 10 Administrator's Guide

  • Related Articles: Oracle Universal Installations (OUI) Silent Installations, Database Configuration Assistant (DBCA): Creating Databases in Silent Mode

No comments:

Post a Comment