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
| # | Phase | Description |
|---|---|---|
| 1 | Download Software | Obtain Oracle 19c installation media and required patches |
| 2 | Hosts File | Configure the server's hostname |
| 3 | Oracle Installation Prerequisites | Automatic or manual setup |
| 4 | Additional Setup | Steps required for all installations |
| 5 | Installation | Run the Oracle Universal Installer (OUI) |
| 6 | Patch Installation | Apply the required patches |
| 7 | Database Creation | Create a database using DBCA |
| 8 | Post Installation | Configure automatic startup |
Phase 1: Download Software
Download the Oracle software from one of the following sources:
| Source | Description |
|---|---|
| OTN | Oracle Database 19c (19.3) Software (64-bit) |
| eDelivery | Oracle 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:
<IP-address> <fully-qualified-machine-name> <machine-name>Example:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.56.107 ol10-19.localdomain ol10-19Set the hostname in /etc/hostname:
ol10-19.localdomainImportant: The hostname must be resolvable both forward and backward. Verify with
hostnameandping 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):
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 65500Apply the changes:
/sbin/sysctl -p
# Or
/sbin/sysctl -p /etc/sysctl.d/98-oracle.confStep 2: Configure User Limits
Create a file called /etc/security/limits.d/oracle-database-preinstall-19c.conf with the following content:
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 134217728Step 3: Install Required Packages
Install the required packages using dnf:
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-compatNote: 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:
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 oracleNote: Uncomment the extra groups you require (e.g.,
backupdba,dgdba,kmdbafor 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
passwd oracleStep 2: Set SELinux to Permissive
Edit /etc/selinux/config and set:
SELINUX=permissiveApply the change:
# setenforce PermissiveNote: Alternatively, restart the server for the change to take effect.
Step 3: Disable the Firewall
# systemctl stop firewalld
# systemctl disable firewalldNote: 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
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 /u02Important: 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:
xhost +<machine-name>Step 7: Create Environment Scripts
Create a scripts directory:
mkdir /home/oracle/scriptsCreate setEnv.sh:
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
EOFNote: The
$characters are escaped using\because the script is created using thecatcommand. If you create the file manually, remove the escape characters.
Add a reference to .bash_profile:
echo ". /home/oracle/scripts/setEnv.sh" >> /home/oracle/.bash_profileCreate start_all.sh and stop_all.sh:
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/*.shResult: Once the installation is complete and
/etc/oratabis edited, you can start/stop the database with:~/scripts/start_all.sh ~/scripts/stop_all.sh
Phase 5: Installation
Step 1: Log In as Oracle User
su - oracleIf using X emulation, set the DISPLAY variable:
DISPLAY=<machine-name>:0.0; export DISPLAYStep 2: Unzip the Software
Switch to the ORACLE_HOME directory and unzip the software directly into this path:
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
cd $ORACLE_HOME
export CV_ASSUME_DISTID=OL8Important: This step is required because Oracle Database 19c is not certified on Oracle Linux 10. The
CV_ASSUME_DISTIDenvironment variable tricks the installer into thinking it's running on Oracle Linux 8.
Step 4: Run the Installer
Interactive Mode (GUI):
./runInstallerSilent Mode (includes patch application):
./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=trueStep 5: Run the Root Scripts
When prompted, run the following scripts as root:
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/19.0.0/dbhome_1/root.shTip: 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.
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 -silentImportant: 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
lsnrctl startStep 2: Run DBCA
Interactive Mode (GUI):
dbcaSilent Mode:
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 \
-ignorePreReqsNote: Replace
SysPassword1andPdbPassword1with secure passwords of your choice. The-totalMemory 2000parameter 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:
cdb1:/u01/app/oracle/product/19.0.0/dbhome_1:YPurpose: The
Yflag enables automatic startup of the database when the server boots, using thedbstartutility.
The Complete Installation Flow
┌─────────────────────────────────────────────────────────────────┐
│ 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
| File | Purpose |
|---|---|
/etc/hosts | Hostname resolution |
/etc/hostname | Server hostname |
/etc/sysctl.conf | Kernel parameters |
/etc/security/limits.d/oracle-database-preinstall-19c.conf | User limits |
/etc/selinux/config | SELinux mode |
/home/oracle/scripts/setEnv.sh | Oracle environment variables |
/home/oracle/.bash_profile | Shell profile |
/etc/oratab | Database startup configuration |
Best Practices
| Practice | Description |
|---|---|
| Use Certified Combinations | For production, use certified OS and database versions |
| Use Separate Mount Points | Mount /u01, /u02, etc. on separate disks |
| Configure the Firewall | Instead of disabling, configure ports (1521, etc.) |
| Set Secure Passwords | Use strong passwords for SYS, SYSTEM, and PDB admin |
| Patch Before Creating DB | Apply the latest patches before creating the database |
| Use Silent Mode for Automation | Silent installs are ideal for scripting and automation |
| Read Patch Notes | Always read patch notes before applying patches |
| Test the Installation | Verify connectivity and basic operations after installation |
| Document Configuration | Keep a record of all parameters and settings |
Troubleshooting Common Issues
| Issue | Possible Cause | Solution |
|---|---|---|
| Prerequisite check fails | Missing packages | Install required packages via dnf |
| Installer won't start | DISPLAY not set | Set the DISPLAY variable or use silent mode |
| OS version not supported | Oracle Linux 10 not certified | Use CV_ASSUME_DISTID=OL8 |
| Root script fails | Wrong permissions | Run as root and verify paths |
| DBCA fails | Listener not running | Start the listener with lsnrctl start |
| Database won't start | Wrong ORACLE_HOME | Verify environment variables |
| Memory errors | Insufficient memory | Increase server memory or reduce SGA |
| Firewall blocks connections | Firewall enabled | Configure or disable the firewall |
| Patch application fails | Wrong OPatch version | Update OPatch to the latest version |
Summary
Installing Oracle Database 19c on Oracle Linux 10 involves the following key phases:
Download Software: Obtain the installation media and required patches
Hosts File: Configure the server's hostname
Prerequisites: Install required packages, kernel parameters, and user limits
Additional Setup: Set passwords, SELinux, firewall, directories, and scripts
Installation: Run the Oracle Universal Installer (OUI) with
CV_ASSUME_DISTID=OL8Patch Installation: Apply the required patches (19.19 or later)
Database Creation: Use DBCA to create a container database with a PDB
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=OL8to work around thisDo 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/oratabfile 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