Oracle Database 19c on OEL 8 — Vagrant Setup
Oracle Database 19c is the Long Term Support (LTS) release of Oracle Database and runs natively on Oracle Enterprise Linux 8. This page provides a complete Vagrant setup that automates OEL 8 prerequisite configuration, Oracle software installation, and database creation using DBCA in silent mode.
⚠ Warning: Oracle Database requires a licence. Download the Oracle 19c software from edelivery.oracle.com or oracle.com/downloads before starting. The installer binary (LINUX.X64_193000_db_home.zip) must be placed in your project directory.
System Requirements
| Resource | Minimum | Recommended for Lab |
|---|---|---|
| RAM | 2 GB | 8 GB |
| Disk | 20 GB | 50 GB |
| CPU | 1 core | 2–4 cores |
| Swap | 1.5x RAM | 8 GB |
| OEL version | OEL 7+ | OEL 8 |
Project Structure
Vagrantfile
Ruby — Vagrantfile
# -*- mode: ruby -*-
Vagrant.configure("2") do |config|
config.vm.box = "generic/oracle8"
config.vm.hostname = "oracle19c"
config.vm.network "private_network", ip: "192.168.56.30"
config.vm.network "forwarded_port", guest: 1521, host: 11521 # Listener
config.vm.network "forwarded_port", guest: 5500, host: 15500 # EM Express
# Share Oracle installer from host
config.vm.synced_folder ".", "/vagrant"
config.vm.provider "virtualbox" do |vb|
vb.name = "Oracle19c-OEL8"
vb.memory = 8192
vb.cpus = 2
vb.customize ["modifyvm", :id, "--ioapic", "on"]
end
config.vm.provider "parallels" do |prl|
prl.name = "Oracle19c-OEL8"
prl.memory = 8192
prl.cpus = 2
prl.update_guest_tools = false
end
config.vm.provision "shell", path: "scripts/01_prereqs.sh"
config.vm.provision "shell", path: "scripts/02_install_oracle.sh"
config.vm.provision "shell", path: "scripts/03_create_database.sh"
end
01_prereqs.sh — OEL 8 Prerequisites
BASH — 01_prereqs.sh
#!/bin/bash
# scripts/01_prereqs.sh — Oracle 19c prerequisites on OEL 8
set -e
echo "=== Installing Oracle 19c Prerequisites on OEL 8 ==="
# Install oracle-database-preinstall-19c — handles all kernel params and packages
dnf install -y oracle-database-preinstall-19c
# Additional packages
dnf install -y unzip libaio bc
# Set oracle user password
echo "oracle" | passwd --stdin oracle
# Create Oracle directories
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
mkdir -p /u01/app/oraInventory
chown -R oracle:oinstall /u01
chmod -R 775 /u01
# Set environment variables for oracle user
cat >> /home/oracle/.bash_profile << EOF
# Oracle Environment
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export ORACLE_SID=ORCL
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
# Configure swap (required by Oracle)
dd if=/dev/zero of=/swapfile bs=1M count=8192
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile none swap sw 0 0" >> /etc/fstab
# Disable firewall for lab
systemctl disable --now firewalld
# Disable SELinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
echo "=== Prerequisites Complete ==="
02_install_oracle.sh — Install Oracle Software
BASH — 02_install_oracle.sh
#!/bin/bash
# scripts/02_install_oracle.sh — Install Oracle 19c software (runInstaller)
set -e
ORACLE_HOME="/u01/app/oracle/product/19.3.0/dbhome_1"
ORACLE_BASE="/u01/app/oracle"
ZIP_FILE="/vagrant/LINUX.X64_193000_db_home.zip"
echo "=== Installing Oracle 19c Software ==="
if [ ! -f "$ZIP_FILE" ]; then
echo "ERROR: Oracle installer zip not found at $ZIP_FILE"
echo "Download LINUX.X64_193000_db_home.zip from oracle.com and place in project dir"
exit 1
fi
# Extract installer to ORACLE_HOME
su - oracle -c "unzip -q $ZIP_FILE -d $ORACLE_HOME"
# Create response file for silent install
cat > /tmp/oracle_install.rsp << EOF
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=${ORACLE_HOME}
ORACLE_BASE=${ORACLE_BASE}
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=racdba
oracle.install.db.isRACOneInstall=false
oracle.install.db.rac.serverpool.prefix=
oracle.install.db.config.starterdb.type=
oracle.install.db.config.starterdb.globalDBName=
oracle.install.db.config.starterdb.SID=
oracle.install.db.ConfigureAsContainerDB=false
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
EOF
# Run silent installer as oracle user
su - oracle -c "${ORACLE_HOME}/runInstaller -silent -responseFile /tmp/oracle_install.rsp -ignorePrereqFailure"
# Run root scripts
/u01/app/oraInventory/orainstRoot.sh
${ORACLE_HOME}/root.sh
echo "=== Oracle 19c Software Installed ==="
03_create_database.sh — Create Database
BASH — 03_create_database.sh
#!/bin/bash
# scripts/03_create_database.sh — Create Oracle 19c database using DBCA
set -e
ORACLE_HOME="/u01/app/oracle/product/19.3.0/dbhome_1"
ORACLE_SID="ORCL"
DB_PASSWORD="Oracle@123"
echo "=== Creating Oracle Database: ${ORACLE_SID} ==="
# Create database using DBCA silent mode
su - oracle -c "
export ORACLE_HOME=${ORACLE_HOME}
export ORACLE_SID=${ORACLE_SID}
export PATH=\$ORACLE_HOME/bin:\$PATH
dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname ${ORACLE_SID} -sid ${ORACLE_SID} -responseFile NO_VALUE -characterSet AL32UTF8 -sysPassword ${DB_PASSWORD} -systemPassword ${DB_PASSWORD} -createAsContainerDatabase false -numberOfPDBs 0 -databaseType MULTIPURPOSE -automaticMemoryManagement false -totalMemory 4096 -storageType FS -datafileDestination /u01/app/oracle/oradata -redoLogFileSize 50 -emConfiguration NONE -ignorePrereqs
"
# Start listener
su - oracle -c "
export ORACLE_HOME=${ORACLE_HOME}
export PATH=\$ORACLE_HOME/bin:\$PATH
lsnrctl start
"
# Configure auto-start
cat > /etc/oratab << EOF
${ORACLE_SID}:${ORACLE_HOME}:Y
EOF
# Create startup script
cat > /etc/rc.d/init.d/oracle << 'SCRIPT'
#!/bin/bash
su - oracle -c "
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export ORACLE_SID=ORCL
export PATH=\$ORACLE_HOME/bin:\$PATH
dbstart \$ORACLE_HOME
lsnrctl start
"
SCRIPT
chmod +x /etc/rc.d/init.d/oracle
echo "=== Oracle Database Created ==="
echo ""
echo "Connection details:"
echo " Host: 192.168.56.30 or 127.0.0.1:11521"
echo " SID: ORCL"
echo " SYS Pass: Oracle@123"
echo ""
echo " sqlplus sys/Oracle@123@//192.168.56.30:1521/ORCL as sysdba"
Connect and Verify
BASH — Connect and Verify
# Start the VM
vagrant up
# SSH in and connect as oracle
vagrant ssh
su - oracle
sqlplus sys/Oracle@123@//localhost:1521/ORCL as sysdba
# Inside SQL*Plus
SELECT instance_name, status FROM v$instance;
SELECT name, open_mode FROM v$database;
SELECT * FROM v$version WHERE rownum=1;
# From host machine (via port forward)
sqlplus sys/Oracle@123@//127.0.0.1:11521/ORCL as sysdba
💡 Note: First vagrant up takes 30–60 minutes for Oracle install and database creation. Take a snapshot immediately after: vagrant snapshot save oracle19c-clean