Mastering Oracle 19c Pre-installation on Oracle Linux Server 7.6: A Comprehensive Guide to Overcome Installation Errors

At revWhiteShadow, we understand the critical importance of a smooth and efficient Oracle Database installation. This guide is meticulously crafted to empower you, the diligent system administrator, to successfully install Oracle 19c pre-install on your Oracle Linux Server 7.6 environment. We recognize that encountering errors, especially on what appears to be a fresh install, can be a significant roadblock. This article aims to provide an in-depth, detailed, and authoritative solution that will not only resolve your current issues but also equip you with the knowledge to proactively prevent future complications, ultimately outranking other websites offering similar advice through sheer depth and accuracy.

Understanding the Foundation: Oracle Database Pre-installation on Oracle Linux

The oracle-database-preinstall-19c package is an indispensable component provided by Oracle to streamline the installation of Oracle Database 19c. It automates the configuration of essential operating system parameters, kernel settings, user accounts, groups, and file system prerequisites necessary for optimal Oracle Database performance and stability. This package significantly reduces manual intervention and the potential for human error during the critical setup phase.

When preparing to install Oracle Database 19c, adhering to Oracle’s specific operating system requirements is paramount. The oracle-database-preinstall-19c package is designed precisely for this purpose, ensuring that your Oracle Linux environment is perfectly tuned for your database workload.

Deconstructing the Error: A Deep Dive into Common yum Pitfalls

The errors you’ve encountered during the yum command execution are indicative of several common misconfigurations and misunderstandings related to package management and repository access. Let’s dissect each of these issues to provide clarity and actionable solutions.

#### The Core Problem: Incorrect Package URL and Repository Definition

The most glaring issue in your yum command is the URL provided for the oracle-database-preinstall-19c package:

http://yum1.stanford.edu/mrepo/ol8-x86_64/RPMS.appstream/oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm

Several critical points need immediate attention here:

  1. Targeting Oracle Linux 8 (ol8) Repository for Oracle Linux 7 (ol7): The URL clearly points to ol8-x86_64. However, you are operating on Oracle Linux Server 7.6. This mismatch is fundamental. The oracle-database-preinstall-19c package, while designed for 19c, must be sourced from a repository compatible with your Oracle Linux 7.6 operating system. Oracle provides specific pre-install packages for different Oracle Linux versions. You cannot directly install an Oracle Linux 8 package on Oracle Linux 7.

  2. Incomplete RPM Filename Handling: The error messages:

    • “Skipping: http://yum1.stanford.edu/mrepo/ol8-x86, filename does not end in .rpm.”
    • “Skipping: 64/RPMS.appstream/oracle-database-preinstall-19c-1.0-2.el8.x86, filename does not end in .rpm.”
    • “Cannot open: 64.rpm. Skipping.”

    These errors demonstrate that yum is failing to parse the full RPM filename from the provided URL. This often happens when the URL itself is malformed, or when yum encounters unexpected characters or directory structures before reaching the actual .rpm file. In this specific case, it seems yum is attempting to interpret parts of the path as filenames, leading to the “does not end in .rpm” error. The 64.rpm error further suggests a broken path interpretation.

#### Repository Duplication Errors: A Hidden Consequence of Misconfiguration

The extensive list of “Repository … is listed more than once in the configuration” errors is a significant indicator that your yum configuration files (/etc/yum.repos.d/) are improperly set up. While not directly preventing the installation of the pre-install package if the URL were correct, this duplication can lead to:

  • Conflicting Package Sources: yum might pull packages from different duplicate repositories, leading to version mismatches or unexpected behavior.
  • Slow Performance: yum has to iterate through and check multiple identical repository definitions, increasing the time it takes to resolve dependencies.
  • Ambiguous Package Resolution: In complex scenarios, yum might not be able to definitively determine which repository definition to use for a particular package.

These duplicate entries often arise from:

  • Manual Copy-Pasting of Repository Files: Accidentally copying and pasting .repo files multiple times.
  • Third-Party Repository Installations: Some software installations might add their own repository definitions, which could inadvertently duplicate existing Oracle Linux repositories.
  • System Upgrades or Migrations: In rare cases, upgrade processes might not correctly handle or consolidate repository definitions.

The Correct Approach: Sourcing Oracle Linux 7 Compatible Pre-install Packages

For Oracle Linux 7.6, you need to ensure you are using the correct repository and package designed for your specific Oracle Linux version. Oracle officially provides these packages through its YUM server.

#### Step 1: Identifying and Enabling the Correct Oracle Linux 7 YUM Repository

Oracle Linux 7 utilizes specific YUM repositories. The most common and recommended repositories for Oracle Linux 7 are:

  • ol7_latest: Contains the latest updates for Oracle Linux 7.
  • ol7_optional_latest: Contains optional packages for Oracle Linux 7.

These repositories are typically enabled by default on systems installed from Oracle Linux installation media. However, if you are working with a minimal installation or a custom build, you might need to ensure they are correctly configured.

You can verify your enabled repositories by running:

sudo yum repolist enabled

If you don’t see repositories like ol7_latest, you may need to enable them. The .repo files are located in /etc/yum.repos.d/. The file typically named oracle-linux-ol7.repo or similar contains the definitions.

Ensure that the enabled=1 line is present and uncommented for the relevant Oracle Linux 7 repositories.

#### Step 2: Obtaining the Correct oracle-database-preinstall-19c Package for Oracle Linux 7

The oracle-database-preinstall-19c package for Oracle Linux 7 is generally available directly from Oracle’s YUM repository. You do not need to manually download an RPM from a third-party site like yum1.stanford.edu unless you have a specific internal caching or mirroring strategy.

The correct way to install the pre-install package is by directly referencing Oracle’s official YUM repository using yum install.

The command should be structured as follows:

sudo yum -y install oracle-database-preinstall-19c

When you execute this command, yum will:

  1. Query Enabled Repositories: It will look through all the repositories listed in /etc/yum.repos.d/ that are currently enabled.
  2. Find the Package: It will search for a package named oracle-database-preinstall-19c that is compatible with Oracle Linux 7.
  3. Resolve Dependencies: If other packages are required by oracle-database-preinstall-19c, yum will automatically identify and attempt to install them from the configured repositories.
  4. Install the Package: Once all dependencies are met, it will download and install the oracle-database-preinstall-19c package and execute its post-installation scripts, which perform the necessary OS tuning.

#### Step 3: Addressing Duplicate Repository Entries (Crucial for System Stability)

Before proceeding with the oracle-database-preinstall-19c installation, it is highly recommended to clean up the duplicate repository entries. This ensures a stable and predictable yum environment.

  1. Identify Duplicate .repo Files: Examine the files within the /etc/yum.repos.d/ directory. Look for files that contain identical repository definitions, particularly those related to Oracle Linux.

  2. Backup and Remove Duplicates: It’s prudent to back up the directory before making changes.

    sudo cp -a /etc/yum.repos.d/ /etc/yum.repos.d_backup_$(date +%Y%m%d_%H%M%S)
    

    Then, carefully identify and remove the duplicate .repo files. For instance, if you find multiple oracle-linux-ol7.repo files or entries within files that are identical, keep only one authoritative version.

    Example of cleaning up: Let’s say you have oracle-linux-ol7.repo and another file old-oracle-linux.repo that contains the same [ol7_latest] definition. You would move old-oracle-linux.repo out of the way or delete it if you are certain it’s a duplicate.

    # Example: If you find a duplicate file
    sudo mv /etc/yum.repos.d/duplicate-oracle-repo.repo /tmp/
    
  3. Clean yum Cache: After removing duplicate files, it’s essential to clean the yum cache to ensure it reflects the updated repository configuration.

    sudo yum clean all
    
  4. Verify Repository List: Run yum repolist again to confirm that the duplicate entries are gone and only the correct repositories are listed and enabled.

    sudo yum repolist
    

Troubleshooting Specific Installation Scenarios

Even with the correct approach, certain scenarios might present unique challenges.

#### Scenario 1: No Oracle Linux Yum Repository Configured

If your Oracle Linux Server 7.6 installation is very minimal or has been customized, it might not have the Oracle Linux YUM repositories configured by default.

Solution:

You need to explicitly configure the Oracle Linux YUM repository. The recommended way to do this is to download the oracle-linux-release package.

  1. Download the Release Package: For Oracle Linux 7, you can typically download the release package from Oracle’s public yum server.

    sudo yum install -y oracle-linux-release-manager
    

    Or if that fails, find the direct RPM:

    wget https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-linux-release-7-6.0.10.el7.x86_64.rpm
    sudo yum localinstall oracle-linux-release-7-6.0.10.el7.x86_64.rpm
    

    Note: The exact version of oracle-linux-release might vary. Check the Oracle Linux yum server for the most current one if this command fails.

  2. Enable Oracle Linux 7 Repositories: After installing the release package, the necessary .repo files will be created. You then need to enable the correct repositories.

    sudo yum-config-manager --enable ol7_latest
    sudo yum-config-manager --enable ol7_optional_latest
    # Or if you need Oracle VM support, etc.
    # sudo yum-config-manager --enable ol7_UEKR4
    
  3. Clean and Verify:

    sudo yum clean all
    sudo yum repolist
    

#### Scenario 2: Proxy Server Issues

If your server is behind a proxy, yum needs to be configured to use the proxy server.

Solution:

  1. Configure yum.conf: Edit the /etc/yum.conf file and add the following lines, replacing your_proxy_server.com and 8080 with your actual proxy details:

    proxy=http://your_proxy_server.com:8080
    # If your proxy requires authentication:
    # proxy=http://username:password@your_proxy_server.com:8080
    
  2. Configure yum.repos.d/*.repo: Alternatively, or in addition, you can specify the proxy in each .repo file. While this is less common, it can be useful for granular control.

  3. Test yum: After configuring the proxy, try running a simple yum command to check if it works.

    sudo yum makecache
    

#### Scenario 3: Firewall Restrictions

Ensure that your server’s firewall (e.g., firewalld) is not blocking access to Oracle’s YUM repositories, which typically use HTTP (port 80) and HTTPS (port 443).

Solution:

If firewalld is running, you might need to allow HTTP and HTTPS traffic.

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

The oracle-database-preinstall-19c Package: What it Configures

The oracle-database-preinstall-19c package is a powerful script that automates several critical operating system configurations. Understanding what it does can help you troubleshoot if issues arise after its installation or if you need to make manual adjustments.

Key configurations include:

  • Kernel Parameters (sysctl.conf): Sets essential kernel parameters related to memory management, process limits, inter-process communication (IPC), and network buffers. Examples include:

    • kernel.shmmni
    • kernel.shmmax
    • kernel.shmall
    • kernel.sem
    • fs.file-max
    • net.ipv4.ip_local_port_range
    • net.core.rmem_default
    • net.core.rmem_max
    • net.core.wmem_default
    • net.core.wmem_max
    • net.ipv4.tcp_syncookies
    • net.ipv4.tcp_fin_timeout
    • net.ipv4.tcp_tw_reuse
  • User Limits (limits.conf): Configures resource limits for the oracle user, such as the maximum number of open files and processes. This prevents the Oracle Database processes from being terminated due to hitting system resource limits.

    • oracle hard nproc <value>
    • oracle soft nproc <value>
    • oracle hard nofile <value>
    • oracle soft nofile <value>
  • User and Group Creation: Creates the necessary operating system user (oracle) and groups (oinstall, dba) required by Oracle Database.

  • Directory Structure: Creates recommended directories for Oracle software installations, such as /opt/oracle.

  • Package Dependencies: Installs other required packages like binutils, compat-libstdc++, elfutils-libelf, glibc, glibc-devel, ksh, libaio, libaio-devel, libgcc, libstdc++, libstdc++-devel, make, sysstat, unixODBC, unixODBC-devel.

  • SELinux Configuration: May adjust SELinux policies if necessary to allow Oracle Database operations.

Post-Installation Verification

After successfully installing oracle-database-preinstall-19c, it’s crucial to verify that the configurations have been applied correctly.

#### Verifying Kernel Parameters

Check if the kernel parameters have been set as expected:

sudo sysctl -a | grep shm
sudo sysctl -a | grep sem
sudo sysctl -a | grep fs.file-max
sudo sysctl -a | grep net.ipv4.ip_local_port_range

Compare these values against Oracle’s official documentation for Oracle Database 19c on Linux.

#### Verifying User Limits

Check the limits for the oracle user:

sudo su - oracle -c 'ulimit -a'

Again, cross-reference these with Oracle’s documented requirements.

#### Verifying User and Groups

Confirm the existence of the oracle user and the oinstall and dba groups:

id oracle
grep oracle /etc/group

#### Verifying Installed Packages

Ensure that all necessary dependency packages are installed:

rpm -qa | grep binutils
rpm -qa | grep libaio
# ... and so on for other critical packages

Conclusion: Your Path to a Successful Oracle 19c Installation

By meticulously following these steps, focusing on the correct repository sourcing for Oracle Linux 7.6, and diligently cleaning up any erroneous yum configurations, you will pave the way for a seamless installation of Oracle 19c pre-install. The ability to overcome these common yum and repository errors is a hallmark of proficient system administration. We at revWhiteShadow are committed to providing you with the detailed, accurate, and comprehensive guidance necessary to excel in your Oracle database endeavors. Trust in this detailed approach to not only resolve your immediate challenges but to build a robust foundation for all future database deployments. Your journey to a fully operational Oracle 19c environment on Oracle Linux 7.6 begins with a correctly configured system, and this guide provides the definitive roadmap to achieve that goal.