I’ve been test‑driving my new data analytics skills on a repurposed Lenovo H430 running RHEL 9.7 and Oracle 19c. As you can imagine, I’ve pushed this poor old machine to its limits more than once while working with large datasets, data‑warehousing workloads, and Python pipelines. It was clearly time for an upgrade, so I picked up a refurbished HP Z4 G4, a real workstation built for this kind of work.
Standing up a reliable Oracle environment isn’t just about installing a database, it’s about building a clean, predictable foundation that won’t collapse the moment you start loading real workloads. This guide walks through the full setup of a workstation‑class server running RHEL 8.10, configured for Oracle Database 19c. All real hostnames and usernames have been replaced with placeholders like <server> and <username>.
Hardware Overview
The build starts with a workstation‑grade machine capable of handling database workloads without breaking a sweat:
- Model: HP Z4 G4 Workstation
- CPU: Intel Xeon
- Memory: 64 GB
- Storage:
- 500 GB NVMe (OS + Oracle Home)
- 2 TB SATA/ATA (Data + FRA)
This layout gives Oracle plenty of room to breathe while keeping the OS and binaries on fast NVMe storage.
Filesystem Layout for Oracle
A clean directory structure is essential for long‑term maintainability. The following mount points were created:
/u01 — Oracle Home
- 50–100 GB
- xfs
/u02 — Oracle Datafiles
- Majority of remaining storage
- xfs
/u03 — Fast Recovery Area (FRA)
- 100–200 GB
- xfs
This separation keeps binaries, datafiles, and recovery assets isolated — exactly how Oracle prefers it.
User Setup and SSH Access
Add the Oracle user to the wheel group
usermod -aG wheel <username>
Enable key‑based SSH login
ssh-keygen -t ed25519 -C "<username>@<server>"ssh-copy-id <username>@<server>
This eliminates password prompts and makes remote administration painless.
Hostname Configuration
Example /etc/hosts entries:
x.x.x.x <server> <server>.localx.x.x.x <server2> <server2>.localx.x.x.x <server3> <server3>.local
Use whatever naming convention fits your environment and the appropriate IP addresses.
SELinux and Firewall Adjustments
For lab and development environments, SELinux and firewalld are often disabled to avoid unnecessary friction.
Check SELinux status
getenforce
Disable SELinux permanently
Edit /etc/selinux/config:
SELINUX=disabled
Disable firewalld
systemctl stop firewalldsystemctl disable firewalld
This is a sandbox environment for research, a production level environments would require a more stringent approach.
Working With LVM
Logical volumes make resizing and reorganizing storage much easier.
Check volume groups:
vgs
Inspect a specific group:
vgdisplay vg_oracle
Extend a logical volume to full size:
lvextend -l +100%FREE /dev/vg_oracle/data
Updating the System and Enabling Repos
Enable the required RHEL repositories:
subscription-manager repos \ --enable=rhel-8-for-x86_64-baseos-rpms \ --enable=rhel-8-for-x86_64-appstream-rpms \ --enable=codeready-builder-for-rhel-8-x86_64-rpms
Update the system:
dnf make cleandnf makecachednf update -y
Installing Required Libraries
Oracle needs a long list of system libraries and X11 components:
dnf install -y \ unzip tar bc binutils gcc gcc-c++ make libaio libaio-devel ksh sysstat glibc-devel \ libnsl libnsl2 libnsl2-devel xorg-x11-xauth xorg-x11-utils xorg-x11-apps \ libXrender libX11 libXau libXi libXtst libXext
Additional helpful tools:
dnf install -y screen rlwrap
Preparing Oracle Directories
As root:
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1mkdir -p /u01/app/oraInventorymkdir -p /u02/oradatamkdir -p /u03/fra
Set permissions:
chown -R oracle:oinstall /u01/appchmod -R 775 /u01/app
Oracle Environment Variables
Setup the profile for the Oracle user:
export ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1export ORACLE_SID=orclexport PATH=$ORACLE_HOME/bin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/libexport NLS_LANG=American_America.AL32UTF8
Installing Oracle Software
Unzip the installation media:
unzip V982063-01.zip -d /u01/app/oracle/product/19.0.0/dbhome_1
Fix permissions:
chown -R oracle:oinstall /u01/appchmod -R 775 /u01/app
Attach the Oracle Home:
$ORACLE_HOME/oui/bin/runInstaller -silent -attachHome \ ORACLE_HOME="$ORACLE_HOME" \ ORACLE_HOME_NAME="OraDB19Home1"
Database Creation
I’m not a fan of sitting around entering information into a screen, its much more productive to create a response file, kick off the install, and go do something fun!
Create the database using DBCA:
dbca -silent -createDatabase -responseFile dwarehouse_db.rsp
This process results in a clean, warehouse‑ready Oracle environment with minimal manual intervention.
While the steps outlined here provide a solid framework, there’s a substantial amount of nuance and behind‑the‑scenes work involved in building a system like this. This guide is intentionally concise and assumes that anyone following along has the technical background to adapt the workflow, fill in the gaps, and tailor the setup to their own infrastructure.
Time to dig into some data…