Workstation Build Out

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>.local
x.x.x.x <server2> <server2>.local
x.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 firewalld
systemctl 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 clean
dnf makecache
dnf 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_1
mkdir -p /u01/app/oraInventory
mkdir -p /u02/oradata
mkdir -p /u03/fra

Set permissions:

chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app

Oracle Environment Variables

Setup the profile for the Oracle user:

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export 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/app
chmod -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…

Leave a comment