Monthly Archives: October 2026

Building an Oracle 26ai Database Server from Scratch #JoelKallmanDay

In 2014, while teaching Oracle Database Administration courses at Austin Community College, I wrote a series of blog posts on how to create an Oracle Database server: Oracle Database 12c on Oracle Linux 6, so my students could build their own practice database servers.

Now, as the Director of Consulting Services in the Oracle Technologies division of Talan, I was recognized as an Oracle ACE. Part of the ACE program is promoting Oracle at Conferences (I presented two sessions at ODTUG’s Kscope26 conference in Colorado this year) and doing things like blogging. Blogging helps me maintain my ACE status (although I’ll have more than enough points from presenting at conferences this year).

Since I’ve been a bit sporadic about blogging lately, I thought I’d get back into the swing of things by putting out my complete step-by-step instructions for building an Oracle Database server on your own machine. Note that these days, you no longer really have to do this. You can simply go to Oracle Cloud and obtain a pre-configured database server. If you just need “the database” and don’t want to do anything at the operating system level, then an Oracle Autonomous Database is for you. However, there are several limitations associated with an Autonomous Database (which is essentially a pluggable database within a database maintained by Oracle for you) that are completely removed if you opt for an Oracle Base Database instead. With an Oracle Base Database, you get direct access to the operating system, and you could, for example, potentially attempt to do all of the examples within Tom & Darl’s incredibly awesome book Expert Oracle Database Architecture. (One of my presentations at Kscope this year was basically “Read this book, do all the examples while understanding what’s happening, and you’ll be a much better Oracle Database developer.”) That said, messing around with an Oracle Base Database on Oracle Cloud could possibly get you into a state where the automated patching tools and other things that Oracle does for you might not work. If you are just playing around, you could always blow away the database and create a new one if you mess it up too much.

However, if you would like to build a practice database server from scratch on your own machine, and along the way, learn much more about how an Oracle Database server is built, then this series of blog posts is for you.

A note about my philosophy when it comes to Oracle Database servers and the rules I like to follow.

  1. Ease of understanding, especially during a crisis, is important
  2. Less configuration is, almost certainly, better configuration
  3. The more you understand how, and why, and where the Oracle database does its things, the better you can respond in an emergency situation

As an example, when I make my post about the systemd services that I create for Oracle backups, you’ll notice that the entirety of the RMAN backup configuration is entirely within the system command. This means that if there are changes to be made, I go to the one place where my backup is configured and just address changes there. The ‘traditional’ approach of a cron job (1) that calls a script (2) that calls RMAN (3) with another file for the RMAN commands (4) spreads “How are backups done?” all across your OS in different files in different directories.

As I get time, I’ll be adding posts for each of the items below (almost certainly in order as I do these steps on my own new Talan laptop) and linking them from here.

Building an Oracle 26ai Database Server

  1. Install Oracle VirtualBox & VirtualBox Extension Pack
  2. Download Oracle Linux ISO
  3. Create Linux Virtual Machine
  4. Log in as root & Improve Quality of Life
  5. Disable selinux
  6. Disable firewalld
  7. Update /etc/hosts
  8. Install Guest Additions Into Virtual Machine
  9. Install Oracle Linux 9 EPEL & Oracle Software Repos
  10. Install rlwrap
  11. Install Oracle Database Preinstall RPM
  12. Install Oracle JDK
  13. Install Nginx (optional)
  14. Set oracle OS user password
  15. Create Oracle directories
  16. Initial Oracle login and quality of life improvements
  17. Install autoupgrade
  18. Create autoupgrade download keystore
  19. Download Oracle Database with autoupgrade
  20. Download Oracle APEX with patch (if available)
  21. Download ORDS
  22. Create Oracle software home with autoupgrade
  23. Configure read only home (poorly named)
  24. Create Oracle container database with pluggable
  25. Create listener
  26. Install ORDS
  27. Install & Patch Oracle APEX
  28. Set APEX internal workspace password
  29. Enable APEX network services
  30. Create and enable an APEX resource manager plan
  31. Turn on database flashback
  32. Create systemd services for database and ORDS
  33. Create systemd backup service
  34. Configure APEX static images (CDN or local)
  35. Install mkcert for signed certificates
  36. Configure Nginx
  37. Disable annoying password stuff in APEX

A note about the Joel Kallman Day tag on this post:

Joel was a really nice person who dedicated his life to being a good and kind person. He did so much for the Oracle APEX community and for his family. Those of us who knew him still really miss him.

My last correspondence with Joel was this:

                Got a few minutes to chat? Trying to help a CIO find a good APEX hire? - me
                          
Sorry, on medical leave. - Joel

                No problem at all. Sorry, I didn't know. Here's to a speedy recovery! - me                          

That speedy recovery never came, and the world is at a loss because of it.