Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,498 changes: 300 additions & 1,198 deletions OracleDatabase/RAC/OracleRealApplicationClusters/README.md

Large diffs are not rendered by default.

1,194 changes: 1,194 additions & 0 deletions OracleDatabase/RAC/OracleRealApplicationClusters/README1.md

Large diffs are not rendered by default.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
b7c4c66f801f92d14faa0d791ccda721 19.3.0/LINUX.X64_193000_db_home.zip
1858bd0d281c60f4ddabd87b1c214a4f 19.3.0/LINUX.X64_193000_grid_home.zip
Original file line number Diff line number Diff line change
@@ -0,0 +1,258 @@
# LICENSE UPL 1.0
#
# Copyright (c) 2018,2025 Oracle and/or its affiliates.
#
# ORACLE CONTAINERFILES PROJECT
# --------------------------
# This is the Containerfile for Oracle Database 19c Release 3 Real Application Clusters
#
# REQUIRED FILES TO BUILD THIS IMAGE
# ----------------------------------
# (1) LINUX.X64_193000_grid_home.zip
# (2 LINUX.X64_193000_db_home.zip
# Download Oracle Grid 19c Release 3 Enterprise Edition for Linux x64
# Download Oracle Database 19c Release 3 Enterprise Edition for Linux x64
# from http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
#
# HOW TO BUILD THIS IMAGE
# -----------------------
# Run:
# $ docker build -t oracle/database:19c-rac .


ARG BASE_OL_IMAGE=oraclelinux:8
ARG SLIMMING=false
# Pull base image
# ---------------
# hadolint ignore=DL3006,DL3025
FROM $BASE_OL_IMAGE AS base
ARG SLIMMING=false
ARG VERSION
# Labels
# ------
LABEL "provider"="Oracle" \
"issues"="https://github.com/oracle/docker-images/issues" \
"volume.setup.location1"="/opt/scripts" \
"volume.startup.location1"="/opt/scripts/startup" \
"port.listener"="1521" \
"port.oemexpress"="5500"

# Argument to control removal of components not needed after db software installation
ARG INSTALL_FILE_1="LINUX.X64_193000_grid_home.zip"
ARG INSTALL_FILE_2="LINUX.X64_193000_db_home.zip"
ARG DB_EDITION="EE"
ARG USER="root"
ARG WORKDIR="/rac-work-dir"
ARG IGNORE_PREREQ=false

# Environment variables required for this build (do NOT change)
# -------------------------------------------------------------
# Linux Env Variable
# hadolint ignore=DL3044
ENV SETUP_LINUX_FILE="setupLinuxEnv.sh" \
INSTALL_DIR=/opt/scripts \
# Grid Env variables
GRID_INSTALL_RSP="gridsetup_19c.rsp" \
GRID_SW_INSTALL_RSP="grid_sw_install_19c.rsp" \
GRID_SETUP_FILE="setupGrid.sh" \
INITSH="initsh" \
WORKDIR=$WORKDIR \
FIXUP_PREQ_FILE="fixupPreq.sh" \
INSTALL_GRID_BINARIES_FILE="installGridBinaries.sh" \
INSTALL_GRID_PATCH="applyGridPatch.sh" \
INVENTORY=/u01/app/oraInventory \
INSTALL_FILE_1=$INSTALL_FILE_1 \
INSTALL_FILE_2=$INSTALL_FILE_2 \
DB_EDITION=$DB_EDITION \
ADDNODE_RSP="grid_addnode.rsp" \
SETUPSSH="setupSSH.expect" \
DOCKERORACLEINIT="dockeroracleinit" \
GRID_USER_HOME="/home/grid" \
ASM_DISCOVERY_DIR="/dev" \
# RAC DB Env Variables
DB_INSTALL_RSP="db_sw_install_19c.rsp" \
DBCA_RSP="dbca_19c.rsp" \
DB_SETUP_FILE="setupDB.sh" \
RUN_FILE="runOracle.sh" \
ENABLE_RAC_FILE="enableRAC.sh" \
INSTALL_DB_BINARIES_FILE="installDBBinaries.sh" \
GRID_HOME_CLEANUP="GridHomeCleanup.sh" \
ORACLE_HOME_CLEANUP="OracleHomeCleanup.sh" \
DB_USER="oracle" \
GRID_USER="grid" \
SLIMMING=$SLIMMING \
container="true" \
COMMON_SCRIPTS="/common_scripts" \
CHECK_SPACE_FILE="checkSpace.sh" \
RESET_FAILED_UNITS="resetFailedUnits.sh" \
SET_CRONTAB="setCrontab.sh" \
CRONTAB_ENTRY="crontabEntry" \
EXPECT="/usr/bin/expect" \
BIN="/usr/sbin" \
IGNORE_PREREQ=$IGNORE_PREREQ

#############################################
# -------------------------------------------
# Start new stage for Non-Slim Image
# -------------------------------------------
#############################################

FROM base AS rac-image-slim-false
ARG SLIMMING
ARG VERSION
# Environment variables required for this build (do NOT change)
# -------------------------------------------------------------
# Linux Env Variable
ENV GRID_BASE=/u01/app/grid \
GRID_HOME=/u01/app/19c/grid \
DB_BASE=/u01/app/oracle \
DB_HOME=/u01/app/oracle/product/19c/dbhome_1
# Use second ENV so that variable get substituted
# hadolint ignore=DL3044
ENV INSTALL_SCRIPTS=$INSTALL_DIR/install \
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
SCRIPT_DIR=$INSTALL_DIR/startup \
RAC_SCRIPTS_DIR="scripts" \
GRID_PATH=$GRID_HOME/bin:$GRID_HOME/OPatch/:$GRID_HOME/perl/bin:/usr/sbin:/bin:/sbin \
DB_PATH=$DB_HOME/bin:$DB_HOME/OPatch/:$DB_HOME/perl/bin:/usr/sbin:/bin:/sbin \
GRID_LD_LIBRARY_PATH=$GRID_HOME/lib:/usr/lib:/lib \
DB_LD_LIBRARY_PATH=$DB_HOME/lib:/usr/lib:/lib
ENV CV_ASSUME_DISTID=OEL7.8
# Copy binaries
# -------------
# COPY Binaries
COPY $VERSION/$SETUP_LINUX_FILE $VERSION/$GRID_SETUP_FILE $VERSION/$DB_SETUP_FILE $VERSION/$CHECK_SPACE_FILE $VERSION/$FIXUP_PREQ_FILE $INSTALL_SCRIPTS/

# Setup Scripts
COPY $VERSION/$RUN_FILE $VERSION/$ADDNODE_RSP $VERSION/$SETUPSSH $VERSION/$GRID_INSTALL_RSP $VERSION/$DBCA_RSP $VERSION/$INITSH $SCRIPT_DIR/

COPY $RAC_SCRIPTS_DIR $SCRIPT_DIR/scripts
# hadolint ignore=SC2086
RUN chmod 755 $INSTALL_SCRIPTS/*.sh && \
sync && \
$INSTALL_DIR/install/$CHECK_SPACE_FILE && \
$INSTALL_DIR/install/$SETUP_LINUX_FILE && \
$INSTALL_DIR/install/$GRID_SETUP_FILE && \
$INSTALL_DIR/install/$DB_SETUP_FILE && \
sync

#############################################
# -------------------------------------------
# Start new stage for slim image
# -------------------------------------------
#############################################
FROM base AS rac-image-slim-true
ARG SLIMMING
ARG VERSION
ENV CV_ASSUME_DISTID=OEL7.8

# Environment variables required for this build (do NOT change)
# -------------------------------------------------------------
# Linux Env Variable
ENV INSTALL_SCRIPTS=$INSTALL_DIR/install \
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
SCRIPT_DIR=$INSTALL_DIR/startup \
RAC_SCRIPTS_DIR="scripts"

# Copy binaries
# -------------
# COPY Binaries
COPY $VERSION/$SETUP_LINUX_FILE $VERSION/$GRID_SETUP_FILE $VERSION/$DB_SETUP_FILE $VERSION/$CHECK_SPACE_FILE $VERSION/$FIXUP_PREQ_FILE $INSTALL_SCRIPTS/

# Setup Scripts
COPY $VERSION/$RUN_FILE $VERSION/$SETUPSSH $VERSION/$INITSH $SCRIPT_DIR/

COPY $RAC_SCRIPTS_DIR $SCRIPT_DIR/scripts
# hadolint ignore=SC2086
RUN chmod 755 $INSTALL_SCRIPTS/*.sh && \
sync && \
$INSTALL_DIR/install/$CHECK_SPACE_FILE && \
$INSTALL_DIR/install/$SETUP_LINUX_FILE && \
$INSTALL_DIR/install/$GRID_SETUP_FILE && \
$INSTALL_DIR/install/$DB_SETUP_FILE && \
sync


#############################################
# -------------------------------------------
# Start new stage for installing the grid and DB
# -------------------------------------------
#############################################
# hadolint ignore=DL3006
FROM rac-image-slim-${SLIMMING} AS builder
ARG SLIMMING
# hadolint ignore=DL3006
ARG VERSION
COPY $VERSION/$INSTALL_GRID_BINARIES_FILE $VERSION/$GRID_SW_INSTALL_RSP $VERSION/$DB_SETUP_FILE $VERSION/$DB_INSTALL_RSP $VERSION/$INSTALL_DB_BINARIES_FILE $VERSION/$ENABLE_RAC_FILE $VERSION/$GRID_HOME_CLEANUP $VERSION/$ORACLE_HOME_CLEANUP $VERSION/$INSTALL_FILE_1* $VERSION/$INSTALL_FILE_2* $INSTALL_SCRIPTS/
# hadolint ignore=SC2086
RUN chmod 755 $INSTALL_SCRIPTS/*.sh

## Install software if SLIMMING is false
# hadolint ignore=SC2086
RUN if [ "${SLIMMING}x" != 'truex' ]; then \
sed -e '/hard *memlock/s/^/#/g' -i /etc/security/limits.d/oracle-database-preinstall-19c.conf && \
sed -e '/ *nofile /s/^/#/g' -i /etc/security/limits.d/oracle-database-preinstall-19c.conf && \
su $GRID_USER -c "$INSTALL_DIR/install/$INSTALL_GRID_BINARIES_FILE EE $PATCH_NUMBER" && \
$INVENTORY/orainstRoot.sh && \
$GRID_HOME/root.sh && \
su $DB_USER -c "$INSTALL_DIR/install/$INSTALL_DB_BINARIES_FILE EE" && \
su $DB_USER -c "$INSTALL_DIR/install/$ENABLE_RAC_FILE" && \
$INVENTORY/orainstRoot.sh && \
$DB_HOME/root.sh && \
su $GRID_USER -c "$INSTALL_SCRIPTS/$GRID_HOME_CLEANUP" && \
su $DB_USER -c "$INSTALL_SCRIPTS/$ORACLE_HOME_CLEANUP" && \
:; \
fi
# hadolint ignore=SC3014
RUN if [ "${SLIMMING}x" == 'truex' ]; then \
mkdir /u01 && \
:; \
fi
# hadolint ignore=SC2086
RUN rm -f $INSTALL_DIR/install/* && \
sync

#############################################
# -------------------------------------------
# Start new layer for grid & database runtime
# -------------------------------------------
#############################################
# hadolint ignore=DL3006
FROM rac-image-slim-${SLIMMING} AS final
# hadolint ignore=DL3006
COPY --from=builder /u01 /u01
# hadolint ignore=SC2086
RUN if [ "${SLIMMING}x" != 'truex' ]; then \
$INVENTORY/orainstRoot.sh && \
$GRID_HOME/root.sh && \
$DB_HOME/root.sh && \
chmod 666 $SCRIPT_DIR/*.rsp && \
:; \
fi && \
$INSTALL_DIR/install/$FIXUP_PREQ_FILE && \
sync && \
chmod 755 $SCRIPT_DIR/*.sh && \
chmod 755 $SCRIPT_DIR/scripts/*.py && \
chmod 755 $SCRIPT_DIR/scripts/cmdExec && \
chmod 755 $SCRIPT_DIR/scripts/*.expect && \
echo "nohup $SCRIPT_DIR/runOracle.sh &" >> /etc/rc.local && \
rm -f /etc/rc.d/init.d/oracle-database-preinstall-19c-firstboot && \
chmod +x /etc/rc.d/rc.local && \
cp $SCRIPT_DIR/$INITSH /usr/bin/$INITSH && \
setcap 'cap_net_admin,cap_net_raw+ep' /usr/bin/ping && \
chmod 755 /usr/bin/$INITSH && \
rm -f /etc/sysctl.d/99-oracle-database-preinstall-19c-sysctl.conf && \
rm -f /etc/sysctl.d/99-sysctl.conf && \
rm -f $INSTALL_DIR/install/* && \
sync

USER ${USER}
VOLUME ["/common_scripts"]
WORKDIR $WORKDIR

HEALTHCHECK --interval=2m --start-period=30m \
CMD "$SCRIPT_DIR/scripts/main.py --checkracinst=true" >/dev/null || exit 1

# Define default command to start Oracle Grid and RAC Database setup.
# hadolint ignore=DL3025
ENTRYPOINT /usr/bin/$INITSH
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#!/bin/bash
# LICENSE UPL 1.0
#
# Copyright (c) 2019,2025 Oracle and/or its affiliates.
#
# Since: January, 2019
# Author: [email protected]
# Description: Cleanup the $GRID_HOME and ORACLE_BASE after Grid confguration in the image
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#

# Image Cleanup Script
# shellcheck disable=SC1090
source /home/"${GRID_USER}"/.bashrc
# shellcheck disable=SC2034
ORACLE_HOME=${GRID_HOME}

rm -rf /u01/app/grid/*
rm -rf "$GRID_HOME"/log
rm -rf "$GRID_HOME"/logs
rm -rf "$GRID_HOME"/crs/init
rm -rf "$GRID_HOME"/crs/install/rhpdata
rm -rf "$GRID_HOME"/crs/log
rm -rf "$GRID_HOME"/racg/dump
rm -rf "$GRID_HOME"/srvm/log
rm -rf "$GRID_HOME"/cv/log
rm -rf "$GRID_HOME"/cdata
rm -rf "$GRID_HOME"/bin/core*
rm -rf "$GRID_HOME"/bin/diagsnap.pl
rm -rf "$GRID_HOME"/cfgtoollogs/*
rm -rf "$GRID_HOME"/network/admin/listener.ora
rm -rf "$GRID_HOME"/crf
rm -rf "$GRID_HOME"/ologgerd/init
rm -rf "$GRID_HOME"/osysmond/init
rm -rf "$GRID_HOME"/ohasd/init
rm -rf "$GRID_HOME"/ctss/init
rm -rf "$GRID_HOME"/dbs/.*.dat
rm -rf "$GRID_HOME"/oc4j/j2ee/home/log
rm -rf "$GRID_HOME"/inventory/Scripts/ext/bin/log
rm -rf "$GRID_HOME"/inventory/backup/*
rm -rf "$GRID_HOME"/mdns/init
rm -rf "$GRID_HOME"/gnsd/init
rm -rf "$GRID_HOME"/evm/init
rm -rf "$GRID_HOME"/gipc/init
rm -rf "$GRID_HOME"/gpnp/gpnp_bcp.*
rm -rf "$GRID_HOME"/gpnp/init
rm -rf "$GRID_HOME"/auth
rm -rf "$GRID_HOME"/tfa
rm -rf "$GRID_HOME"/suptools/tfa/release/diag
rm -rf "$GRID_HOME"/rdbms/audit/*
rm -rf "$GRID_HOME"/rdbms/log/*
rm -rf "$GRID_HOME"/network/log/*
rm -rf "$GRID_HOME"/inventory/Scripts/comps.xml.*
rm -rf "$GRID_HOME"/inventory/Scripts/oraclehomeproperties.xml.*
rm -rf "$GRID_HOME"/inventory/Scripts/oraInst.loc.*
rm -rf "$GRID_HOME"/inventory/Scripts/inventory.xml.*
rm -rf "$GRID_HOME"/log_file_client.log
rm -rf "$INVENTORY"/logs/*
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#!/bin/bash
# LICENSE UPL 1.0
#
# Copyright (c) 2019,2025 Oracle and/or its affiliates.
#
# Since: January, 2019
# Author: [email protected], [email protected]
# Description: Cleanup the $ORACLE_HOME and ORACLE_BASE after Grid confguration in the image
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#

# Image Cleanup Script
# shellcheck disable=SC1090
source /home/"${DB_USER}"/.bashrc
ORACLE_HOME=${DB_HOME}

rm -rf "$ORACLE_HOME"/bin/extjob
rm -rf "$ORACLE_HOME"/PAF
rm -rf "$ORACLE_HOME"/install/oratab
rm -rf "$ORACLE_HOME"/install/make.log
rm -rf "$ORACLE_HOME"/network/admin/listener.ora
rm -rf "$ORACLE_HOME"/network/admin/tnsnames.ora
rm -rf "$ORACLE_HOME"/bin/nmo
rm -rf "$ORACLE_HOME"/bin/nmb
rm -rf "$ORACLE_HOME"/bin/nmhs
rm -rf "$ORACLE_HOME"/log/.*
rm -rf "$ORACLE_HOME"/oc4j/j2ee/oc4j_applications/applications/em/em/images/chartCache/*
rm -rf "$ORACLE_HOME"/rdbms/audit/*
rm -rf "$ORACLE_HOME"/cfgtoollogs/*
rm -rf "$ORACLE_HOME"/inventory/Scripts/comps.xml.*
rm -rf "$ORACLE_HOME"/inventory/Scripts/oraclehomeproperties.xml.*
rm -rf "$ORACLE_HOME"/inventory/Scripts/oraInst.loc.*
rm -rf "$ORACLE_HOME"/inventory/Scripts/inventory.xml.*
rm -rf "$INVENTORY"/logs/*
Loading