Day 3: Hacking Oracle 19c RPM Installations
December 10, 2020
Oracle provides the preinstallation RPM for Oracle Database version 11g and later, making the configuration and installation of Linux environments faster and easier. They eliminate many of the tasks database and systems administrators perform to provision a new database host—creating users and groups, installing packages and dependencies, setting resource limits, and adjusting kernel parameters to satisfy database requirements—and assure organizations that their database environments are consistently (and properly!) built according to Oracle's recommendations.
Oracle introduced RPM-based installation of Oracle Database software with version 18c. In addition to creating and populating the Oracle Home, the RPM adds database creation through a service configuration script. The configuration calls the Database Configuration Assistant in the background and simplifies database creation. The entire process is performed by root and doesn't require interacting with DBCA, either through its GUI or via a response file.
This reduces the effort for users that want a database quickly. You needn't worry about how or what to run, because it's done for you. It also has implications if you work with configuration management, deployment, and automation tools like Ansible, Chef, Docker, Puppet, or Terraform. Configuring prerequisites, installing software, and creating a database are reduced to three simple steps. This makes Oracle database installation more consistent with what you may find from other databases.
The ease and convenience of the Oracle RPM installation does come with some limitations:
Databases built from RPM are installed with predetermined directory structures
There is no option to create database storage under ASM
The installation creates single-instance databases only
The only packages available publicly are for Oracle Database 19.3.0 Enterprise Edition and Oracle Database 18.4.0 Express Edition. There is no offering for Standard Edition, and references in documentation that once suggested Standard Edition would eventually be available have been removed.
The process for creating databases with custom parameter and configuration settings is not very obvious.
These limits may lead you to conclude that package-based Oracle installations are only useful for quick and dirty database creation, and not for operational workflows or 'real' environments. The good news is RPM-based installations can be modified and extended to address these limitations without too much effort, while remaining automation-friendly! For example, Viscosity uses RPM-based installations for building Docker images and enjoy the same flexibility and options found in 'normal' installations from archive.
Introduction to RPM
An RPM is a bundled set of files and instructions to install and configure software on Linux systems. RPM originally stood for Red Hat Package Manager, but is now ubiquitous across many Linux flavors. RPM can be applied via the rpm command, but you may be more familiar working with them through the yum package manager.
Installing software with a package manager has advantages – including simplicity, automation, and consistency.
Applying an RPM is a single command and eliminates most, if not all, human interaction…