Vagrant OEL 8 DevOps · Oracle · Database Labs

VagrantOracle Database 19c on OEL 8

Complete Vagrant setup for Oracle Database 19c on OEL 8. Prerequisites via oracle-database-preinstall-19c, silent software install, DBCA database creation.

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.
ResourceMinimumRecommended for Lab
RAM2 GB8 GB
Disk20 GB50 GB
CPU1 core2–4 cores
Swap1.5x RAM8 GB
OEL versionOEL 7+OEL 8
oracle19c-lab/ ├── Vagrantfile ├── LINUX.X64_193000_db_home.zip — download from Oracle └── scripts/ ├── 01_prereqs.sh ├── 02_install_oracle.sh └── 03_create_database.sh
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
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 ==="
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 ==="
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"
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