diff --git a/OracleDatabase/OracleConnectionManager/README.md b/OracleDatabase/OracleConnectionManager/README.md index a953696d42..1f16661bb9 100644 --- a/OracleDatabase/OracleConnectionManager/README.md +++ b/OracleDatabase/OracleConnectionManager/README.md @@ -19,7 +19,7 @@ This guide provides information about example container build files that you can ## How to build and run Oracle Connection Manager in Containers This project offers example container images for the following: -* Oracle Database 23ai Client (23.5) for Linux x86-64 +* Oracle Database 23.26ai Client (26ai) for Linux x86-64 * Oracle Database 21c Client (21.3) for Linux x86-64 * Oracle Database 19c Client (19.3) for Linux x86-64 * Oracle Database 18c Client (18.3) for Linux x86-64 @@ -36,14 +36,14 @@ You can also deploy Oracle Connection Manager on Podman using the pre-built imag Example of pulling an Oracle Connection Manager Image from the Oracle Container Registry: ```bash -podman pull container-registry.oracle.com/database/cman:23.7.0.0 -podman tag container-registry.oracle.com/database/cman:23.7.0.0 localhost/oracle/client-cman:latest +podman pull container-registry.oracle.com/database/cman:latest +podman tag container-registry.oracle.com/database/cman:latest localhost/oracle/client-cman:latest ``` If you are using pre-built Oracle Connection Manager from [the Oracle Container Registry](https://container-registry.oracle.com), then you can skip the section [Create Oracle Connection Manager Image](#create-oracle-connection-manager-image) to build the Oracle Connection Manager Image. ### Create Oracle Connection Manager Image -**IMPORTANT:** You must provide the installation binaries of the Oracle ADMIN Client Oracle Database 23ai Client for Linux x86-64 (client_cman_home.zip) and put them into the `containerfiles/` folder. You only need to provide the binaries for the edition that you are going to install. The binaries can be downloaded from the [Oracle Technology Network](http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html). +**IMPORTANT:** You must provide the installation binaries of the Oracle ADMIN Client Oracle Database 23.26ai Client for Linux x86-64 (client_cman_home.zip) and put them into the `containerfiles/` folder. You only need to provide the binaries for the edition that you are going to install. The binaries can be downloaded from the [Oracle Technology Network](http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html). You also have to ensure you have internet connectivity for yum. You must not uncompress the binaries. The `buildContainerImage.sh` script is just a utility shell script that performs MD5 checks. It provides an easy way for beginners to get started. Expert users are welcome to directly call `podman build` with their prefered set of parameters. @@ -51,7 +51,7 @@ Before you build the image, ensure that you have provided the installation binar ```bash ./buildContainerImage.sh -v (Software Version) -./buildContainerImage.sh -v 23.5.0 +./buildContainerImage.sh -v 26.0.0 ``` For detailed usage of command, please execute following command: ```bash @@ -69,7 +69,7 @@ Note: Once image is built, retag it to latest as we are going to refer latest image in podman run command- ```bash -podman tag localhost/oracle/client-cman:23.5.0 localhost/oracle/client-cman:latest +podman tag localhost/oracle/client-cman:26.0.0 localhost/oracle/client-cman:latest ``` ## Create Network Bridge @@ -138,7 +138,7 @@ If you want to provide your own pre-created `cman.ora` file, you can provide wit --privileged=false \ -p 1521:1521 \ --name racnodepc1-cman \ - oracle/client-cman:23.5.0 + oracle/client-cman:latest ``` To check the Cman container/services creation logs, you can run a tail command on the podman logs. It should take two minutes to create the Cman container service. @@ -189,10 +189,10 @@ Run this command inside the OracleConnectionManager container. ## License -To download and run the Oracle ADMIN Client Oracle Database 23ai Client, regardless of whether inside or outside a container, you must download the binaries from the Oracle website and accept the license indicated on that page. +To download and run the Oracle ADMIN Client Oracle Database 23.26ai Client, regardless of whether inside or outside a container, you must download the binaries from the Oracle website and accept the license indicated on that page. All scripts and files hosted in this repository which are required to build the container images are, unless otherwise noted, released under UPL 1.0 license. ## Copyright -Copyright (c) 2014-2025 Oracle and/or its affiliates. +Copyright (c) 2014-2025 Oracle and/or its affiliates. \ No newline at end of file diff --git a/OracleDatabase/OracleConnectionManager/containerfiles/19.3.0/configCMAN.sh b/OracleDatabase/OracleConnectionManager/containerfiles/19.3.0/configCMAN.sh index df9db062f6..f822ed5726 100755 --- a/OracleDatabase/OracleConnectionManager/containerfiles/19.3.0/configCMAN.sh +++ b/OracleDatabase/OracleConnectionManager/containerfiles/19.3.0/configCMAN.sh @@ -1,5 +1,4 @@ #!/bin/bash -# LICENSE UPL 1.0 # ############################# # Copyright (c) 2024, Oracle and/or its affiliates. @@ -13,21 +12,14 @@ source $SCRIPT_DIR/functions.sh ####################### Constants ################# -# shellcheck disable=SC2034 declare -r FALSE=1 -# shellcheck disable=SC2034 declare -r TRUE=0 -# shellcheck disable=SC2034 declare -r ETCHOSTS="/etc/hosts" -# shellcheck disable=SC2034 declare -A dbhost_map -# shellcheck disable=SC2034 declare -A rule_map -# shellcheck disable=SC2034 declare hostip -# shellcheck disable=SC2034 declare action="" -# shellcheck disable=SC2034 + progname="$(basename $0)" ###################### Constants #################### @@ -86,15 +78,17 @@ if [ -z "${PORT}" ]; then fi if [ -z "${PUBLIC_IP}" ]; then - error_exit "Container hostname is not set or set to the empty string" + PUBLIC_IP=$(nslookup `hostname -f` | tail -n -2 | sed -e '/^$/d' | sed -e 's/Address: \(.*\)/\1/') + print_message "Container hostip is not set. Setting to [$PUBLIC_IP]" else print_message "Public IP is set to ${PUBLIC_IP}" fi if [ -z "${PUBLIC_HOSTNAME}" ]; then - error_exit "RAC Node PUBLIC Hostname is not set ot set to empty string" + PUBLIC_HOSTNAME=`hostname` + print_message "RAC Node PUBLIC Hostname is not set. Setting to ${PUBLIC_HOSTNAME}" else - print_message "RAC Node PUBLIC Hostname is set to ${PUBLIC_HOSTNAME}" + print_message "RAC Node PUBLIC Hostname is set to ${PUBLIC_HOSTNAME}" fi if [ -z "${LOG_LEVEL}" ]; then @@ -104,11 +98,11 @@ fi if [ -z "${TRACE_LEVEL}" ]; then TRACE_LEVEL=user fi -# shellcheck disable=SC2166 + if [ "${TRACE_LEVEL}" != "user" -a "${TRACE_LEVEL}" != "admin" -a "${TRACE_LEVEL}" != "support" ]; then print_message "Invalid trace-level [${TRACE_LEVEL}] specified." fi -# shellcheck disable=SC2166 + if [ "${LOG_LEVEL}" != "user" -a "${LOG_LEVEL}" != "admin" -a "${LOG_LEVEL}" != "support" ]; then print_message "Invalid log-level [${LOG_LEVEL}] specified." fi @@ -116,7 +110,6 @@ fi if [ -z "${REGISTRATION_INVITED_NODES}" ]; then REGISTRATION_INVITED_NODES='*' else -# shellcheck disable=SC2034 REGINVITEDNODESET=1 fi @@ -173,7 +166,7 @@ if [ $RULESRVSET -eq 1 ]; then print_message "Invalid input. SrvIP [${RULE_SRV}] not a valid subnet. " fi fi -# shellcheck disable=SC2166 + if [ "${RULE_ACT}" != "accept" -a "${RULE_ACT}" != "reject" -a "${RULE_ACT}" != "drop" ]; then print_message "Invalid rule-action [${RULE_ACT}] specified." fi @@ -192,7 +185,6 @@ do for rule_env_var in "${rule_env_vars[@]}" do echo "export ${rule_env_var}" - # shellcheck disable=SC2163 export ${rule_env_var} done @@ -204,7 +196,6 @@ do dbhost_map[${HOST}]=${IP} rule_map[${HOST}]=${db_hostvalue} - # shellcheck disable=SC2178 rule_env_vars="" done @@ -280,9 +271,7 @@ fi SetupEtcHosts() { -# shellcheck disable=SC2034 local stat=3 -# shellcheck disable=SC2034 local HOST_LINE if [ "$action" == "" ]; then if [ ! -z "${HOSTFILE}" ]; then @@ -330,7 +319,6 @@ do for rule_env_var in "${rule_env_vars[@]}" do echo "export ${rule_env_var}" - # shellcheck disable=SC2163 export ${rule_env_var} done @@ -462,12 +450,6 @@ while [ $# -gt 0 ]; do shift done -####### Populating resolv.conf and /etc/hosts ### -setupEtcResolvConf -SetupEtcHosts -#################### - - if [ "$action" == "delete" ]; then del_rule_details=`echo ${RULEDETAILS} | sed -e 's/.*?=\(.*\)/\1/g'` IFS=':' read -a del_rule_vars <<< "${del_rule_details}" @@ -475,7 +457,6 @@ if [ "$action" == "delete" ]; then for del_rule_var in "${del_rule_vars[@]}" do echo "export ${del_rule_var}" - # shellcheck disable=SC2163 export ${del_rule_var} done @@ -499,6 +480,9 @@ else cman_file fi +setupEtcResolvConf +SetupEtcHosts + print_message "Copying CMAN file to $DB_HOME/network/admin" copycmanora print_message "Starting CMAN" @@ -509,4 +493,4 @@ print_message "Checking CMAN Status" status_cman print_message "################################################" print_message " CONNECTION MANAGER IS READY TO USE! " -print_message "################################################" \ No newline at end of file +print_message "################################################" diff --git a/OracleDatabase/OracleConnectionManager/containerfiles/21.3.0/configCMAN.sh b/OracleDatabase/OracleConnectionManager/containerfiles/21.3.0/configCMAN.sh index df9db062f6..f822ed5726 100755 --- a/OracleDatabase/OracleConnectionManager/containerfiles/21.3.0/configCMAN.sh +++ b/OracleDatabase/OracleConnectionManager/containerfiles/21.3.0/configCMAN.sh @@ -1,5 +1,4 @@ #!/bin/bash -# LICENSE UPL 1.0 # ############################# # Copyright (c) 2024, Oracle and/or its affiliates. @@ -13,21 +12,14 @@ source $SCRIPT_DIR/functions.sh ####################### Constants ################# -# shellcheck disable=SC2034 declare -r FALSE=1 -# shellcheck disable=SC2034 declare -r TRUE=0 -# shellcheck disable=SC2034 declare -r ETCHOSTS="/etc/hosts" -# shellcheck disable=SC2034 declare -A dbhost_map -# shellcheck disable=SC2034 declare -A rule_map -# shellcheck disable=SC2034 declare hostip -# shellcheck disable=SC2034 declare action="" -# shellcheck disable=SC2034 + progname="$(basename $0)" ###################### Constants #################### @@ -86,15 +78,17 @@ if [ -z "${PORT}" ]; then fi if [ -z "${PUBLIC_IP}" ]; then - error_exit "Container hostname is not set or set to the empty string" + PUBLIC_IP=$(nslookup `hostname -f` | tail -n -2 | sed -e '/^$/d' | sed -e 's/Address: \(.*\)/\1/') + print_message "Container hostip is not set. Setting to [$PUBLIC_IP]" else print_message "Public IP is set to ${PUBLIC_IP}" fi if [ -z "${PUBLIC_HOSTNAME}" ]; then - error_exit "RAC Node PUBLIC Hostname is not set ot set to empty string" + PUBLIC_HOSTNAME=`hostname` + print_message "RAC Node PUBLIC Hostname is not set. Setting to ${PUBLIC_HOSTNAME}" else - print_message "RAC Node PUBLIC Hostname is set to ${PUBLIC_HOSTNAME}" + print_message "RAC Node PUBLIC Hostname is set to ${PUBLIC_HOSTNAME}" fi if [ -z "${LOG_LEVEL}" ]; then @@ -104,11 +98,11 @@ fi if [ -z "${TRACE_LEVEL}" ]; then TRACE_LEVEL=user fi -# shellcheck disable=SC2166 + if [ "${TRACE_LEVEL}" != "user" -a "${TRACE_LEVEL}" != "admin" -a "${TRACE_LEVEL}" != "support" ]; then print_message "Invalid trace-level [${TRACE_LEVEL}] specified." fi -# shellcheck disable=SC2166 + if [ "${LOG_LEVEL}" != "user" -a "${LOG_LEVEL}" != "admin" -a "${LOG_LEVEL}" != "support" ]; then print_message "Invalid log-level [${LOG_LEVEL}] specified." fi @@ -116,7 +110,6 @@ fi if [ -z "${REGISTRATION_INVITED_NODES}" ]; then REGISTRATION_INVITED_NODES='*' else -# shellcheck disable=SC2034 REGINVITEDNODESET=1 fi @@ -173,7 +166,7 @@ if [ $RULESRVSET -eq 1 ]; then print_message "Invalid input. SrvIP [${RULE_SRV}] not a valid subnet. " fi fi -# shellcheck disable=SC2166 + if [ "${RULE_ACT}" != "accept" -a "${RULE_ACT}" != "reject" -a "${RULE_ACT}" != "drop" ]; then print_message "Invalid rule-action [${RULE_ACT}] specified." fi @@ -192,7 +185,6 @@ do for rule_env_var in "${rule_env_vars[@]}" do echo "export ${rule_env_var}" - # shellcheck disable=SC2163 export ${rule_env_var} done @@ -204,7 +196,6 @@ do dbhost_map[${HOST}]=${IP} rule_map[${HOST}]=${db_hostvalue} - # shellcheck disable=SC2178 rule_env_vars="" done @@ -280,9 +271,7 @@ fi SetupEtcHosts() { -# shellcheck disable=SC2034 local stat=3 -# shellcheck disable=SC2034 local HOST_LINE if [ "$action" == "" ]; then if [ ! -z "${HOSTFILE}" ]; then @@ -330,7 +319,6 @@ do for rule_env_var in "${rule_env_vars[@]}" do echo "export ${rule_env_var}" - # shellcheck disable=SC2163 export ${rule_env_var} done @@ -462,12 +450,6 @@ while [ $# -gt 0 ]; do shift done -####### Populating resolv.conf and /etc/hosts ### -setupEtcResolvConf -SetupEtcHosts -#################### - - if [ "$action" == "delete" ]; then del_rule_details=`echo ${RULEDETAILS} | sed -e 's/.*?=\(.*\)/\1/g'` IFS=':' read -a del_rule_vars <<< "${del_rule_details}" @@ -475,7 +457,6 @@ if [ "$action" == "delete" ]; then for del_rule_var in "${del_rule_vars[@]}" do echo "export ${del_rule_var}" - # shellcheck disable=SC2163 export ${del_rule_var} done @@ -499,6 +480,9 @@ else cman_file fi +setupEtcResolvConf +SetupEtcHosts + print_message "Copying CMAN file to $DB_HOME/network/admin" copycmanora print_message "Starting CMAN" @@ -509,4 +493,4 @@ print_message "Checking CMAN Status" status_cman print_message "################################################" print_message " CONNECTION MANAGER IS READY TO USE! " -print_message "################################################" \ No newline at end of file +print_message "################################################" diff --git a/OracleDatabase/OracleConnectionManager/containerfiles/23.5.0/Containerfile b/OracleDatabase/OracleConnectionManager/containerfiles/23.5.0/Containerfile index 5dc21204c0..8cebfce415 100644 --- a/OracleDatabase/OracleConnectionManager/containerfiles/23.5.0/Containerfile +++ b/OracleDatabase/OracleConnectionManager/containerfiles/23.5.0/Containerfile @@ -19,7 +19,6 @@ ARG BASE_OL_IMAGE=oraclelinux:9 # Pull base image # --------------- -# hadolint ignore=DL3006 FROM $BASE_OL_IMAGE AS base # Labels @@ -69,11 +68,11 @@ ENV INSTALL_SCRIPTS=$INSTALL_DIR/install \ COPY $RUN_FILE $CMANORA $CONFIG_CMAN_FILE $FUNCTIONS $INSTALL_DIR/startup/ RUN if grep -q "Oracle Linux Server release 9" /etc/oracle-release; then \ - dnf install -y oracle-database-preinstall-23ai && \ - dnf clean all; \ + dnf install -y oracle-database-preinstall-23ai && \ + dnf clean all; \ else \ dnf -y install oraclelinux-developer-release-el8 && \ - dnf -y oracle-database-preinstall-23ai && \ + dnf -y install oracle-database-preinstall-23c && \ dnf clean all; \ :; \ fi && \ @@ -111,7 +110,6 @@ USER oracle COPY $INSTALL_FILE_1 $CHECK_SPACE_FILE $INSTALL_DB_BINARIES_FILE $INSTALL_DIR/install/ WORKDIR /u01/app/ -# shellcheck disable=SC2086 RUN unzip -q $INSTALL_SCRIPTS/$INSTALL_FILE_1 -d $DB_HOME && \ $DB_HOME/runInstaller -ignorePrereq -waitforcompletion -silent \ UNIX_GROUP_NAME="oinstall" \ @@ -131,7 +129,7 @@ RUN unzip -q $INSTALL_SCRIPTS/$INSTALL_FILE_1 -d $DB_HOME && \ FROM base COPY --from=builder /u01 /u01 -# shellcheck disable=SC2086 + RUN sh /u01/app/oraInventory/orainstRoot.sh && \ sync && \ echo "export ORACLE_HOME=$DB_HOME" >> /home/oracle/.bashrc && \ @@ -148,5 +146,5 @@ VOLUME ["/common_scripts"] WORKDIR /home/oracle # Define default command to start Oracle Grid and RAC Database setup. -# hadolint ignore=DL3025 + CMD exec $SCRIPT_DIR/$RUN_FILE diff --git a/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/Checksum b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/Checksum new file mode 100644 index 0000000000..7bcd8e6fbc --- /dev/null +++ b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/Checksum @@ -0,0 +1 @@ +6946801472654d96138428542f278178 LINUX.X64_260000_client.zip diff --git a/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/Containerfile b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/Containerfile new file mode 100644 index 0000000000..c5415b27a5 --- /dev/null +++ b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/Containerfile @@ -0,0 +1,150 @@ +# +############################# +# Copyright (c) 2024, Oracle and/or its affiliates. +# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl +# Author: paramdeep.saini@oracle.com +############################ +# +# +# ORACLE CONTAINERFILES PROJECT +# -------------------------- +# This is the Containerfile for Oracle Database 23.26ai Oracle Connection Manager +# +# HOW TO BUILD THIS IMAGE +# ----------------------- +# Run: +# $ podman build -t oracle/cman:23.26ai . + +ARG BASE_OL_IMAGE=oraclelinux:9 + +# Pull base image +# --------------- +FROM $BASE_OL_IMAGE AS base + +# Labels +# ------ +LABEL "provider"="Oracle" \ + "volume.setup.location1"="/opt/scripts" \ + "volume.startup.location1"="/opt/scripts/startup" + +# Argument to control removal of components not needed after db software installation +ARG SLIMMING=false +ARG INSTALL_FILE_1="LINUX.X64_260000_client.zip" +ARG USER="root" +ARG WORKDIR="/root" + +ENV INSTALL_DIR=/opt/scripts \ + WORKDIR=$WORKDIR \ + DB_BASE=/u01/app/oracle \ + DB_USER=oracle \ + CHECK_SPACE_FILE="checkSpace.sh" \ + CMANORA="cman.ora" \ + FUNCTIONS="functions.sh" \ + INVENTORY=/u01/app/oraInventory \ + DB_HOME=/u01/app/oracle/product/26ai/client_1 \ + JAVA_HOME=/u01/app/oracle/product/26ai/client_1/jdk \ + LD_LIBRARY_PATH=/u01/app/oracle/product/26ai/client_1/lib \ + SQLPATH=/u01/app/oracle/product/26ai/client_1/lib \ + INSTALL_SCRIPTS=/opt/scripts/install \ + INSTALL_FILE_1=$INSTALL_FILE_1 \ + CONFIG_CMAN_FILE="configCMAN.sh" \ + RUN_FILE="runOracle.sh" \ + DB_SETUP_FILE="setupDB.sh" \ + PATH=/bin:/usr/bin:/sbin:/usr/sbin:$PATH + +##### + +ENV INSTALL_SCRIPTS=$INSTALL_DIR/install \ + PATH=/bin:/usr/bin:/sbin:/usr/sbin:$PATH \ + SCRIPT_DIR=$INSTALL_DIR/startup \ + INSTALL_SCRIPTS=$INSTALL_DIR/install \ + DB_PATH=$DB_HOME/bin:$DB_HOME/OPatch/:/usr/sbin:$PATH \ + DB_LD_LIBRARY_PATH=$DB_HOME/lib:/usr/lib:/lib \ + ORACLE_HOME=$DB_HOME \ + TNS_ADMIN=$DB_HOME/network/admin \ + PATH=$DB_HOME/bin:$PATH + +###### + +COPY $RUN_FILE $CMANORA $CONFIG_CMAN_FILE $FUNCTIONS $INSTALL_DIR/startup/ +RUN if grep -q "Oracle Linux Server release 9" /etc/oracle-release; then \ + dnf install -y oracle-ai-database-preinstall-26ai && \ + dnf clean all; \ + else \ + dnf -y install oraclelinux-developer-release-el8 && \ + dnf -y install oracle-ai-database-preinstall-26ai && \ + dnf clean all; \ + :; \ + fi && \ + dnf install -y net-tools which zip unzip tar openssh-server vim-minimal passwd sudo hostname && \ + dnf clean all && \ + rm -f /etc/sysctl.conf && \ + rm -f /usr/lib/systemd/system/dnf-makecache.service + +RUN mkdir -p "$DB_BASE" && \ + mkdir -p "$DB_HOME" && \ + mkdir -p $INVENTORY && \ + chown -R "${DB_USER}":oinstall "$DB_BASE" && \ + chown -R "${DB_USER}":oinstall "$DB_HOME" && \ + chown -R "${DB_USER}":oinstall "$INVENTORY" && \ + chmod 755 $INSTALL_DIR/startup/*.sh && \ + mkdir -p $INSTALL_DIR/install && \ + chmod 755 $INSTALL_DIR/install && \ + chown -R "${DB_USER}":oinstall $INSTALL_DIR/install && \ + chmod 666 /etc/sudoers && \ + echo "oracle ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \ + chmod 440 /etc/sudoers && \ + chmod 4711 /usr/bin/ping && \ + sync + +############################################# +# ------------------------------------------- +# Start new stage for installing the client and swingbench +# ------------------------------------------- +############################################# + +from base AS builder + +USER oracle + +COPY $INSTALL_FILE_1 $CHECK_SPACE_FILE $INSTALL_DB_BINARIES_FILE $INSTALL_DIR/install/ + +WORKDIR /u01/app/ +RUN unzip -q $INSTALL_SCRIPTS/$INSTALL_FILE_1 -d $DB_HOME && \ + $DB_HOME/runInstaller -ignorePrereq -waitforcompletion -silent \ + UNIX_GROUP_NAME="oinstall" \ + INVENTORY_LOCATION=$INVENTORY \ + ORACLE_HOME=$DB_HOME \ + ORACLE_BASE=$DB_BASE \ + oracle.install.client.installType=Custom \ + oracle.install.client.customComponents="oracle.sqlplus:23.0.0.0.0,oracle.network.client:23.0.0.0.0,oracle.network.cman:23.0.0.0.0,oracle.network.listener:23.0.0.0.0" || \ + sync + +############################################# +# ------------------------------------------- +# Start new layer for client +# ------------------------------------------- +############################################# + +FROM base + +COPY --from=builder /u01 /u01 + +RUN sh /u01/app/oraInventory/orainstRoot.sh && \ + sync && \ + echo "export ORACLE_HOME=$DB_HOME" >> /home/oracle/.bashrc && \ + echo "export JAVA_HOME=$JAVA_HOME" >> /home/oracle/.bashrc && \ + echo "export PATH=$DB_HOME/bin:$JAVA_HOME/bin:$PATH" >> /home/oracle/.bashrc && \ + echo "export TNS_ADMIN=$ORACLE_HOME/network/admin" && \ + chown oracle:oinstall $INSTALL_DIR/startup/*.sh && \ + chown oracle:oinstall $INSTALL_DIR/startup/cman.ora && \ + sync + +USER oracle +EXPOSE 1521 5500 +VOLUME ["/common_scripts"] +WORKDIR /home/oracle + +# Define default command to start Oracle Grid and RAC Database setup. + +CMD exec $SCRIPT_DIR/$RUN_FILE diff --git a/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/checkSpace.sh b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/checkSpace.sh new file mode 100644 index 0000000000..0b146c0234 --- /dev/null +++ b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/checkSpace.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# +############################# +# Copyright (c) 2024, Oracle and/or its affiliates. +# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl +# Author: paramdeep.saini@oracle.com +############################ +# + +REQUIRED_SPACE_GB=6 +AVAILABLE_SPACE_GB=`df -PB 1G / | tail -n 1 | awk '{print $4}'` + +if [ $AVAILABLE_SPACE_GB -lt $REQUIRED_SPACE_GB ]; then + script_name=`basename "$0"` + echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + echo "$script_name: ERROR - There is not enough space available in the docker container." + echo "$script_name: The container needs at least $REQUIRED_SPACE_GB GB , but only $AVAILABLE_SPACE_GB available." + echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + exit 1; +fi; diff --git a/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/client.rsp b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/client.rsp new file mode 100644 index 0000000000..4e8c25c376 --- /dev/null +++ b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/client.rsp @@ -0,0 +1,106 @@ +############################################################################### +## Copyright(c) 2022 Oracle and/or its affiliates. ## +## ## +## Specify values for the variables listed below to customize ## +## your installation. ## +## ## +## Each variable is associated with a comment. The comment ## +## can help to populate the variables with the appropriate ## +## values. ## +## ## +############################################################################### + + +#------------------------------------------------------------------------------- +# Do not change the following system generated value. +#------------------------------------------------------------------------------- +oracle.install.responseFileVersion=/oracle/install/rspfmt_clientinstall_response_schema_v18.0.0 + +#------------------------------------------------------------------------------- +# Unix group to be set for the inventory directory. +#------------------------------------------------------------------------------- +UNIX_GROUP_NAME=oinstall +#------------------------------------------------------------------------------- +# Inventory location. +#------------------------------------------------------------------------------- +INVENTORY_LOCATION=###INVENTORY### +#------------------------------------------------------------------------------- +# Complete path of the Oracle Home +#------------------------------------------------------------------------------- +ORACLE_HOME=###DB_HOME### + +#------------------------------------------------------------------------------- +# Complete path of the Oracle Base. +#------------------------------------------------------------------------------- +ORACLE_BASE=###DB_BASE### + +#------------------------------------------------------------------------------ +#Name : INSTALL_TYPE +#Datatype : String +#Description: Installation type of the component. +# +# The following choices are available. The value should contain +# only one of these choices. +# - Administrator +# - Runtime +# - InstantClient +# - Custom +# +#Example : INSTALL_TYPE = Administrator +#------------------------------------------------------------------------------ +oracle.install.client.installType=Custom + +#------------------------------------------------------------------------------- +# Name : oracle.install.client.customComponents +# Datatype : StringList +# +# This property is considered only if INSTALL_TYPE is set to "Custom" +# +# Description: List of Client Components you would like to install +# +# The following choices are available. You may specify any +# combination of these choices. The components you choose should +# be specified in the form "internal-component-name:version" +# Below is a list of components you may specify to install. +# +# oracle.sqlj:18.0.0.0.0 -- "Oracle SQLJ" +# oracle.rdbms.util:18.0.0.0.0 -- "Oracle Database Utilities" +# oracle.javavm.client:18.0.0.0.0 -- "Oracle Java Client" +# oracle.sqlplus:18.0.0.0.0 -- "SQL*Plus" +# oracle.dbjava.jdbc:18.0.0.0.0 -- "Oracle JDBC/THIN Interfaces" +# oracle.ldap.client:18.0.0.0.0 -- "Oracle Internet Directory Client" +# oracle.rdbms.oci:18.0.0.0.0 -- "Oracle Call Interface (OCI)" +# oracle.precomp:18.0.0.0.0 -- "Oracle Programmer" +# oracle.xdk:18.0.0.0.0 -- "Oracle XML Development Kit" +# oracle.network.aso:18.0.0.0.0 -- "Oracle Advanced Security" +# oracle.oraolap.mgmt:18.0.0.0.0 -- "OLAP Analytic Workspace Manager and Worksheet" +# oracle.network.client:18.0.0.0.0 -- "Oracle Net" +# oracle.network.cman:18.0.0.0.0 -- "Oracle Connection Manager" +# oracle.network.listener:18.0.0.0.0 -- "Oracle Net Listener" +# oracle.ordim.client:18.0.0.0.0 -- "Oracle Multimedia Client Option" +# oracle.odbc:18.0.0.0.0 -- "Oracle ODBC Driver" +# oracle.has.client:18.0.0.0.0 -- "Oracle Clusterware High Availability API" +# oracle.dbdev:18.0.0.0.0 -- "Oracle SQL Developer" +# oracle.rdbms.scheduler:18.0.0.0.0 -- "Oracle Scheduler Agent" +# +# Example : oracle.install.client.customComponents="oracle.precomp:18.0.0.0.0","oracle.oraolap.mgmt:18.0.0.0.0","oracle.rdbms.scheduler:18.0.0.0.0" +#------------------------------------------------------------------------------- +oracle.install.client.customComponents=oracle.sqlplus:18.0.0.0.0,oracle.network.client:18.0.0.0.0,oracle.network.cman:18.0.0.0.0,oracle.network.listener:18.0.0.0.0 + +#------------------------------------------------------------------------------- +# Host name to be used for by the Oracle Scheduler Agent. +# This needs to be entered in case oracle.rdbms.scheduler is selected in the +# list of custom components during custom install +# +# Example : oracle.install.client.schedulerAgentHostName = acme.domain.com +#------------------------------------------------------------------------------ +oracle.install.client.schedulerAgentHostName= + +#------------------------------------------------------------------------------ +# Port number to be used for by the Oracle Scheduler Agent. +# This needs to be entered in case oracle.rdbms.scheduler is selected in the +# list of custom components during custom install +# +# Example: oracle.install.client.schedulerAgentPortNumber = 1500 +#------------------------------------------------------------------------------ +oracle.install.client.schedulerAgentPortNumber= diff --git a/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/client_install.rsp b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/client_install.rsp new file mode 100644 index 0000000000..a76171acbd --- /dev/null +++ b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/client_install.rsp @@ -0,0 +1,144 @@ +############################################################################### +## Copyright(c) Oracle Corporation 1998,2023. All rights reserved. ## +## ## +## Specify values for the variables listed below to customize ## +## your installation. ## +## ## +## Each variable is associated with a comment. The comment ## +## can help to populate the variables with the appropriate ## +## values. ## +## ## +############################################################################### + + +#------------------------------------------------------------------------------- +# Do not change the following system generated value. +#------------------------------------------------------------------------------- +oracle.install.responseFileVersion=/oracle/install/rspfmt_clientinstall_response_schema_v23.0.0 + +#------------------------------------------------------------------------------- +# Unix group to be set for the inventory directory. +#------------------------------------------------------------------------------- +UNIX_GROUP_NAME=oinstall +#------------------------------------------------------------------------------- +# Inventory location. +#------------------------------------------------------------------------------- +INVENTORY_LOCATION=###INVENTORY### +#------------------------------------------------------------------------------- +# Complete path of the Oracle Home +#------------------------------------------------------------------------------- +ORACLE_HOME=###DB_HOME### +#------------------------------------------------------------------------------- +# Complete path of the Oracle Base. +#------------------------------------------------------------------------------- +ORACLE_BASE=###DB_BASE### +#------------------------------------------------------------------------------ +#Name : INSTALL_TYPE +#Datatype : String +#Description: Installation type of the component. +# +# The following choices are available. The value should contain +# only one of these choices. +# - Administrator +# - Runtime +# - Custom +# +#Example : INSTALL_TYPE = Administrator +#------------------------------------------------------------------------------ +oracle.install.client.installType= + +#------------------------------------------------------------------------------- +# Name : oracle.install.client.customComponents +# Datatype : StringList +# +# This property is considered only if INSTALL_TYPE is set to "Custom" +# +# Description: List of Client Components you would like to install +# +# The following choices are available. You may specify any +# combination of these choices. The components you choose should +# be specified in the form "internal-component-name:version" +# Below is a list of components you may specify to install. +# +# oracle.sqlj:23.0.0.0.0 -- "Oracle SQLJ" +# oracle.rdbms.util:23.0.0.0.0 -- "Oracle Database Utilities" +# oracle.javavm.client:23.0.0.0.0 -- "Oracle Java Client" +# oracle.sqlplus:23.0.0.0.0 -- "SQL*Plus" +# oracle.dbjava.jdbc:23.0.0.0.0 -- "Oracle JDBC/THIN Interfaces" +# oracle.ldap.client:23.0.0.0.0 -- "Oracle Internet Directory Client" +# oracle.rdbms.oci:23.0.0.0.0 -- "Oracle Call Interface (OCI)" +# oracle.precomp:23.0.0.0.0 -- "Oracle Programmer" +# oracle.xdk:23.0.0.0.0 -- "Oracle XML Development Kit" +# oracle.network.aso:23.0.0.0.0 -- "Oracle Advanced Security" +# oracle.oraolap.mgmt:23.0.0.0.0 -- "OLAP Analytic Workspace Manager and Worksheet" +# oracle.network.client:23.0.0.0.0 -- "Oracle Net" +# oracle.network.cman:23.0.0.0.0 -- "Oracle Connection Manager" +# oracle.network.listener:23.0.0.0.0 -- "Oracle Net Listener" +# oracle.ordim.client:23.0.0.0.0 -- "Oracle Multimedia Client Option" +# oracle.odbc:23.0.0.0.0 -- "Oracle ODBC Driver" +# oracle.dbdev:23.0.0.0.0 -- "Oracle SQL Developer" +# oracle.rdbms.scheduler:23.0.0.0.0 -- "Oracle Scheduler Agent" +# oracle.rdbms.drdaas:23.0.0.0.0 -- "Oracle Database Provider for DRDA" +# +# Example : oracle.install.client.customComponents="oracle.precomp:23.0.0.0.0","oracle.oraolap.mgmt:23.0.0.0.0","oracle.rdbms.scheduler:23.0.0.0.0","oracle.rdbms.drdaas:23.0.0.0.0" +#------------------------------------------------------------------------------- +oracle.install.client.customComponents= + +#------------------------------------------------------------------------------- +# Host name to be used for by the Oracle Scheduler Agent. +# This needs to be entered in case oracle.rdbms.scheduler is selected in the +# list of custom components during custom install +# +# Example : oracle.install.client.schedulerAgentHostName = acme.domain.com +#------------------------------------------------------------------------------ +oracle.install.client.schedulerAgentHostName= + +#------------------------------------------------------------------------------ +# Port number to be used for by the Oracle Scheduler Agent. +# This needs to be entered in case oracle.rdbms.scheduler is selected in the +# list of custom components during custom install +# +# Example: oracle.install.client.schedulerAgentPortNumber = 1500 +#------------------------------------------------------------------------------ +oracle.install.client.schedulerAgentPortNumber= + +#------------------------------------------------------------------------------ +# Name : oracle.install.client.drdaas.hostName +# Datatype : String +# Description: Specify the host name or IP address of the DRDA AS Listener. +# Component : oracle.rdbms.drdaas +# This needs to be entered in case oracle.rdbms.drdaas is selected in the +# list of custom components during custom install +#------------------------------------------------------------------------------ +oracle.install.client.drdaas.hostName= +#------------------------------------------------------------------------------ +# Name : oracle.install.client.drdaas.mapName +# Datatype : String +# Description: Specify the Relational Database Map Name for the DRDA AS Listener. +# Component : oracle.rdbms.drdaas +# This needs to be entered in case oracle.rdbms.drdaas is selected in the +# list of custom components during custom install +#------------------------------------------------------------------------------ +oracle.install.client.drdaas.mapName= +#------------------------------------------------------------------------------ +# Name : oracle.install.client.drdaas.portNumber +# Datatype : int +# Description: Specify the port number of the DRDA AS Listener. +# Component : oracle.rdbms.drdaas +# This needs to be entered in case oracle.rdbms.drdaas is selected in the +# list of custom components during custom install +#------------------------------------------------------------------------------ +oracle.install.client.drdaas.portNumber= +#------------------------------------------------------------------------------ +# Name : oracle.install.client.drdaas.connectionDescriptor +# Datatype : String +# Description: Specify the connection descriptor to use to connect to the Oracle Database. Acceptable values are: +# oracle_sid +# TNS(tnsnamesentry) (eg: TNS(orcl) ) +# "TNS-Descriptor" (eg:"(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=drdaas))(CONNECT_DATA=(SERVICE_NAME=drdaas.us.oracle.com)))") +# Default: 'oracle_sid' +# Component : oracle.rdbms.drdaas +# This needs to be entered in case oracle.rdbms.drdaas is selected in the +# list of custom components during custom install +#------------------------------------------------------------------------------ +oracle.install.client.drdaas.connectionDescriptor= diff --git a/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/cman.ora b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/cman.ora new file mode 100644 index 0000000000..8cb1a07c7b --- /dev/null +++ b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/cman.ora @@ -0,0 +1,65 @@ +###################################################################### +# +# Copyright (c) 2022 Oracle and/or its affiliates. +# +# NAME +# cman.ora +# +# DESCRIPTION +# Sample CMAN configuration file that the user can modify for their +# own use. +# +# NOTES +# 1. Change to your fully qualified hostname +# 2. Change to the listening port number +# 3. Change and to your log and trace directories +# +# MODIFIED (MM/DD/YYYY) +# asankrut 10/05/2002 - Added Rule List Specifications +# asankrut 06/11/2002 - Modified to add new parameters; added comments. +# asankrut 12/31/2001 - Creation. +# +###################################################################### + +# CMAN Alias +CMAN_###CMAN_HOSTNAME###.###DOMAIN### = +(configuration= + # Listening address of the cman + (address=(protocol=tcp)(host=###CMAN_HOSTNAME###.###DOMAIN###)(port=###PORT###)) + # Configuration parameters of this CMAN + (parameter_list = + # Need authentication for connection? + # Valid values: boolean values for on/off + (connection_statistics=yes) + (log_directory=###DB_HOME###/network/log) + (log_level=###LOG_LEVEL###) + (trace_directory=###DB_HOME###/network/trace) + (trace_level=###TRACE_LEVEL###) + (valid_node_checking_registration=on) + (registration_invited_nodes=*) + (REST_ADDRESS=###REST_HOST###:###REST_PORT###) + (TDM=###TDM###) + (TDM_THREADING_MODE=###TDM_THREADING_MODE###) + ) + + # Rule list + + # Rule Specification: + # src = Source of connection; '*' for 'ANY' + # dst = Destination of connection; '*' for 'ANY' + # srv = Service of connection; '*' for 'ANY' + # act = Action: 'accept', 'reject' or 'drop' + + # Action List Specification: + # aut = aso_authentication_filter + # moct = outbound_connect_timeout + # mct = session_timeout + # mit = idle_timeout + # conn_stats = connect_statistics + (rule_list= + (rule= + (src=*)(dst=*)(srv=*)(act=accept) + (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on)) + ) + ) +) diff --git a/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/configCMAN.sh b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/configCMAN.sh new file mode 100644 index 0000000000..8c4829b0ec --- /dev/null +++ b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/configCMAN.sh @@ -0,0 +1,577 @@ +#!/bin/bash +# +############################# +# Copyright (c) 2024, Oracle and/or its affiliates. +# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl +# Author: paramdeep.saini@oracle.com +############################ +# + +#source /tmp/envfile + +source $SCRIPT_DIR/functions.sh + +####################### Constants ################# +declare -r FALSE=1 +declare -r TRUE=0 +declare -r ETCHOSTS="/etc/hosts" +declare -A dbhost_map +declare -A rule_map +declare hostip +declare action="" + +progname="$(basename $0)" +###################### Constants #################### + +WALLET_TMPL_STR='wallet_location = + (source= + (method=File) + (method_data= + (directory=###WALLET_LOCATION###) + ) + ) +SQLNET.WALLET_OVERRIDE = TRUE' + +HIDE_PASSWORD="######" + +RULESRCSET=0 +RULEDSTSET=0 +RULESRVSET=0 +CP="/bin/cp" + +export TRULESTR=" (rule= + (src=*)(dst=*)(srv=*)(act=accept) + (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on)) + )" + +all_check() +{ +if [ -z ${DB_HOSTDETAILS} ]; then + print_message "DB_HOSTDETAILS not set. Setting to default" +else + print_message "DB_HOSTDETAILS name is ${DB_HOSTDETAILS}" + get_dbhost_details +fi + +check_cman_env_vars +} + +check_cman_env_vars() +{ +## Checking Grid Reponsfile or vip,scan ip and private ip +### if user has passed the Grid ResponseFile name, below checks will be skipped + +# Following checks will be executed if user is not providing Grid Response File + +if [ -z "${DOMAIN}" ]; then + print_message "Domain name is not defined. Setting Domain to 'example.com'" + DOMAIN="example.com" + else + print_message "Domain is defined to $DOMAIN" +fi + +if [ -z "${PORT}" ]; then + print_message "PORT is not defined. Setting PORT to '1521'" + PORT="1521" + else + print_message "PORT is defined to $PORT" +fi + +if [ -z "${PUBLIC_IP}" ]; then + error_exit "Container hostname is not set or set to the empty string" +else + print_message "Public IP is set to ${PUBLIC_IP}" +fi + +if [ -z "${PUBLIC_HOSTNAME}" ]; then + error_exit "RAC Node PUBLIC Hostname is not set ot set to empty string" +else + print_message "RAC Node PUBLIC Hostname is set to ${PUBLIC_HOSTNAME}" +fi + +if [ -z "${LOG_LEVEL}" ]; then + LOG_LEVEL=user +fi + +if [ -z "${TRACE_LEVEL}" ]; then + TRACE_LEVEL=user +fi + +if [ "${TRACE_LEVEL}" != "user" -a "${TRACE_LEVEL}" != "admin" -a "${TRACE_LEVEL}" != "support" ]; then + print_message "Invalid trace-level [${TRACE_LEVEL}] specified." +fi + +if [ "${LOG_LEVEL}" != "user" -a "${LOG_LEVEL}" != "admin" -a "${LOG_LEVEL}" != "support" ]; then + print_message "Invalid log-level [${LOG_LEVEL}] specified." +fi + +if [ -z "${REGISTRATION_INVITED_NODES}" ]; then + REGISTRATION_INVITED_NODES='*' +else + REGINVITEDNODESET=1 +fi + +if [ -z "${TDM}" ]; then + TDM="no" + TDM_THREADING_MODE="" +else + TDM=`echo "$TDM" | tr '[:upper:]' '[:lower:]'` + TDM_THREADING_MODE="dedicated" +fi + +if [ ! -z "${ENABLE_REST_API}" ]; then + ENABLE_REST_API=`echo "$ENABLE_REST_API" | tr '[:upper:]' '[:lower:]'` +else + ENABLE_REST_API="false" +fi + +if [ -z "${REST_HOST}" ]; then + REST_HOST=`hostname -f` +fi + +if [ -z "${REST_PORT}" ]; then + REST_PORT=1525 +fi + +if [ -z "${REST_PWD_FILE}" ]; then + REST_PWD_FILE="/run/secrets/RESTpwdsecret" +fi + +if [ -z "${REST_PWD_KEY}" ]; then + REST_PWD_KEY="/run/secrets/RESTkeysecret" +fi + +if [ "${ENABLE_REST_API}" == "true" ]; then + print_message "REST API is Enabled" + if [ -z "${WALLET_LOCATION}" ]; then + export WALLET_LOCATION=$DB_BASE/wallet + fi + print_message "REST HOST is defined to $REST_HOST" + print_message "REST PORT is defined to $REST_PORT" + REST_PASSWORD=$(openssl pkeyutl -decrypt -in ${REST_PWD_FILE} -inkey ${REST_PWD_KEY}) + else + print_message "REST API is disabled" +fi +} + +check_rule_env_vars () +{ + +if [ -z "${RULE_SRC}" ]; then + RULE_SRC='*' +else + RULESRCSET=1 +fi + +if [ -z "${RULE_DST}" ]; then + RULE_DST='*' +else + RULEDSTSET=1 +fi + +if [ -z "${RULE_SRV}" ]; then + RULE_SRV='*' +else + RULESRVSET=1 +fi + +if [ -z "${RULE_ACT}" ]; then + RULE_ACT='accept' +fi + +contSubNetIP=`/sbin/ifconfig eth0 | grep 'inet ' | awk '{ print $2 }' | awk -F. '{ print $1 "." $2 "." $3 }'` +echo "Subnet=[$contSubNetIP]" + +if [ $RULESRCSET -eq 1 ]; then + echo ${RULE_SRC} | grep $contSubNetIP > /dev/null 2>&1 + + if [ $? -ne 0 ]; then + print_message "Invalid input. SourceIP [${RULE_SRC}] not a valid subnet. " + fi +fi + +if [ $RULEDSTSET -eq 1 ]; then + echo ${RULE_DST} | grep $contSubNetIP > /dev/null 2>&1 + + if [ $? -ne 0 ]; then + print_message "Invalid input. DestinationIP [${RULE_DST}] not a valid subnet. " + fi +fi + +if [ $RULESRVSET -eq 1 ]; then + echo ${RULE_SRV} | grep $contSubNetIP > /dev/null 2>&1 + + if [ $? -ne 0 ]; then + print_message "Invalid input. SrvIP [${RULE_SRV}] not a valid subnet. " + fi +fi + +if [ "${RULE_ACT}" != "accept" -a "${RULE_ACT}" != "reject" -a "${RULE_ACT}" != "drop" ]; then + print_message "Invalid rule-action [${RULE_ACT}] specified." +fi + +} + +get_dbhost_details() +{ + +db_hostdetail_values=`echo ${DB_HOSTDETAILS} | sed -e 's/.*?=\(.*\)/\1/g'` +IFS=',' read -a db_hostvalues <<< "${db_hostdetail_values}" + +for db_hostvalue in "${db_hostvalues[@]}" +do + IFS=':' read -a rule_env_vars <<< "${db_hostvalue}" + for rule_env_var in "${rule_env_vars[@]}" + do + echo "export ${rule_env_var}" + export ${rule_env_var} + done + + if [ -z ${HOST} ]; then + error_exit "DB HOST not set. Exiting" + else + print_message "DB_HOST name is ${HOST}" + fi + + dbhost_map[${HOST}]=${IP} + rule_map[${HOST}]=${db_hostvalue} + rule_env_vars="" +done + +check_dbhost_connections +if [ $? -ne 0 ]; then + error_exit "check_dbhost_connections failed" +fi + +} + +get_host_ip() { + + nslookup $1 > /dev/null + if [ $? -ne 0 ]; then + hostip="" + echo "$0() : nslookup on $1 failed" + return 1 + fi + + hostip=`nslookup $1 | tail -n -3 | grep -v '^$' | grep 'Address:' | awk '{ print $2 }'` + + return 0 +} + +check_dbhost_connections() { + +for key in "${!dbhost_map[@]}"; +do + print_message " -- : $key --> ${dbhost_map[$key]}" + ping $key -c 1 > /dev/null + if [ $? -eq 0 ]; then + print_message "host $key is pingable by name." + continue + fi + if ( [ "${dbhost_map[$key]}" != "" ] ); then + print_message "$key:${dbhost_map[$key]} is not reachable. Exiting." + return 1 + fi + get_host_ip $key + if [ $? -eq 0 ]; then + print_message "resolved host ip : $key --> ${hostip}. Check if pinagble by IP" + ping ${hostip} -c 1 > /dev/null + if [ $? -ne 0 ]; then + print_message "host $key not pingable by IP. " + print_message "host $key:${hostip} not reachable by Name/IP. Exiting" + return 2 + fi + dbhost_map[$key]=${hostip} + continue + else + print_message "IP not found for host $key" + return 3 + fi +done + +return 0 +} + +####################################### ETC Host Function ############################################################# + +setupEtcResolvConf() +{ +local stat=3 + +if [ "$action" == "" ]; then + if [ ! -z "${DNS_SERVER}" ] ; then + sudo sh -c "echo \"search ${DOMAIN}\" > /etc/resolv.conf" + sudo sh -c "echo \"nameserver ${DNS_SERVER}\" >> /etc/resolv.conf" + fi +fi + +} + +SetupEtcHosts() +{ +local stat=3 +local HOST_LINE +if [ "$action" == "" ]; then + if [ ! -z "${HOSTFILE}" ]; then + if [ -f "${HOSTFILE}" ]; then + sudo sh -c "cat \"${HOSTFILE}\" > /etc/hosts" + fi + else + sudo sh -c "echo -e \"127.0.0.1\tlocalhost.localdomain\tlocalhost\" > /etc/hosts" + sudo sh -c "echo -e \"$PUBLIC_IP\t$PUBLIC_HOSTNAME.$DOMAIN\t$PUBLIC_HOSTNAME\" >> /etc/hosts" + fi +fi + +} + +######### Grid setup Function########################### +cman_file () +{ +rm -f $logdir/$CMANORA +touch $logdir/$CMANORA +chown -R oracle:oinstall $logdir/$CMANORA +if [ -f $DB_HOME/network/admin/$CMANORA ]; then + cp $DB_HOME/network/admin/$CMANORA $logdir/$CMANORA +else + cat $SCRIPT_DIR/$CMANORA >> $logdir/$CMANORA + if [ ! -z ${DB_HOSTDETAILS} ]; then + sh -c "echo $'/(rule=\n\Emk%d\'k\E:x\n' | vi $logdir/$CMANORA" 2>/dev/null + fi +fi + +sed -i -e "s|###CMAN_HOSTNAME###|$PUBLIC_HOSTNAME|g" $logdir/$CMANORA +## sed -i -e "s|###DB_HOSTNAME###|$key|g" $logdir/$CMANORA +sed -i -e "s|###DOMAIN###|$DOMAIN|g" $logdir/$CMANORA +sed -i -e "s|###DB_HOME###|$DB_HOME|g" $logdir/$CMANORA +sed -i -e "s|###PORT###|$PORT|g" $logdir/$CMANORA +sed -i -e "s|###LOG_LEVEL###|$LOG_LEVEL|g" $logdir/$CMANORA +sed -i -e "s|###TRACE_LEVEL###|$TRACE_LEVEL|g" $logdir/$CMANORA +sed -i -e "s|(registration_invited_nodes=.*)|(registration_invited_nodes=${REGISTRATION_INVITED_NODES})|g" $logdir/$CMANORA + +if [ "${ENABLE_REST_API}" == "true" ]; then + sed -i -e "s|###REST_HOST###|$REST_HOST|g" $logdir/$CMANORA + sed -i -e "s|###REST_PORT###|$REST_PORT|g" $logdir/$CMANORA +else + sed -i -e "/(REST_ADDRESS=/d" $logdir/$CMANORA +fi + +if [ "${TDM}" == "yes" ]; then + sed -i -e "s|###TDM###|$TDM|g" $logdir/$CMANORA + sed -i -e "s|###TDM_THREADING_MODE###|$TDM_THREADING_MODE|g" $logdir/$CMANORA +else + sed -i -e "/(TDM=/d" $logdir/$CMANORA + sed -i -e "/(TDM_THREADING_MODE=/d" $logdir/$CMANORA +fi + +for key in "${!dbhost_map[@]}"; +do + unsetrulevars + IFS=':' read -a rule_env_vars <<< "${rule_map[$key]}" + + for rule_env_var in "${rule_env_vars[@]}" + do + echo "export ${rule_env_var}" + export ${rule_env_var} + done + + check_rule_env_vars + sh -c "echo $'/(rule_list=\n\Eo${TRULESTR}\E:x\n' | vi $logdir/$CMANORA" 2>/dev/null + sh -c "echo $'/(src=\n\Ec\$(src=${RULE_SRC})(dst=$key)(srv=${RULE_SRV})(act=${RULE_ACT})\E:x\n' | vi $logdir/$CMANORA" 2>/dev/null + +done + +if [ ! -z "${WALLET_LOCATION}" ]; then + echo "$WALLET_TMPL_STR" >> $logdir/$CMANORA + sed -i -e "s|###WALLET_LOCATION###|${WALLET_LOCATION}|g" $logdir/$CMANORA +fi + +} + +unsetrulevars() +{ +unset RULE_SRC +unset RULE_DST +unset RULE_SRV +unset RULE_ACT +} + +deleterule() +{ + +export CMANRULE="(src=${RULE_SRC})(dst=${RULE_DST})(srv=${RULE_SRV})(act=${RULE_ACT})" +CMANRULE=`echo $CMANRULE | sed -e 's/\*/\\\*/g'` + +print_message "CMAN Rule to delete=[$CMANRULE]" +cp $DB_HOME/network/admin/$CMANORA $logdir/$CMANORA +grep "$CMANRULE" $logdir/$CMANORA > /dev/null +if [ $? -ne 0 ]; then + error_exit "cman rule ${CMANRULE} not found in cman config file $logdir/$CMANORA. Exiting." +fi + +sh -c "echo $'/${CMANRULE}\n\Ek0\Emk%d\'k\E:x\n' | vi $logdir/$CMANORA" 2>/dev/null + +cp -f $logdir/$CMANORA $DB_HOME/network/admin/ + +reload_cman + +return 0 +} + +copycmanora () +{ +mkdir -p $DB_HOME/network/admin/ +sleep 2 +cp $logdir/$CMANORA $DB_HOME/network/admin/ +chown -R oracle:oinstall $DB_HOME/network/admin/ +#rm -f $logdir/$CMANORA +} + +reload_cman () +{ +local cmd +cmd="$DB_HOME/bin/cmctl reload -c CMAN_$PUBLIC_HOSTNAME.$DOMAIN" +eval $cmd +} + +start_cman () +{ +local cmd +cmd="$DB_HOME/bin/cmctl startup -c CMAN_$PUBLIC_HOSTNAME.$DOMAIN" +eval $cmd +} + +stop_cman () +{ +local cmd +cmaninst=$1 +cmd="$DB_HOME/bin/cmctl shutdown -c $cmaninst" +eval $cmd +} + +status_cman () +{ +local cmd +cmd="$DB_HOME/bin/cmctl show service -c CMAN_$PUBLIC_HOSTNAME.$DOMAIN" +eval $cmd + +if [ $? -eq 0 ];then +print_message "cman [CMAN_$PUBLIC_HOSTNAME.$DOMAIN] started sucessfully" +else + if [ -z "${CMAN_DEBUG}" ]; then + error_exit "Cman [CMAN_$PUBLIC_HOSTNAME.$DOMAIN] startup failed. Exiting" + else + print_message "Cman [CMAN_$PUBLIC_HOSTNAME.$DOMAIN] startup failed. Debug mode" + tail -f /tmp/orod.log + fi +fi +} + + +################################### +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # +############# MAIN ################ +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # +################################### + +######## +#clear_files + +while [ $# -gt 0 ]; do + case "$1" in + -addrule) + action="add" + ;; + -delrule) + action="delete" + ;; + -e) + # envdetail="${1#*=}" + shift + envdetail="$1" + envname=$(echo $envdetail | cut -d"=" -f 1) + envval=$(echo $envdetail | cut -d"=" -f 2-) + echo "name=[$envname]. val=[$envval]" + export $envname=$envval + ;; + *) + error_exit "* Error: Invalid argument [$1] specified.*\n" + esac + shift +done + +####### Populating resolv.conf and /etc/hosts ### +setupEtcResolvConf +SetupEtcHosts +#################### + + +if [ "$action" == "delete" ]; then + del_rule_details=`echo ${RULEDETAILS} | sed -e 's/.*?=\(.*\)/\1/g'` + IFS=':' read -a del_rule_vars <<< "${del_rule_details}" + unsetrulevars + for del_rule_var in "${del_rule_vars[@]}" + do + echo "export ${del_rule_var}" + export ${del_rule_var} + done + + check_rule_env_vars + deleterule + + exit 0 + +fi + +if [ ! -z "${USER_CMAN_FILE}" ]; then + if [ ! -f "${USER_CMAN_FILE}" ]; then + error_exit "User supplied cman.ora file [${USER_CMAN_FILE}] not found. Exiting CMAN-Setup." + else + print_message "Using the user defined cman.ora file=[${USER_CMAN_FILE}]" + ${CP} ${USER_CMAN_FILE} $logdir/$CMANORA + fi +else + all_check + print_message "Generating CMAN file" + cman_file +fi + +print_message "Copying CMAN file to $DB_HOME/network/admin" +copycmanora +if [ "${ENABLE_REST_API}" == "true" ]; then + print_message "REST API enabled. Configuring REST API" + + echo "$ORACLE_HOME/bin/orapki wallet create -wallet $WALLET_LOCATION -pwd ${HIDE_PASSWORD}" + $ORACLE_HOME/bin/orapki wallet create -wallet $WALLET_LOCATION -pwd ${REST_PASSWORD} + + echo "$ORACLE_HOME/bin/orapki wallet add -wallet $WALLET_LOCATION -dn \"CN=$REST_HOST,C=US\" -keysize 2048 -self_signed -validity 365 -pwd ${HIDE_PASSWORD}" + $ORACLE_HOME/bin/orapki wallet add -wallet $WALLET_LOCATION -dn "CN=$REST_HOST,C=US" -keysize 2048 -self_signed -validity 365 -pwd ${REST_PASSWORD} + + echo ${REST_PASSWORD} | $ORACLE_HOME/bin/mkstore -wrl $WALLET_LOCATION -createEntry oracle ${REST_PASSWORD} + + + echo "$ORACLE_HOME/bin/orapki wallet create -wallet $WALLET_LOCATION -auto_login -pwd ${HIDE_PASSWORD}" + $ORACLE_HOME/bin/orapki wallet create -wallet $WALLET_LOCATION -auto_login -pwd ${REST_PASSWORD} + + echo "$ORACLE_HOME/bin/orapki wallet export -wallet $WALLET_LOCATION -dn \"CN=$REST_HOST,C=US\" -cert $WALLET_LOCATION/RESTAPI.cert" + $ORACLE_HOME/bin/orapki wallet export -wallet $WALLET_LOCATION -dn "CN=$REST_HOST,C=US" -cert $WALLET_LOCATION/RESTAPI.cert + + sleep 2 + print_message "Displaying the REST-API certificate" + echo "$ORACLE_HOME/bin/orapki cert display -cert $WALLET_LOCATION/RESTAPI.cert" + $ORACLE_HOME/bin/orapki cert display -cert $WALLET_LOCATION/RESTAPI.cert + print_message "=================================================" + print_message "Copy over $WALLET_LOCATION/RESTAPI.cert to the client host to use the REST API of the Oracle Connection Manager." + print_message "=================================================" + +fi +print_message "Starting CMAN" +start_cman +print_message "Reloading CMAN" +reload_cman +print_message "Checking CMAN Status" +status_cman + +print_message "################################################" +print_message " CONNECTION MANAGER IS READY TO USE! " +print_message "################################################" diff --git a/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/functions.sh b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/functions.sh new file mode 100644 index 0000000000..8563caa622 --- /dev/null +++ b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/functions.sh @@ -0,0 +1,64 @@ +#!/bin/bash +# +############################# +# Copyright (c) 2024, Oracle and/or its affiliates. +# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl +# Author: paramdeep.saini@oracle.com +############################ +# +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +#source /tmp/envfile + +export logfile=/tmp/orod.log +export logdir=/tmp +export STD_OUT_FILE="/proc/self/fd/1" +export STD_ERR_FILE="/proc/self/fd/2" + +###### Function Related to printing messages and exit the script if error occurred ################## +error_exit() { +local NOW=$(date +"%m-%d-%Y %T %Z") + # Display error message and exit +# echo "${PROGNAME}: ${1:-"Unknown Error"}" 1>&2 + echo "${NOW} : ${PROGNAME}: ${1:-"Unknown Error"}" | tee -a $logfile > $STD_OUT_FILE + exit 15 +} + +print_message () +{ + local NOW=$(date +"%m-%d-%Y %T %Z") + # Display message and return + echo "${NOW} : ${PROGNAME} : ${1:-"Unknown Message"}" | tee -a $logfile > $STD_OUT_FILE + return $? +} + +##################################################################################################### + +####### Function related to IP Checks ############################################################### +resolveip(){ + + local host="$1" + if [ -z "$host" ] + then + return 1 + else + local ip=$( getent hosts "$host" | awk '{print $1}' ) + if [ -z "$ip" ] + then + ip=$( dig +short "$host" ) + if [ -z "$ip" ] + then + print_message "unable to resolve '$host'" + return 1 + else + print_message "$ip" + return 0 + fi + else + print_message "$ip" + return 0 + fi + fi +} diff --git a/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/runOracle.sh b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/runOracle.sh new file mode 100644 index 0000000000..7d23f8975e --- /dev/null +++ b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/runOracle.sh @@ -0,0 +1,77 @@ +#!/bin/bash +# +############################# +# Copyright (c) 2024, Oracle and/or its affiliates. +# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl +# Author: paramdeep.saini@oracle.com +############################ +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + + +#env > /tmp/envfile + +#chmod 755 /tmp/envfile +#source /tmp/envfile +source $SCRIPT_DIR/functions.sh + +########### SIGINT handler ############ +function _int() { + echo "Stopping container." +local cmd +cmd="$DB_HOME/bin/cmctl shutdown -c CMAN_$PUBLIC_HOSTNAME.$DOMAIN" +eval $cmd +touch /tmp/stop +} + +########### SIGTERM handler ############ +function _term() { + echo "Stopping container." + echo "SIGTERM received, shutting down!" +local cmd +cmd="$DB_HOME/bin/cmctl shutdown -c CMAN_$PUBLIC_HOSTNAME.$DOMAIN" +eval $cmd +touch /tmp/sigterm +} + +########### SIGKILL handler ############ +function _kill() { + echo "SIGKILL received, shutting down database!" +local cmd +cmd="$DB_HOME/bin/cmctl shutdown -c CMAN_$PUBLIC_HOSTNAME.$DOMAIN" +eval $cmd +touch /tmp/sigkill +} + +################################### +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # +############# MAIN ################ +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # +################################### + +# Set SIGINT handler +trap _int SIGINT + +# Set SIGTERM handler +trap _term SIGTERM + +# Set SIGKILL handler +trap _kill SIGKILL + +############ Removing /tmp/orod.log ##### +print_message "Creating $logfile" +chmod 666 $logfile + +$SCRIPT_DIR/$CONFIG_CMAN_FILE + +if [ $? -eq 0 ];then + print_message "cman started sucessfully" + echo $TRUE +else + error_exit "Cman startup failed!" +fi + +tail -f /tmp/orod.log & +childPID=$! +wait $childPID diff --git a/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/setupDB.sh b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/setupDB.sh new file mode 100644 index 0000000000..ba73880172 --- /dev/null +++ b/OracleDatabase/OracleConnectionManager/containerfiles/26.0.0/setupDB.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# +############################# +# Copyright (c) 2024, Oracle and/or its affiliates. +# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl +# Author: paramdeep.saini@oracle.com +############################ +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +# Create Directories +mkdir -p $DB_BASE +mkdir -p $DB_HOME +mkdir -p $INVENTORY + +chown -R oracle:oinstall $INVENTORY +chown -R oracle:oinstall $DB_BASE +chown -R oracle:oinstall $DB_HOME +chown -R oracle:oinstall $INSTALL_SCRIPTS +chmod 775 $INSTALL_SCRIPTS + +chmod 666 /etc/sudoers +echo "oracle ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers +chmod 440 /etc/sudoers + +echo "export ORACLE_HOME=$DB_HOME" >> /home/oracle/.bashrc +echo "export PATH=$DB_PATH" >> /home/oracle/.bashrc +echo "export LD_LIBRARY_PATH=$DB_LD_LIBRARY_PATH" >> /home/oracle/.bashrc +echo "export SCRIPT_DIR=$SCRIPT_DIR" >> /home/oracle/.bashrc +echo "export DB_HOME=$DB_HOME" >> /home/oracle/.bashrc diff --git a/OracleDatabase/OracleConnectionManager/containerfiles/cman.ora b/OracleDatabase/OracleConnectionManager/containerfiles/cman.ora new file mode 100644 index 0000000000..4a0b9bb1dc --- /dev/null +++ b/OracleDatabase/OracleConnectionManager/containerfiles/cman.ora @@ -0,0 +1,66 @@ +###################################################################### +# +# Copyright (c) 2022 Oracle and/or its affiliates. +# +# NAME +# cman.ora +# +# DESCRIPTION +# Sample CMAN configuration file that the user can modify for their +# own use. +# +# NOTES +# 1. Change to your fully qualified hostname +# 2. Change to the listening port number +# 3. Change and to your log and trace directories +# +# MODIFIED (MM/DD/YYYY) +# asankrut 10/05/2002 - Added Rule List Specifications +# asankrut 06/11/2002 - Modified to add new parameters; added comments. +# asankrut 12/31/2001 - Creation. +# +###################################################################### + +# CMAN Alias +CMAN_racnodepc1-cman.example.info = +(configuration= + # Listening address of the cman + (address=(protocol=tcp)(host=racnodepc1-cman.example.info)(port=1521)) + # Configuration parameters of this CMAN + (parameter_list = + # Need authentication for connection? + # Valid values: boolean values for on/off + (connection_statistics=yes) + (log_directory=/u01/app/oracle/product/26ai/client_1/network/log) + (log_level=user) + (trace_directory=/u01/app/oracle/product/26ai/client_1/network/trace) + (trace_level=user) + (valid_node_checking_registration=on) + (registration_invited_nodes=*) + ) + + # Rule list + + # Rule Specification: + # src = Source of connection; '*' for 'ANY' + # dst = Destination of connection; '*' for 'ANY' + # srv = Service of connection; '*' for 'ANY' + # act = Action: 'accept', 'reject' or 'drop' + + # Action List Specification: + # aut = aso_authentication_filter + # moct = outbound_connect_timeout + # mct = session_timeout + # mit = idle_timeout + # conn_stats = connect_statistics + (rule_list= + (rule= + (src=*)(dst=racnodepc1-scan)(srv=*)(act=accept) + (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on)) + ) + (rule= + (src=*)(dst=racnodep1)(srv=*)(act=accept) + (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on)) + ) + ) +) \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/README.md b/OracleDatabase/RAC/OracleRealApplicationClusters/README.md index a981a6f5d8..fe8a57a6e2 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/README.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/README.md @@ -1,15 +1,15 @@ # Oracle Real Application Clusters in Linux Containers -Learn about container deployment options for Oracle Real Application Clusters (Oracle RAC) Release 21c +Learn about container deployment options for Oracle Real Application Clusters (Oracle RAC) Release 23.26ai ## Overview of Running Oracle RAC in Containers Oracle Real Application Clusters (Oracle RAC) is an option for the award-winning Oracle Database Enterprise Edition. Oracle RAC is a cluster database with a shared cache architecture that overcomes the limitations of traditional shared-nothing and shared-disk approaches to provide highly scalable and available database solutions for all business applications. Oracle RAC uses Oracle Clusterware as a portable cluster software that allows clustering of independent servers so that they cooperate as a single system and Oracle Automatic Storage Management (Oracle ASM) to provide simplified storage management that is consistent across all servers and storage platforms. -Oracle Clusterware and Oracle ASM are part of the Oracle Grid Infrastructure, which bundles both solutions in an easy-to-deploy software package. For more information on Oracle RAC Database 21c refer to the [Oracle Database documentation](http://docs.oracle.com/en/database/). +Oracle Clusterware and Oracle ASM are part of the Oracle Grid Infrastructure, which bundles both solutions in an easy-to-deploy software package. For more information on Oracle RAC Database 23.26ai refer to the [Oracle Database documentation](http://docs.oracle.com/en/database/). -This guide helps you install Oracle RAC on Containers on Host Machines as explained in detail below. With the current release, you prepare the host machine, build or use pre-built Oracle RAC Container Images v21c, and setup Oracle RAC on Single or Multiple Host machines with Oracle ASM. +This guide helps you install Oracle RAC on Containers on Host Machines as explained in detail below. With the current release, you prepare the host machine, build or use pre-built Oracle RAC Container Images, and setup Oracle RAC on Single or Multiple Host machines with Oracle ASM. In this installation guide, we use [Podman](https://docs.podman.io/en/v3.0/) to create Oracle RAC Containers and manage them. ## Using this Documentation @@ -68,8 +68,8 @@ Replace environment variables `-e DNS_SERVERS=10.0.20.25`,`--dns=10.0.20.25`,`-e * The Oracle RAC `Containerfile` does not contain any Oracle software binaries. Download the following software from the [Oracle Technology Network](https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html), if you are planning to build Oracle RAC Container Images in the next section. However, if you are using pre-built RAC Images from the Oracle Container Registry, then you can skip this step. - - Oracle Grid Infrastructure 21c (21) for Linux x86-64 - - Oracle Database 21c (21) for Linux x86-64 + - Oracle Grid Infrastructure 23.26ai for Linux x86-64 + - Oracle Database 23.26ai for Linux x86-64 **Notes** * If the Podman bridge network is not available outside your host, you can use the Oracle Connection Manager [CMAN Container](../OracleConnectionManager/README.md) to access the Oracle RAC Database from outside the host. @@ -79,13 +79,12 @@ However, if you are using pre-built RAC Images from the Oracle Container Registr Oracle RAC is supported for production use on Podman starting with Oracle Database 19c (19.16) and Oracle Database 21c (21.7). You can also deploy Oracle RAC on Podman using the pre-built images available on the Oracle Container Registry. Refer to this [documentation](https://docs.oracle.com/en/operating-systems/oracle-linux/docker/docker-UsingDockerRegistries.html#docker-registry) for details on using Oracle Container Registry. -Example of pulling an Oracle RAC Image from the Oracle Container Registry: +Example of pulling an Oracle RAC Database Image from the Oracle Container Registry: ```bash -# For Oracle RAC Container Image podman pull container-registry.oracle.com/database/rac_ru:latest -podman tag container-registry.oracle.com/database/rac_ru:latest localhost/oracle/database-rac:21c +podman tag container-registry.oracle.com/database/rac_ru:latest localhost/oracle/database-rac:23.26ai ``` -**NOTE** Currently, latest tag in Oracle Container registry represents `21.16.0` tag. If you are pulling any other version of container image, then retag approriately as per your environment to use in `podman create` commands later. +**NOTE:** Currently, latest tag in Oracle Container registry represents `23.26ai` tag. If you are pulling any other version of container image, then retag approriately as per your environment to use in `podman create` commands later. If you are using pre-built Oracle RAC images from the [Oracle Container Registry](https://container-registry.oracle.com), then you can skip the section [Building Oracle RAC Database Container Image](#building-oracle-rac-database-container-image). @@ -94,7 +93,7 @@ If you are using pre-built Oracle RAC images from the [Oracle Container Registry * If you want to build the latest Oracle RAC Image from this Github repository, instead of using a pre-built image, then follow below instructions to build `Oracle RAC Container Image` and `Oracle RAC Container Slim Image`. -* Below section assumes that you have completed all of the prerequisites in [Preparation Steps for running Oracle RAC Database in containers](#preparation-steps-for-running-oracle-rac-database-in-containers) and completed all the steps, based on your environment. +* Below section assumes that you have completed all of the prerequisites in [Preparation Steps for running Oracle RAC Database in containers](#preparation-steps-for-running-oracle-rac-database-in-containers) and completed all the steps, based on your environment. **Note:** Ensure that you do not uncompress the binaries and patches manually before building the Oracle RAC Image. @@ -103,7 +102,7 @@ If you are using pre-built Oracle RAC images from the [Oracle Container Registry * Ensure that you have enough space in `/var/lib/containers` while building the Oracle RAC Image. Also, if required use `export TMPDIR=` for Podman to use another folder as the temporary podman cache location instead of the default `/tmp` location. ### Building Oracle RAC Database Container Image -In this document,an `Oracle RAC Database Container Image` refers to an Oracle RAC Database Container Image with Oracle Grid Infrastructure and Oracle Database Software Binaries installed during Oracle RAC Podman Image creation. The resulting images will contain the Oracle Grid Infrastructure and Oracle RAC Database Software Binaries. +In this document,an `Oracle RAC Database Container Image` refers to an Oracle RAC Database Container Image with Oracle Grid Infrastructure and Oracle Database Software Binaries installed during Oracle RAC Podman Image creation. The resulting images will contain the Oracle Grid Infrastructure and Oracle RAC Database Software Binaries. Before you begin, you must download Oracle Grid Infrastructure and Oracle RDBMS Binaries and stage them under `/docker-images/OracleDatabase/RAC/OracleRealApplicationCluster/containerfiles/`. @@ -111,40 +110,42 @@ Use the below command to build the Oracle RAC Database Container Image: ```bash ./buildContainerImage.sh -v ``` -Example: To build Oracle RAC Database Container Image for version 21.3.0, use below command: +Example: To build Oracle RAC Database Container Image for version 23.26ai(26ai), use below command: ```bash -./buildContainerImage.sh -v 21.3.0 +./buildContainerImage.sh -v 26.0.0 ``` -Retag it as below as we are going to refer this image as `localhost/oracle/database-rac:21c` everywhere: +Retag it as below as we are going to refer this image as `localhost/oracle/database-rac:23.26ai` everywhere: ```bash -podman tag localhost/oracle/database-rac:21.3.0 localhost/oracle/database-rac:21c +podman tag localhost/oracle/database-rac:26.0.0 localhost/oracle/database-rac:23.26ai ``` **Note** : There is a known issue with Oracle Database 19.3.0 that causes compilation to fail, as described in [Doc ID 2760289.1](https://support.oracle.com/knowledge/Oracle%20Database%20Products/2760289_1.html): "19c Database Installation/relink fails with: Error in invoking target 'libasmclntsh19.ohso libasmperl19.ohso client_sharedlib' of makefile ins_rdbms.mk". -As a result, Base 19.3.0 software cannot be directly installed on Oracle Linux 9. The fix is included in version 19.21 and later. Therefore, when building Oracle RAC Database Container Images for 19.3.0, you must use `--build-arg BASE_OL_IMAGE=oraclelinux:8` + +As a result, you cannot install the base 19.3.0 software directly on Oracle Linux 9. The fix is included in version 19.21 and later. Therefore, when building Oracle RAC Database Container Images, you must use `--build-arg BASE_OL_IMAGE=oraclelinux:8`. Example: To build Oracle RAC Database Container Image for version 19.3.0, use below command: ```bash -./buildContainerImage.sh -v 19.3.0 -i -o "--build-arg BASE_OL_IMAGE=oraclelinux:8" +./buildContainerImage.sh -v 19.3.0 -i -o "--build-arg BASE_OL_IMAGE=oraclelinux:8" ``` ### Building Oracle RAC Database Container Slim Image -In this document, an `Oracle RAC Database Container Slim Image` refers to a container image that does not include installation of Oracle Grid Infrastructure and Oracle Database Software Binaries during the Oracle RAC Database Container Image creation. +In this document, an `Oracle RAC Database Container Slim Image` refers to a container image that does not include installation of Oracle Grid Infrastructure and Oracle Database Software Binaries during the Oracle RAC Database Container Image creation. + To build an Oracle RAC Database Container Slim Image that doesn't contain the Oracle Grid infrastructure and Oracle RAC Database software, run the following command: ```bash ./buildContainerImage.sh -v -i -o '--build-arg SLIMMING=true' ``` -Example: To build Oracle RAC Database Container Slim Image for version 21.3.0, use the below command: +Example: To build Oracle RAC Database Container Slim Image for version 23.26ai(26ai), use the below command: ```bash -./buildContainerImage.sh -v 21.3.0 -i -o '--build-arg SLIMMING=true' +./buildContainerImage.sh -v 26.0.0 -i -o '--build-arg SLIMMING=true' ``` To build an Oracle RAC Database Container Slim Image, you need to use `--build-arg SLIMMING=true`. -To change the Base Image during building Oracle RAC Database Container Images, you must use `--build-arg BASE_OL_IMAGE=oraclelinux:8`. +To change the Base Image during building Oracle RAC Database Container Images, you must use `--build-arg BASE_OL_IMAGE=oraclelinux:8`. -Retag it as below as we are going to refer this image as `localhost/oracle/database-rac:21c-slim` everywhere: +Retag it as below as we are going to refer this image as `localhost/oracle/database-rac:23.26ai-slim` everywhere: ```bash -podman tag localhost/oracle/database-rac:21.3.0-slim localhost/oracle/database-rac:21c-slim +podman tag localhost/oracle/database-rac:26.0.0-slim localhost/oracle/database-rac:23.26ai-slim ``` ### Building Oracle RAC Database Container Base Image @@ -152,13 +153,13 @@ In this document, an `Oracle RAC Database Container Base Image` refers to a cont ```bash ./buildContainerImage.sh -v -b ``` -Example: To build Oracle RAC Database Container Base Image for version 21.3.0, use the below command: +Example: To build Oracle RAC Database Container Base Image for version 23.26ai(26ai), use the below command: ```bash -./buildContainerImage.sh -v 21.3.0 -b +./buildContainerImage.sh -v 26.0.0 -b ``` To build an Oracle RAC Database Container Base Image, you need to use `-b`. -To change the Base Image during building Oracle RAC Database Container Images, you must use `--build-arg BASE_OL_IMAGE=oraclelinux:8`. +To change the Base Image during building Oracle RAC Database Container Images, you must use `--build-arg BASE_OL_IMAGE=oraclelinux:9`. **Notes** - Usage of `./buildContainerImage.sh`: @@ -166,9 +167,9 @@ To change the Base Image during building Oracle RAC Database Container Images, y -v: version to build -i: ignore the MD5 checksums -t: user-defined image name and tag (e.g., image_name:tag). Default is set to `oracle/database-rac:` for RAC Image and `oracle/database-rac:-slim` for RAC slim image. - -o: passes on container build option (e.g., --build-arg SLIMMIMG=true for slim,--build-arg BASE_OL_IMAGE=oraclelinux:8 to change base image). The default is "--build-arg SLIMMING=false" + -o: passes on container build option (e.g., --build-arg SLIMMIMG=true for slim,--build-arg BASE_OL_IMAGE=oraclelinux:9 to change base image). The default is "--build-arg SLIMMING=false" ``` -- After building the `21.3.0` Oracle RAC Database Container Image, to apply the 21c RU and build the 21c patched image, refer to [Example of how to create a patched database image](./samples/applypatch/README.md). +- After Oracle RAC Container image is built, you can also apply RU and one-off patches to build the patched image. For Example: After building the `21.3.0` Oracle RAC Database Container Image, to apply the 21c RU and build the 21c patched image, refer to [Example of how to create an Oracle RAC Database Container Patched Image](./samples/applypatch/README.md). - If you are behind a proxy wall, then you must set the `https_proxy` or `http_proxy` environment variable based on your environment before building the image. - In case of the Oracle RAC Database Container Slim Image, the resulting images will not contain the Oracle Grid Infrastructure and Oracle RAC Database Software Binaries. @@ -238,20 +239,19 @@ podman network create -d ipvlan --subnet=192.168.18.0/24 --opt mtu=9000 -o paren ``` ## Password Management - Specify the secret volume for resetting the grid, oracle, and database user password during node creation or node addition. The volume can be a shared volume among all the containers. For example: - ```bash mkdir /opt/.secrets/ ``` - Generate a password file - - Edit the `/opt/.secrets/pwdfile.txt` and seed the password for the grid, oracle, and database users. - - For this deployment scenario, it will be a common password for the grid, oracle, and database users. + + Edit the `/opt/.secrets/pwdfile.txt` and seed the password for the grid, oracle, and database users. + + For this deployment scenario, it will be a common password for the grid, oracle, and database users. Run the below commands: ```bash cd /opt/.secrets - openssl genrsa -out key.pem + openssl genrsa -out key.pem 4096 openssl rsa -in key.pem -out key.pub -pubout openssl pkeyutl -in pwdfile.txt -out pwdfile.enc -pubin -inkey key.pub -encrypt rm -rf /opt/.secrets/pwdfile.txt @@ -320,4 +320,4 @@ All scripts and files hosted in this repository that are required to build the c ## Copyright -Copyright (c) 2014-2025 Oracle and/or its affiliates. \ No newline at end of file +Copyright (c) 2014-2025 Oracle and/or its affiliates. diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/19.3.0/Checksum b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/19.3.0/Checksum index 50e21b2552..cb4a9752e5 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/19.3.0/Checksum +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/19.3.0/Checksum @@ -1,2 +1,2 @@ -1858bd0d281c60f4ddabd87b1c214a4f 19.3.0/LINUX.X64_193000_db_home.zip -b7c4c66f801f92d14faa0d791ccda721 19.3.0/LINUX.X64_193000_grid_home.zip +b7c4c66f801f92d14faa0d791ccda721 19.3.0/LINUX.X64_193000_db_home.zip +1858bd0d281c60f4ddabd87b1c214a4f 19.3.0/LINUX.X64_193000_grid_home.zip diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/19.3.0/dbca1.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/19.3.0/dbca1.rsp index 2810cc645d..5fe56d1e90 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/19.3.0/dbca1.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/19.3.0/dbca1.rsp @@ -200,7 +200,7 @@ useLocalUndoForPDBs=true # Mandatory : No #----------------------------------------------------------------------------- -pdbAdminPassword=Oracle_12c +pdbAdminPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : nodelist @@ -230,7 +230,7 @@ templateName=/u01/app/oracle/product/18.3.0/dbhome_1/assistants/dbca/templates/G # Default value : None # Mandatory : Yes #----------------------------------------------------------------------------- -sysPassword=Oracle_12c +sysPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : systemPassword @@ -240,7 +240,7 @@ sysPassword=Oracle_12c # Default value : None # Mandatory : Yes #----------------------------------------------------------------------------- -systemPassword=Oracle_12c +systemPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : serviceUserPassword @@ -292,7 +292,7 @@ runCVUChecks=true # Mandatory : Yes, if emConfiguration is specified or # the value of runCVUChecks is TRUE #----------------------------------------------------------------------------- -dbsnmpPassword=Oracle_12c +dbsnmpPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : omsHost diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/19.3.0/grid1.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/19.3.0/grid1.rsp index 4e2737c73b..020bf21a82 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/19.3.0/grid1.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/19.3.0/grid1.rsp @@ -354,7 +354,7 @@ oracle.install.asmOnNAS.gimrLocation= #------------------------------------------------------------------------------- # Password for SYS user of Oracle ASM #------------------------------------------------------------------------------- -oracle.install.asm.SYSASMPassword=Oracle_12c +oracle.install.asm.SYSASMPassword=<< YOUR PASSWORD HERE >> #------------------------------------------------------------------------------- # The ASM DiskGroup @@ -450,7 +450,7 @@ oracle.install.asm.diskGroup.diskDiscoveryString=/oradata/asm_* # Password for ASMSNMP account # ASMSNMP account is used by Oracle Enterprise Manager to monitor Oracle ASM instances #------------------------------------------------------------------------------- -oracle.install.asm.monitorPassword=Oracle_12c +oracle.install.asm.monitorPassword=<< YOUR PASSWORD HERE >> #------------------------------------------------------------------------------- # GIMR Storage data ASM DiskGroup diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/21.3.0/Containerfile b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/21.3.0/Containerfile index fd2aaac81b..e61d31209a 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/21.3.0/Containerfile +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/21.3.0/Containerfile @@ -20,7 +20,7 @@ # $ docker build -t oracle/database:21c-rac . -ARG BASE_OL_IMAGE=oraclelinux:8 +ARG BASE_OL_IMAGE=oraclelinux:9 ARG SLIMMING=false # Pull base image # --------------- @@ -294,4 +294,4 @@ ENV INSTALL_SCRIPTS=$INSTALL_DIR/install \ 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 -COPY $VERSION/$ADDNODE_RSP $VERSION/$GRID_INSTALL_RSP $VERSION/$DBCA_RSP $SCRIPT_DIR/ \ No newline at end of file +COPY $VERSION/$ADDNODE_RSP $VERSION/$GRID_INSTALL_RSP $VERSION/$DBCA_RSP $SCRIPT_DIR/ diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/21.3.0/dbca1.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/21.3.0/dbca1.rsp index 2810cc645d..5fe56d1e90 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/21.3.0/dbca1.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/21.3.0/dbca1.rsp @@ -200,7 +200,7 @@ useLocalUndoForPDBs=true # Mandatory : No #----------------------------------------------------------------------------- -pdbAdminPassword=Oracle_12c +pdbAdminPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : nodelist @@ -230,7 +230,7 @@ templateName=/u01/app/oracle/product/18.3.0/dbhome_1/assistants/dbca/templates/G # Default value : None # Mandatory : Yes #----------------------------------------------------------------------------- -sysPassword=Oracle_12c +sysPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : systemPassword @@ -240,7 +240,7 @@ sysPassword=Oracle_12c # Default value : None # Mandatory : Yes #----------------------------------------------------------------------------- -systemPassword=Oracle_12c +systemPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : serviceUserPassword @@ -292,7 +292,7 @@ runCVUChecks=true # Mandatory : Yes, if emConfiguration is specified or # the value of runCVUChecks is TRUE #----------------------------------------------------------------------------- -dbsnmpPassword=Oracle_12c +dbsnmpPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : omsHost diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/21.3.0/grid1.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/21.3.0/grid1.rsp index 4e2737c73b..020bf21a82 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/21.3.0/grid1.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/21.3.0/grid1.rsp @@ -354,7 +354,7 @@ oracle.install.asmOnNAS.gimrLocation= #------------------------------------------------------------------------------- # Password for SYS user of Oracle ASM #------------------------------------------------------------------------------- -oracle.install.asm.SYSASMPassword=Oracle_12c +oracle.install.asm.SYSASMPassword=<< YOUR PASSWORD HERE >> #------------------------------------------------------------------------------- # The ASM DiskGroup @@ -450,7 +450,7 @@ oracle.install.asm.diskGroup.diskDiscoveryString=/oradata/asm_* # Password for ASMSNMP account # ASMSNMP account is used by Oracle Enterprise Manager to monitor Oracle ASM instances #------------------------------------------------------------------------------- -oracle.install.asm.monitorPassword=Oracle_12c +oracle.install.asm.monitorPassword=<< YOUR PASSWORD HERE >> #------------------------------------------------------------------------------- # GIMR Storage data ASM DiskGroup diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/Checksum b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/Checksum new file mode 100644 index 0000000000..cbbed2ad03 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/Checksum @@ -0,0 +1,2 @@ +c7c2e8f71d37308b7a850739d8af289e LINUX.X64_260000_grid_home.zip +f3b8ed1a1e6cbb107eb906e0f2acf7ea LINUX.X64_260000_db_home.zip diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/Containerfile b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/Containerfile new file mode 100644 index 0000000000..38dbca478b --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/Containerfile @@ -0,0 +1,282 @@ +# LICENSE UPL 1.0 +# +# Copyright (c) 2018,2022 Oracle and/or its affiliates. +# +# ORACLE CONTAINERFILES PROJECT +# -------------------------- +# This is the Containerfile for Oracle Database 26ai Release 3 Real Application Clusters to build the container image +# +# REQUIRED FILES TO BUILD THIS IMAGE +# ---------------------------------- +# (1) LINUX.X64_260000_db_home.zip +# (2) LINUX.X64_260000_grid_home.zip +# Download Oracle Grid 26ai Release 4 Enterprise Edition for Linux x64 +# Download Oracle Database 26ai Release 4 Enterprise Edition for Linux x64 +# from http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html +# +# HOW TO BUILD THIS IMAGE +# ----------------------- +# Run: +# $ podman build -t oracle/database:26.0.0-rac . +# +ARG SLIMMING=false +ARG BASE_OL_IMAGE=oraclelinux:9 +# Pull base image +# --------------- +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_260000_grid_home.zip" +ARG INSTALL_FILE_2="LINUX.X64_260000_db_home.zip" +ARG DB_EDITION="EE" +ARG USER="root" +ARG WORKDIR="/raconcontainers" + +# 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_SETUP_FILE="setupGrid.sh" \ + INITSH="initsh" \ + WORKDIR=$WORKDIR \ + GRID_SAMPLE_RESPONSE_FILE="grid_26ai.rsp" \ + DBCA_SAMPLE_RESPONSE_FILE="dbca_26ai.rsp" \ + 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 \ + GRID_USER_HOME="/home/grid" \ + SETUPGRIDENV="setupGridEnv.sh" \ + RESET_OS_PASSWORD="resetOSPassword.sh" \ +# RAC DB Env Variables + 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" \ + ORAASMCA="oraasmca.py" \ + CMDEXEC="cmdExec" \ + SETUPSSH="setupSSH.expect" \ + ORAMACHINE="oramachine.py" \ + ORALOGGER="oralogger.py" \ + ORAFACTORY="orafactory.py" \ + ORACVU="oracvu.py" \ + ORAGIADD="oragiadd.py" \ + ORARACDEL="oraracdel.py" \ + ORARACSTDBY="oraracstdby.py" \ + ORAENV="oraenv.py" \ + ORARACPROV="oraracprov.py" \ + MAINPY="main.py" \ + ORAMISCOPS="oramiscops.py" \ + ORAGIPROV="oragiprov.py" \ + ORARACADD="oraracadd.py" \ + ORACOMMON="oracommon.py" \ + ORASSHSETUP="orasshsetup.py" \ + ORASETUPENV="orasetupenv.py" \ + DB_USER="oracle" \ + GRID_USER="grid" \ + SLIMMING=$SLIMMING \ + COMMON_SCRIPTS="/common_scripts" \ + CHECK_SPACE_FILE="checkSpace.sh" \ + EXPECT="/usr/bin/expect" \ + RESET_FAILED_UNITS="resetFailedUnits.sh" \ + BIN="/usr/sbin" + +############################################# +# ------------------------------------------- +# 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/26ai/grid \ + DB_BASE=/u01/app/oracle \ + DB_HOME=/u01/app/oracle/product/26ai/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 + +# 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/$GRID_SAMPLE_RESPONSE_FILE $VERSION/$DBCA_SAMPLE_RESPONSE_FILE $VERSION/$INITSH $SCRIPT_DIR/ + +COPY $RAC_SCRIPTS_DIR/$ORAFACTORY $RAC_SCRIPTS_DIR/$MAINPY $RAC_SCRIPTS_DIR/$ORAASMCA $RAC_SCRIPTS_DIR/$CMDEXEC $RAC_SCRIPTS_DIR/$SETUPSSH $RAC_SCRIPTS_DIR/$ORAMACHINE $RAC_SCRIPTS_DIR/$ORALOGGER $RAC_SCRIPTS_DIR/$ORAFACTORY $RAC_SCRIPTS_DIR/$ORAGIADD $RAC_SCRIPTS_DIR/$ORARACDEL $RAC_SCRIPTS_DIR/$ORARACSTDBY $RAC_SCRIPTS_DIR/$ORAENV $RAC_SCRIPTS_DIR/$ORARACPROV $RAC_SCRIPTS_DIR/$ORACVU $RAC_SCRIPTS_DIR/$MAINPY $RAC_SCRIPTS_DIR/$ORAMISCOPS $RAC_SCRIPTS_DIR/$ORAGIPROV $RAC_SCRIPTS_DIR/$ORARACADD $RAC_SCRIPTS_DIR/$ORACOMMON $RAC_SCRIPTS_DIR/$ORASSHSETUP $RAC_SCRIPTS_DIR/$ORASETUPENV $VERSION/$RESET_FAILED_UNITS $SCRIPT_DIR/scripts/ + + +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 && \ + rm -rf $DB_HOME/.patch_storage $DB_HOME/.opatchauto_storage $GRID_HOME/.patch_storage $GRID_HOME/.opatchauto_storage && \ + sync + +############################################# +# ------------------------------------------- +# Start new stage for slim image +# ------------------------------------------- +############################################# +FROM base AS rac-image-slim-true +ARG SLIMMING +ARG VERSION +# 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/$GRID_SAMPLE_RESPONSE_FILE $VERSION/$DBCA_SAMPLE_RESPONSE_FILE $VERSION/$INITSH $SCRIPT_DIR/ + +COPY $RAC_SCRIPTS_DIR/$ORAFACTORY $RAC_SCRIPTS_DIR/$MAINPY $RAC_SCRIPTS_DIR/$ORAASMCA $RAC_SCRIPTS_DIR/$CMDEXEC $RAC_SCRIPTS_DIR/$SETUPSSH $RAC_SCRIPTS_DIR/$ORAMACHINE $RAC_SCRIPTS_DIR/$ORALOGGER $RAC_SCRIPTS_DIR/$ORAFACTORY $RAC_SCRIPTS_DIR/$ORAGIADD $RAC_SCRIPTS_DIR/$ORARACDEL $RAC_SCRIPTS_DIR/$ORARACSTDBY $RAC_SCRIPTS_DIR/$ORAENV $RAC_SCRIPTS_DIR/$ORARACPROV $RAC_SCRIPTS_DIR/$ORACVU $RAC_SCRIPTS_DIR/$MAINPY $RAC_SCRIPTS_DIR/$ORAMISCOPS $RAC_SCRIPTS_DIR/$ORAGIPROV $RAC_SCRIPTS_DIR/$ORARACADD $RAC_SCRIPTS_DIR/$ORACOMMON $RAC_SCRIPTS_DIR/$ORASSHSETUP $RAC_SCRIPTS_DIR/$ORASETUPENV $VERSION/$RESET_FAILED_UNITS $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 && \ + rm -rf $DB_HOME/.patch_storage $DB_HOME/.opatchauto_storage $GRID_HOME/.patch_storage $GRID_HOME/.opatchauto_storage && \ + 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/$DB_SETUP_FILE $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/ + +RUN chmod 755 $INSTALL_SCRIPTS/*.sh + +## Install software if SLIMMING is false +USER ${GRID_USER} +RUN if [ "${SLIMMING}x" != 'truex' ]; then \ + $INSTALL_DIR/install/$INSTALL_GRID_BINARIES_FILE EE $PATCH_NUMBER && \ + $INSTALL_SCRIPTS/$GRID_HOME_CLEANUP && \ + :;\ + fi +USER ${USER} +RUN if [ "${SLIMMING}x" != 'truex' ]; then \ + $INVENTORY/orainstRoot.sh && \ + $GRID_HOME/root.sh && \ + :;\ + fi +USER ${DB_USER} +RUN if [ "${SLIMMING}x" != 'truex' ]; then \ + $INSTALL_DIR/install/$INSTALL_DB_BINARIES_FILE EE && \ + $INSTALL_DIR/install/$ENABLE_RAC_FILE && \ + $INSTALL_SCRIPTS/$ORACLE_HOME_CLEANUP && \ + :;\ + fi + +USER ${USER} +RUN if [ "${SLIMMING}x" != 'truex' ]; then \ + $INVENTORY/orainstRoot.sh && \ + $DB_HOME/root.sh && \ + :; \ + fi +# hadolint ignore=SC3014 +USER ${USER} +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 +ENV GRID_BASE=/u01/app/grid \ + GRID_HOME=/u01/app/26ai/grid \ + DB_BASE=/u01/app/oracle \ + DB_HOME=/u01/app/oracle/product/26ai/dbhome_1 +RUN rm -rf $DB_HOME/.patch_storage $DB_HOME/.opatchauto_storage $GRID_HOME/.patch_storage $GRID_HOME/.opatchauto_storage +# 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 && \ + 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 $INSTALL_DIR/install/* && \ + rm -rf $DB_HOME/.patch_storage $DB_HOME/.opatchauto_storage $GRID_HOME/.patch_storage $GRID_HOME/.opatchauto_storage && \ + sync + +USER ${USER} +VOLUME ["/common_scripts"] +WORKDIR $WORKDIR + +# Define default command to start Oracle Grid and RAC Database setup. + +# Define default command to start Oracle Grid and RAC Database setup. +# hadolint ignore=DL3025 +ENTRYPOINT /usr/bin/$INITSH \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/GridHomeCleanup.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/GridHomeCleanup.sh new file mode 100644 index 0000000000..d5e8b4b0f4 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/GridHomeCleanup.sh @@ -0,0 +1,59 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 2019,2021 Oracle and/or its affiliates. +# +# Since: January, 2019 +# Author: paramdeep.saini@oracle.com +# 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 + +source /home/"${GRID_USER}"/.bashrc + +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/* diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/OracleHomeCleanup.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/OracleHomeCleanup.sh new file mode 100644 index 0000000000..355209f4ef --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/OracleHomeCleanup.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 2019,2021 Oracle and/or its affiliates. +# +# Since: January, 2019 +# Author: sanjay.singh@oracle.com, paramdeep.saini@oracle.com +# 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 + +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/* diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/applyGridPatch.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/applyGridPatch.sh new file mode 100644 index 0000000000..21f3d8399b --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/applyGridPatch.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 2018,2021 Oracle and/or its affiliates. +# +# Since: January, 2018 +# Author: sanjay.singh@oracle.com, paramdeep.saini@oracle.com +# Description: Apply Patch for Oracle Grid and Databas. +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +PATCH=$1 + +# Check whether edition has been passed on +if [ "$PATCH" == "" ]; then + echo "ERROR: No Patch has been passed on!" + echo "Please specify the correct PATCH!" + exit 1; +fi; + +# Check whether GRID_BASE is set +if [ "$GRID_BASE" == "" ]; then + echo "ERROR: GRID_BASE has not been set!" + echo "You have to have the GRID_BASE environment variable set to a valid value!" + exit 1; +fi; + +# Check whether GRID_HOME is set +if [ "$GRID_HOME" == "" ]; then + echo "ERROR: GRID_HOME has not been set!" + echo "You have to have the GRID_HOME environment variable set to a valid value!" + exit 1; +fi; + +# Install Oracle binaries + +unzip -q "$INSTALL_SCRIPTS"/"$PATCH" -d "$GRID_USER_HOME" && \ +rm -f "$INSTALL_SCRIPTS"/"$GRID_PATCH" && \ +cd "$GRID_USER_HOME"/"$PATCH_NUMBER"/"$PATCH_NUMBER" && \ +"$GRID_HOME"/OPatch/opatch napply -silent -local -oh "$GRID_HOME" -id "$PATCH_NUMBER" && \ +cd "$GRID_USER_HOME" && \ +rm -rf "$GRID_USER_HOME"/"$PATCH_NUMBER" diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/checkSpace.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/checkSpace.sh new file mode 100644 index 0000000000..ed0a65d35c --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/checkSpace.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 2018,2021 Oracle and/or its affiliates. +# +# Since: January, 2018 +# Author: sanjay.singh@oracle.com, paramdeep.saini@oracle.com +# Description: Checks the available space of the system. +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +REQUIRED_SPACE_GB=35 +AVAILABLE_SPACE_GB=`df -PB 1G / | tail -n 1 | awk '{print $4}'` + +#if [ $AVAILABLE_SPACE_GB -lt $REQUIRED_SPACE_GB ]; then +# script_name=`basename "$0"` +# echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" +# echo "$script_name: ERROR - There is not enough space available in the docker container." +# echo "$script_name: The container needs at least $REQUIRED_SPACE_GB GB , but only $AVAILABLE_SPACE_GB available." +# echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" +# exit 1; +#fi; diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/dbca_26ai.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/dbca_26ai.rsp new file mode 100644 index 0000000000..d015df77d6 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/dbca_26ai.rsp @@ -0,0 +1,601 @@ +############################################################################## +## ## +## DBCA response file ## +## ------------------ ## +## Copyright(c) Oracle Corporation 1998,2024. All rights reserved. ## +## ## +## Specify values for the variables listed below to customize ## +## your installation. ## +## ## +## Each variable is associated with a comment. The comment ## +## can help to populate the variables with the appropriate ## +## values. ## +## ## +## IMPORTANT NOTE: This file contains plain text passwords and ## +## should be secured to have read permission only by oracle user ## +## or db administrator who owns this installation. ## +############################################################################## +#------------------------------------------------------------------------------- +# Do not change the following system generated value. +#------------------------------------------------------------------------------- +responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v23.0.0 + +#----------------------------------------------------------------------------- +# Name : gdbName +# Datatype : String +# Description : Global database name of the database +# Valid values : . - when database domain isn't NULL +# - when database domain is NULL +# Default value : None +# Mandatory : Yes +#----------------------------------------------------------------------------- +gdbName= + +#----------------------------------------------------------------------------- +# Name : sid +# Datatype : String +# Description : System identifier (SID) of the database +# Valid values : Check Oracle23c Administrator's Guide +# Default value : specified in GDBNAME +# Mandatory : No +#----------------------------------------------------------------------------- +sid= + +#----------------------------------------------------------------------------- +# Name : databaseConfigType +# Datatype : String +# Description : database conf type as Single Instance, Real Application Cluster or Real Application Cluster One Nodes database +# Valid values : SI\RAC\RACONENODE +# Default value : SI +# Mandatory : No +#----------------------------------------------------------------------------- +databaseConfigType= + +#----------------------------------------------------------------------------- +# Name : RACOneNodeServiceName +# Datatype : String +# Description : Service is required by application to connect to RAC One +# Node Database +# Valid values : Service Name +# Default value : None +# Mandatory : No [required in case DATABASECONFTYPE is set to RACONENODE ] +#----------------------------------------------------------------------------- +RACOneNodeServiceName= + +#----------------------------------------------------------------------------- +# Name : policyManaged +# Datatype : Boolean +# Description : Set to true if Database is policy managed and +# set to false if Database is admin managed +# Valid values : TRUE\FALSE +# Default value : FALSE +# Mandatory : No +#----------------------------------------------------------------------------- +policyManaged= + +#----------------------------------------------------------------------------- +## Name : managementPolicy +## Datatype : String +## Description : Set to AUTOMATIC or RANK based on management policy value +## Valid values : AUTOMATIC\RANK +## Default value : AUTOMATIC +## Mandatory : No +##----------------------------------------------------------------------------- +managementPolicy= + +#----------------------------------------------------------------------------- +# Name : createServerPool +# Datatype : Boolean +# Description : Set to true if new server pool need to be created for database +# if this option is specified then the newly created database +# will use this newly created serverpool. +# Multiple serverpoolname can not be specified for database +# Valid values : TRUE\FALSE +# Default value : FALSE +# Mandatory : No +#----------------------------------------------------------------------------- +createServerPool= + +#----------------------------------------------------------------------------- +# Name : serverPoolName +# Datatype : String +# Description : Only one serverpool name need to be specified +# if Create Server Pool option is specified. +# Comma-separated list of Serverpool names if db need to use +# multiple Server pool +# Valid values : ServerPool name + +# Default value : None +# Mandatory : No [required in case of RAC service centric database] +#----------------------------------------------------------------------------- +serverPoolName= + +#----------------------------------------------------------------------------- +# Name : cardinality +# Datatype : Number +# Description : Specify Cardinality for create server pool operation + +# Valid values : any positive Integer value +# Default value : Number of qualified nodes on cluster +# Mandatory : No [Required when a new serverpool need to be created] +#----------------------------------------------------------------------------- +cardinality= + +#----------------------------------------------------------------------------- +# Name : force +# Datatype : Boolean +# Description : Set to true if new server pool need to be created by force +# if this option is specified then the newly created serverpool +# will be assigned server even if no free servers are available. +# This may affect already running database. +# This flag can be specified for Admin managed as well as policy managed db. +# Valid values : TRUE\FALSE +# Default value : FALSE +# Mandatory : No +#----------------------------------------------------------------------------- +force= + +#----------------------------------------------------------------------------- +# Name : pqPoolName +# Datatype : String +# Description : Only one serverpool name needs to be specified +# if create server pool option is specified. +# Comma-separated list of serverpool names if use +# server pool. This is required to +# create Parallel Query (PQ) database. Applicable to Big Cluster +# Valid values : Parallel Query (PQ) pool name +# Default value : None +# Mandatory : No [required in case of RAC service centric database] +#----------------------------------------------------------------------------- +pqPoolName= + +#----------------------------------------------------------------------------- +# Name : pqCardinality +# Datatype : Number +# Description : Specify Cardinality for create server pool operation. +# Applicable to Big Cluster +# Valid values : any positive Integer value +# Default value : Number of qualified nodes on cluster +# Mandatory : No [Required when a new serverpool need to be created] +#----------------------------------------------------------------------------- +pqCardinality= + +#----------------------------------------------------------------------------- +# Name : createAsContainerDatabase +# Datatype : boolean +# Description : flag to create database as container database +# Valid values : Check Oracle23c Administrator's Guide +# Default value : false +# Mandatory : No +#----------------------------------------------------------------------------- +createAsContainerDatabase= + +#----------------------------------------------------------------------------- +# Name : numberOfPDBs +# Datatype : Number +# Description : Specify the number of pdb to be created +# Valid values : 0 to 4094 +# Default value : 0 +# Mandatory : No +#----------------------------------------------------------------------------- +numberOfPDBs= + +#----------------------------------------------------------------------------- +# Name : pdbName +# Datatype : String +# Description : Specify the pdbname/pdbanme prefix if one or more pdb need to be created +# Valid values : Check Oracle23c Administrator's Guide +# Default value : None +# Mandatory : No +#----------------------------------------------------------------------------- +pdbName= + +#----------------------------------------------------------------------------- +# Name : useLocalUndoForPDBs +# Datatype : boolean +# Description : Flag to create local undo tablespace for all PDB's. +# Valid values : TRUE\FALSE +# Default value : TRUE +# Mandatory : No +#----------------------------------------------------------------------------- +useLocalUndoForPDBs= + +#----------------------------------------------------------------------------- +# Name : pdbAdminPassword +# Datatype : String +# Description : PDB Administrator user password +# Valid values : Check Oracle23c Administrator's Guide +# Default value : None +# Mandatory : No +#----------------------------------------------------------------------------- +pdbAdminPassword= + +#----------------------------------------------------------------------------- +# Name : nodelist +# Datatype : String +# Description : Comma-separated list of cluster nodes +# Valid values : Cluster node names +# Default value : None +# Mandatory : No (Yes for RAC database-centric database ) +#----------------------------------------------------------------------------- +nodelist= + +#----------------------------------------------------------------------------- +# Name : templateName +# Datatype : String +# Description : Name of the template +# Valid values : Template file name +# Default value : None +# Mandatory : Yes +#----------------------------------------------------------------------------- +templateName= + +#----------------------------------------------------------------------------- +# Name : sysPassword +# Datatype : String +# Description : Password for SYS user +# Valid values : Check Oracle23c Administrator's Guide +# Default value : None +# Mandatory : Yes +#----------------------------------------------------------------------------- +sysPassword= + +#----------------------------------------------------------------------------- +# Name : systemPassword +# Datatype : String +# Description : Password for SYSTEM user +# Valid values : Check Oracle23c Administrator's Guide +# Default value : None +# Mandatory : Yes +#----------------------------------------------------------------------------- +systemPassword= + +#----------------------------------------------------------------------------- +# Name : oracleHomeUserPassword +# Datatype : String +# Description : Password for Windows Service user +# Default value : None +# Mandatory : If Oracle home is installed with windows service user +#----------------------------------------------------------------------------- +oracleHomeUserPassword= + +#----------------------------------------------------------------------------- +# Name : emConfiguration +# Datatype : String +# Description : Enterprise Manager Configuration Type +# Valid values : CENTRAL|NONE +# Default value : NONE +# Mandatory : No +#----------------------------------------------------------------------------- +emConfiguration= + +#----------------------------------------------------------------------------- +# Name : runCVUChecks +# Datatype : Boolean +# Description : Specify whether to run Cluster Verification Utility checks +# periodically in Cluster environment +# Valid values : TRUE\FALSE +# Default value : FALSE +# Mandatory : No +#----------------------------------------------------------------------------- +runCVUChecks= + +#----------------------------------------------------------------------------- +# Name : dbsnmpPassword +# Datatype : String +# Description : Password for DBSNMP user +# Valid values : Check Oracle23c Administrator's Guide +# Default value : None +# Mandatory : Yes, if emConfiguration is specified or +# the value of runCVUChecks is TRUE +#----------------------------------------------------------------------------- +dbsnmpPassword= + +#----------------------------------------------------------------------------- +# Name : omsHost +# Datatype : String +# Description : EM management server host name +# Default value : None +# Mandatory : Yes, if CENTRAL is specified for emConfiguration +#----------------------------------------------------------------------------- +omsHost= + +#----------------------------------------------------------------------------- +# Name : omsPort +# Datatype : Number +# Description : EM management server port number +# Default value : None +# Mandatory : Yes, if CENTRAL is specified for emConfiguration +#----------------------------------------------------------------------------- +omsPort= + +#----------------------------------------------------------------------------- +# Name : emUser +# Datatype : String +# Description : EM Admin username to add or modify targets +# Default value : None +# Mandatory : Yes, if CENTRAL is specified for emConfiguration +#----------------------------------------------------------------------------- +emUser= + +#----------------------------------------------------------------------------- +# Name : emPassword +# Datatype : String +# Description : EM Admin user password +# Default value : None +# Mandatory : Yes, if CENTRAL is specified for emConfiguration +#----------------------------------------------------------------------------- +emPassword= + +#----------------------------------------------------------------------------- +# Name : dvConfiguration +# Datatype : Boolean +# Description : Specify "True" to configure and enable Oracle Database vault +# Valid values : True/False +# Default value : False +# Mandatory : No +#----------------------------------------------------------------------------- +dvConfiguration= + +#----------------------------------------------------------------------------- +# Name : dvUserName +# Datatype : String +# Description : DataVault Owner +# Valid values : Check Oracle23c Administrator's Guide +# Default value : None +# Mandatory : Yes, if DataVault option is chosen +#----------------------------------------------------------------------------- +dvUserName= + +#----------------------------------------------------------------------------- +# Name : dvUserPassword +# Datatype : String +# Description : Password for DataVault Owner +# Valid values : Check Oracle23c Administrator's Guide +# Default value : None +# Mandatory : Yes, if DataVault option is chosen +#----------------------------------------------------------------------------- +dvUserPassword= + +#----------------------------------------------------------------------------- +# Name : dvAccountManagerName +# Datatype : String +# Description : DataVault Account Manager +# Valid values : Check Oracle23c Administrator's Guide +# Default value : None +# Mandatory : No +#----------------------------------------------------------------------------- +dvAccountManagerName= + +#----------------------------------------------------------------------------- +# Name : dvAccountManagerPassword +# Datatype : String +# Description : Password for DataVault Account Manager +# Valid values : Check Oracle23c Administrator's Guide +# Default value : None +# Mandatory : No +#----------------------------------------------------------------------------- +dvAccountManagerPassword= + +#----------------------------------------------------------------------------- +# Name : olsConfiguration +# Datatype : Boolean +# Description : Specify "True" to configure and enable Oracle Label Security +# Valid values : True/False +# Default value : False +# Mandatory : No +#----------------------------------------------------------------------------- +olsConfiguration= + +#----------------------------------------------------------------------------- +# Name : datafileJarLocation +# Datatype : String +# Description : Location of the data file jar +# Valid values : Directory containing compressed datafile jar +# Default value : None +# Mandatory : No +#----------------------------------------------------------------------------- +datafileJarLocation= + +#----------------------------------------------------------------------------- +# Name : datafileDestination +# Datatype : String +# Description : Location of the data file's +# Valid values : Directory for all the database files +# Default value : $ORACLE_BASE/oradata +# Mandatory : No +#----------------------------------------------------------------------------- +datafileDestination= + +#----------------------------------------------------------------------------- +# Name : recoveryAreaDestination +# Datatype : String +# Description : Location of the data file's +# Valid values : Recovery Area location +# Default value : $ORACLE_BASE/flash_recovery_area +# Mandatory : No +#----------------------------------------------------------------------------- +recoveryAreaDestination= + +#----------------------------------------------------------------------------- +# Name : storageType +# Datatype : String +# Description : Specifies the storage on which the database is to be created +# Valid values : FS (CFS for RAC), ASM +# Default value : FS +# Mandatory : No +#----------------------------------------------------------------------------- +storageType= + +#----------------------------------------------------------------------------- +# Name : diskGroupName +# Datatype : String +# Description : Specifies the disk group name for the storage +# Default value : DATA +# Mandatory : No +#----------------------------------------------------------------------------- +diskGroupName= + +#----------------------------------------------------------------------------- +# Name : asmsnmpPassword +# Datatype : String +# Description : Password for ASM Monitoring +# Default value : None +# Mandatory : No +#----------------------------------------------------------------------------- +asmsnmpPassword= + +#----------------------------------------------------------------------------- +# Name : recoveryGroupName +# Datatype : String +# Description : Specifies the disk group name for the recovery area +# Default value : RECOVERY +# Mandatory : No +#----------------------------------------------------------------------------- +recoveryGroupName= + +#----------------------------------------------------------------------------- +# Name : characterSet +# Datatype : String +# Description : Character set of the database +# Valid values : Check Oracle23c National Language Support Guide +# Default value : "US7ASCII" +# Mandatory : NO +#----------------------------------------------------------------------------- +characterSet= + +#----------------------------------------------------------------------------- +# Name : nationalCharacterSet +# Datatype : String +# Description : National Character set of the database +# Valid values : "UTF8" or "AL16UTF16". For details, check Oracle23c National Language Support Guide +# Default value : "AL16UTF16" +# Mandatory : No +#----------------------------------------------------------------------------- +nationalCharacterSet= + +#----------------------------------------------------------------------------- +# Name : registerWithDirService +# Datatype : Boolean +# Description : Specifies whether to register with Directory Service. +# Valid values : TRUE \ FALSE +# Default value : FALSE +# Mandatory : No +#----------------------------------------------------------------------------- +registerWithDirService= + + +#----------------------------------------------------------------------------- +# Name : dirServiceUserName +# Datatype : String +# Description : Specifies the name of the directory service user +# Mandatory : YES, if the value of registerWithDirService is TRUE +#----------------------------------------------------------------------------- +dirServiceUserName= + +#----------------------------------------------------------------------------- +# Name : dirServicePassword +# Datatype : String +# Description : The password of the directory service user. +# You can also specify the password at the command prompt instead of here. +# Mandatory : YES, if the value of registerWithDirService is TRUE +#----------------------------------------------------------------------------- +dirServicePassword= + +#----------------------------------------------------------------------------- +# Name : walletPassword +# Datatype : String +# Description : The password for wallet to created or modified. +# You can also specify the password at the command prompt instead of here. +# Mandatory : YES, if the value of registerWithDirService is TRUE +#----------------------------------------------------------------------------- +walletPassword= + +#----------------------------------------------------------------------------- +# Name : listeners +# Datatype : String +# Description : Specifies list of listeners to register the database with. +# By default the database is configured for all the listeners specified in the +# ORACLE_HOME/network/admin/listener.ora +# Valid values : The list should be comma separated like "listener1,listener2". +# Mandatory : NO +#----------------------------------------------------------------------------- +listeners= + +#----------------------------------------------------------------------------- +# Name : variablesFile +# Datatype : String +# Description : Location of the file containing variable value pair +# Valid values : A valid file-system file. The variable value pair format in this file +# is =. Each pair should be in a new line. +# Default value : None +# Mandatory : NO +#----------------------------------------------------------------------------- +variablesFile= + +#----------------------------------------------------------------------------- +# Name : variables +# Datatype : String +# Description : comma separated list of name=value pairs. Overrides variables defined in variablefile and templates +# Default value : None +# Mandatory : NO +#----------------------------------------------------------------------------- +variables= + +#----------------------------------------------------------------------------- +# Name : initParams +# Datatype : String +# Description : comma separated list of name=value pairs. Overrides initialization parameters defined in templates +# Default value : None +# Mandatory : NO +#----------------------------------------------------------------------------- +initParams= + +#----------------------------------------------------------------------------- +# Name : sampleSchema +# Datatype : Boolean +# Description : Specifies whether or not to add the Sample Schemas to your database +# Valid values : TRUE \ FALSE +# Default value : FALSE +# Mandatory : No +#----------------------------------------------------------------------------- +sampleSchema= + +#----------------------------------------------------------------------------- +# Name : memoryPercentage +# Datatype : String +# Description : percentage of physical memory for Oracle +# Default value : None +# Mandatory : NO +#----------------------------------------------------------------------------- +memoryPercentage= + +#----------------------------------------------------------------------------- +# Name : databaseType +# Datatype : String +# Description : used for memory distribution when memoryPercentage specified +# Valid values : MULTIPURPOSE|DATA_WAREHOUSING|OLTP +# Default value : MULTIPURPOSE +# Mandatory : NO +#----------------------------------------------------------------------------- +databaseType= + +#----------------------------------------------------------------------------- +# Name : automaticMemoryManagement +# Datatype : Boolean +# Description : flag to indicate Automatic Memory Management is used +# Valid values : TRUE/FALSE +# Default value : TRUE +# Mandatory : NO +#----------------------------------------------------------------------------- +automaticMemoryManagement= + +#----------------------------------------------------------------------------- +# Name : totalMemory +# Datatype : String +# Description : total memory in MB to allocate to Oracle +# Valid values : +# Default value : +# Mandatory : NO +#----------------------------------------------------------------------------- +totalMemory= diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/enableRAC.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/enableRAC.sh new file mode 100644 index 0000000000..88cab2c245 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/enableRAC.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 2018,2021 Oracle and/or its affiliates. +# +# Since: January, 2018 +# Author: sanjay.singh@oracle.com, paramdeep.saini@oracle.com +# Description: Enable RAC feature in Oracle Software +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + +source /home/"${DB_USER}"/.bashrc + +export ORACLE_HOME=${DB_HOME} +export PATH=${ORACLE_HOME}/bin:/bin:/sbin:/usr/bin +export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:/lib:/usr/lib + +make -f "$DB_HOME"/rdbms/lib/ins_rdbms.mk rac_on +make -f "$DB_HOME"/rdbms/lib/ins_rdbms.mk ioracle diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/fixupPreq.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/fixupPreq.sh new file mode 100644 index 0000000000..f4f481f69a --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/fixupPreq.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 2018,2021 Oracle and/or its affiliates. +# +# Since: January, 2018 +# Author: sanjay.singh@oracle.com, paramdeep.saini@oracle.com +# Description: Setup the Linux kernel parameter inside the container. Note that some parameter need to be set on container host. +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + +if ls $GRID_HOME/cv/rpm/cvuqdisk* > /dev/null 2>&1; then + rpm -Uvh "$GRID_HOME/cv/rpm/cvuqdisk*" +fi +#echo "ulimit -S -s 10240" >> /home/grid/.bashrc +#echo "ulimit -S -s 10240" >> /home/oracle/.bashrc diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/grid_26ai.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/grid_26ai.rsp new file mode 100644 index 0000000000..3f57a475fb --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/grid_26ai.rsp @@ -0,0 +1,716 @@ +############################################################################### +## Copyright(c) Oracle Corporation 1998,2024. All rights reserved. ## +## ## +## Specify values for the variables listed below to customize ## +## your installation. ## +## ## +## Each variable is associated with a comment. The comment ## +## can help to populate the variables with the appropriate ## +## values. ## +## ## +## IMPORTANT NOTE: This file contains plain text passwords and ## +## should be secured to have read permission only by oracle user ## +## or db administrator who owns this installation. ## +## ## +############################################################################### + +############################################################################### +## ## +## Instructions to fill this response file ## +## To register and configure 'Grid Infrastructure for Cluster' ## +## - Fill out sections A,B,C,D,E,F and G ## +## - Fill out section G if OCR and Voting File should be placed on ASM ## +## ## +## To register and configure 'Grid Infrastructure for Standalone server' ## +## - Fill out sections A,B and G ## +## ## +## To register software for 'Grid Infrastructure' ## +## - Fill out sections A,B and D ## +## - Provide the cluster nodes in section D when choosing CRS_SWONLY as ## +## installation option in section A ## +## ## +## To upgrade clusterware and/or Automatic storage management of earlier ## +## releases ## +## - Fill out sections A,B,C,D and H ## +## ## +## To add more nodes to the cluster ## +## - Fill out sections A and D ## +## - Provide the cluster nodes in section D when choosing CRS_ADDNODE as ## +## installation option in section A ## +## ## +############################################################################### + +#------------------------------------------------------------------------------ +# Do not change the following system generated value. +#------------------------------------------------------------------------------ +oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v23.0.0 + +############################################################################### +# # +# SECTION A - BASIC # +# # +############################################################################### +#------------------------------------------------------------------------------- +# Specify the location which holds the inventory files. +# This is an optional parameter if installing on +# Windows based Operating System. +#------------------------------------------------------------------------------- +INVENTORY_LOCATION= + +#------------------------------------------------------------------------------- +# Specify the installation option. +# Allowed values: CRS_CONFIG or HA_CONFIG or UPGRADE or CRS_SWONLY or HA_SWONLY +# - CRS_CONFIG : To register home and configure Grid Infrastructure for cluster +# - HA_CONFIG : To register home and configure Grid Infrastructure for stand alone server +# - UPGRADE : To register home and upgrade clusterware software of earlier release +# - CRS_SWONLY : To register Grid Infrastructure Software home (can be configured for cluster +# or stand alone server later) +# - HA_SWONLY : To register Grid Infrastructure Software home (can be configured for stand +# alone server later. This is only supported on Windows.) +# - CRS_ADDNODE : To add more nodes to the cluster +# - CRS_DELETE_NODE : To delete nodes to the cluster +# - PATCH : To patch Grid Infrastructure Software +# +# Deprecated: oracle.install.option +#------------------------------------------------------------------------------- +installOption= + +#------------------------------------------------------------------------------- +# Specify the complete path of the Oracle Base. +#------------------------------------------------------------------------------- +ORACLE_BASE= + +#------------------------------------------------------------------------------- +# Specify the usage for the cluster. +# Allowed values: RAC or GENERAL_PURPOSE +# - RAC : To configure cluster to manage Oracle RAC databases +# - GENERAL_PURPOSE : To configure cluster to manage generic applications +# +# Deprecated: oracle.install.crs.config.clusterUsage +#------------------------------------------------------------------------------- +clusterUsage= + +#------------------------------------------------------------------------------- +# Specify the patch options. Applicable only if PATCH is selected as install option. +# - zeroDowntimeGIPatching : Set true to use the zero downtime patching option +# - doNotUpdateDriver : Set true to skip updating ACFS drivers +# +# Deprecated: oracle.install.crs.patch.zeroDowntimeGIPatching +# Deprecated: oracle.install.crs.patch.doNotUpdateDriver +#------------------------------------------------------------------------------- +zeroDowntimeGIPatching= +skipDriverUpdate= + +################################################################################ +# # +# SECTION B - GROUPS # +# # +# The following three groups need to be assigned for all GI installations. # +# OSDBA and OSOPER can be the same or different. OSASM must be different # +# than the other two. # +# The value to be specified for OSDBA, OSOPER and OSASM group is only for # +# Unix based Operating System. # +# These groups are not required for upgrades, as they will be determined # +# from the Oracle home to upgrade. # +# # +################################################################################ +#------------------------------------------------------------------------------- +# The OSDBA_GROUP is the OS group which is to be granted SYSDBA privileges. +# +# Deprecated: oracle.install.asm.OSDBA +#------------------------------------------------------------------------------- +OSDBA= + +#------------------------------------------------------------------------------- +# The OSOPER_GROUP is the OS group which is to be granted SYSOPER privileges. +# The value to be specified for OSOPER group is optional. +# Value should not be provided if configuring Client Cluster - i.e. storageOption=CLIENT_ASM_STORAGE. +# +# Deprecated: oracle.install.asm.OSOPER +#------------------------------------------------------------------------------- +OSOPER= + +#------------------------------------------------------------------------------- +# The OSASM_GROUP is the OS group which is to be granted SYSASM privileges. This +# must be different than the previous two. +# +# Deprecated: oracle.install.asm.OSASM +#------------------------------------------------------------------------------- +OSASM= + +################################################################################ +# # +# SECTION C - SCAN # +# # +################################################################################ +#------------------------------------------------------------------------------- +# Specify the type of SCAN configuration for the cluster +# Allowed values : LOCAL_SCAN and SHARED_SCAN +# +# Deprecated: oracle.install.crs.config.scanType +#------------------------------------------------------------------------------- +scanType= + +#------------------------------------------------------------------------------- +# Applicable only if SHARED_SCAN is being configured for cluster +# Specify the path to the SCAN client data file +# +# Deprecated: oracle.install.crs.config.SCANClientDataFile +#------------------------------------------------------------------------------- +scanClientDataFile= + +#------------------------------------------------------------------------------- +# Specify a name for SCAN +# Applicable if LOCAL_SCAN is being configured for the cluster +# If you choose to configure the cluster with GNS with Auto assigned Node VIPs(DHCP),then the scanName should be specified in the format of 'SCAN name.Cluster name.GNS sub-domain' +# +# Deprecated: oracle.install.crs.config.gpnp.scanName +#------------------------------------------------------------------------------- +scanName= + +#------------------------------------------------------------------------------- +# Specify a unused port number for SCAN service +# +# Deprecated: oracle.install.crs.config.gpnp.scanPort +#------------------------------------------------------------------------------- +scanPort= + +################################################################################ +# # +# SECTION D - CLUSTER & GNS # +# # +################################################################################ +#------------------------------------------------------------------------------- +# Specify 'true' if you would like to configure the cluster as Extended, else +# specify 'false' +# +# Deprecated: oracle.install.crs.config.configureAsExtendedCluster +#------------------------------------------------------------------------------- +configureAsExtendedCluster= + +#------------------------------------------------------------------------------- +# Specify a name for the Cluster you are creating. +# +# The maximum length allowed for clustername is 63 characters. The name can be +# any combination of lower and uppercase alphabets (A - Z), (0 - 9) and hyphens (-). +# +# Deprecated: oracle.install.crs.config.clusterName +#------------------------------------------------------------------------------- +clusterName= + +#------------------------------------------------------------------------------- +# Specify 'true' if you would like to configure Grid Naming Service(GNS), else +# specify 'false' +# +# Deprecated: oracle.install.crs.config.gpnp.configureGNS +#------------------------------------------------------------------------------- +configureGNS= + +#------------------------------------------------------------------------------- +# Specify 'true' if you would like to assign SCAN name VIP and Node VIPs by DHCP +# , else specify 'false' +# +# Deprecated: oracle.install.crs.config.autoConfigureClusterNodeVIP +#------------------------------------------------------------------------------- +configureDHCPAssignedVIPs= + +#------------------------------------------------------------------------------- +# Applicable only if you choose to configure GNS. +# Specify the GNS subdomain and an unused virtual hostname for GNS service +# +# Deprecated: oracle.install.crs.config.gpnp.gnsSubDomain +# Deprecated: oracle.install.crs.config.gpnp.gnsVIPAddress +#------------------------------------------------------------------------------- +gnsSubDomain= +gnsVIPAddress= + +#------------------------------------------------------------------------------- +# Specify the list of sites - only if configuring an Extended Cluster +# +# Deprecated: oracle.install.crs.config.sites +#------------------------------------------------------------------------------- +sites= + +#------------------------------------------------------------------------------- +# Specify the list of nodes that have to be configured to be part of the cluster. +# +# The list should a comma-separated list of tuples. Each tuple should be a +# colon-separated string that contains +# - 1 field if you have chosen CRS_SWONLY as installation option, or +# - 2 fields if configuring a Flex Cluster +# - 2 fields if adding more nodes to the configured cluster, or +# - 3 fields if configuring an Extended Cluster +# +# The fields should be ordered as follows: +# 1. The first field should be the public node name. +# 2. The second field should be the virtual host name +# (Should be specified as AUTO if you have chosen 'auto configure for VIP' +# i.e. configureDHCPAssignedVIPs=true) +# 3. The third field indicates the site designation for the node. To be specified only if configuring an Extended Cluster. +# Only the 1st field is applicable if you have chosen CRS_SWONLY as installation option + +# +# Examples +# For registering GI for a cluster software: clusterNodes=node1,node2 +# For adding more nodes to the configured cluster: clusterNodes=node1:node1-vip,node2:node2-vip +# For configuring Flex Cluster: clusterNodes=node1:node1-vip,node2:node2-vip +# For configuring Extended Cluster: clusterNodes=node1:node1-vip:site1,node2:node2-vip:site2 +# You can specify a range of nodes in the tuple using colon separated fields of format +# hostnameprefix:lowerbound-upperbound:hostnamesuffix:vipsuffix +# +# Deprecated: oracle.install.crs.config.clusterNodes +#------------------------------------------------------------------------------- +clusterNodes= + +#------------------------------------------------------------------------------- +# The value should be a comma separated strings where each string is as shown below +# InterfaceName:SubnetAddress:InterfaceType +# where InterfaceType can be either "1", "2", "3", "4", or "5" +# InterfaceType stand for the following values +# - 1 : PUBLIC +# - 2 : PRIVATE +# - 3 : DO NOT USE +# - 4 : ASM +# - 5 : ASM & PRIVATE +# - 6 : ASM, PUBLIC & PRIVATE(Not available for RAC usage) +# +# For example: eth0:140.87.24.0:1,eth1:10.2.1.0:2,eth2:140.87.52.0:3 +# +# Deprecated: oracle.install.crs.config.networkInterfaceList +#------------------------------------------------------------------------------- +networkInterfaceList= + +################################################################################ +# # +# SECTION E - STORAGE # +# # +################################################################################ +#------------------------------------------------------------------------------- +# Specify the type of storage to use for Oracle Cluster Registry(OCR) and Voting Files. +# - FLEX_ASM_STORAGE +# - CLIENT_ASM_STORAGE +# - FILE_SYSTEM_STORAGE +# - EXASCALE_STORAGE +# +# Deprecated: oracle.install.crs.config.storageOption +#------------------------------------------------------------------------------- +storageOption= + +#------------------------------------------------------------------------------- +# These properties are applicable only if FILE_SYSTEM_STORAGE is chosen for +# storing OCR and Voting File +# Specify the location(s) for OCR and Voting Files +# Three(3) or one(1) location(s) should be specified for OCR and Voting File, +# separated by commas. +# Example: +# For Unix based Operating System: +# votingFilesLocations=/oradbocfs/storage/vfile1,/oradbocfs/storage/vfile2,/oradbocfs/storage/vfile3 +# ocrLocations=/oradbocfs/storage/ocr1,/oradbocfs/storage/ocr2,/oradbocfs/storage/ocr3 +# For Windows based Operating System OCR/VFILE on shared storage is not supported. +# +# Deprecated: oracle.install.crs.config.sharedFileSystemStorage.votingDiskLocations +# Deprecated: oracle.install.crs.config.sharedFileSystemStorage.ocrLocations +#------------------------------------------------------------------------------- +votingFilesLocations= +ocrLocations= + +#------------------------------------------------------------------------------- +# Applicable only if configuring CLIENT_ASM_STORAGE for OCR/Voting File storage +# Specify the path to Client ASM Data file +# +# Deprecated: oracle.install.asm.ClientDataFile +#------------------------------------------------------------------------------- +clientDataFile= + +################################################################################ +# # +# SECTION F - IPMI # +# # +################################################################################ +#------------------------------------------------------------------------------- +# Specify 'true' if you would like to configure Intelligent Power Management interface +# (IPMI), else specify 'false' +# +# Deprecated: oracle.install.crs.config.useIPMI +#------------------------------------------------------------------------------- +useIPMI= + +#------------------------------------------------------------------------------- +# Applicable only if you choose to configure IPMI +# i.e. useIPMI=true +# Specify the location of the ipmiutil binary +# Specify the username and password for using IPMI service +# +# Deprecated: oracle.install.crs.config.ipmi.bmcBinpath +# Deprecated: oracle.install.crs.config.ipmi.bmcUsername +# Deprecated: oracle.install.crs.config.ipmi.bmcPassword +#------------------------------------------------------------------------------- +bmcBinpath= +bmcUsername= +bmcPassword= + +################################################################################ +# # +# SECTION G - ASM # +# # +################################################################################ +#------------------------------------------------------------------------------- +# Password for SYS user of Oracle ASM +# +# Deprecated: oracle.install.asm.SYSASMPassword +#------------------------------------------------------------------------------- +sysasmPassword= + +#------------------------------------------------------------------------------- +# The ASM DiskGroup +# +# Example: diskGroupName=data +# +# Deprecated: oracle.install.asm.diskGroup.name +#------------------------------------------------------------------------------- +diskGroupName= + +#------------------------------------------------------------------------------- +# Redundancy level to be used by ASM. +# It can be one of the following +# - NORMAL +# - HIGH +# - EXTERNAL +# - FLEX +# - EXTENDED (only if configureAsExtendedCluster=true) +# Example: redundancy=NORMAL +# +# Deprecated: oracle.install.asm.diskGroup.redundancy +#------------------------------------------------------------------------------- +redundancy= + +#------------------------------------------------------------------------------- +# Allocation unit size to be used by ASM. +# It can be one of the following values +# - 1 +# - 2 +# - 4 +# - 8 +# - 16 +# - 32 +# - 64 +# Example: auSize=4 +# size unit is MB +# +# Deprecated: oracle.install.asm.diskGroup.AUSize +#------------------------------------------------------------------------------- +auSize= + +#------------------------------------------------------------------------------- +# Failure Groups for the disk group +# If configuring for Extended cluster specify as list of "failure group name:site" +# tuples. +# Else just specify as list of failure group names +# +# Deprecated: oracle.install.asm.diskGroup.FailureGroups +#------------------------------------------------------------------------------- +failureGroups= + +#------------------------------------------------------------------------------- +# List of disks and their failure groups to create a ASM DiskGroup +# (Use this if each of the disks have an associated failure group) +# Failure Groups are not required if redundancy=EXTERNAL +# Example: +# For Unix based Operating System: +# disksWithFailureGroupNames=/oracle/asm/disk1,FGName,/oracle/asm/disk2,FGName +# For Windows based Operating System: +# disksWithFailureGroupNames=\\.\ORCLDISKDATA0,FGName,\\.\ORCLDISKDATA1,FGName +# +# Deprecated: oracle.install.asm.diskGroup.disksWithFailureGroupNames +#------------------------------------------------------------------------------- +disksWithFailureGroupNames= + +#------------------------------------------------------------------------------- +# List of disks to create a ASM DiskGroup +# (Use this variable only if failure groups configuration is not required) +# Example: +# For Unix based Operating System: +# diskList=/oracle/asm/disk1,/oracle/asm/disk2 +# For Windows based Operating System: +# diskList=\\.\ORCLDISKDATA0,\\.\ORCLDISKDATA1 +# +# Deprecated: oracle.install.asm.diskGroup.disks +#------------------------------------------------------------------------------- +diskList= + +#------------------------------------------------------------------------------- +# List of failure groups to be marked as QUORUM. +# Quorum failure groups contain only Voting File, no user data is stored +# Example: +# quorumFailureGroupNames=FGName1,FGName2 +# +# Deprecated: oracle.install.asm.diskGroup.quorumFailureGroupNames +#------------------------------------------------------------------------------- +quorumFailureGroupNames= + +#------------------------------------------------------------------------------- +# The disk discovery string to be used to discover the disks used create a ASM DiskGroup +# +# Example: +# For Unix based Operating System: +# diskString=/oracle/asm/* +# For Windows based Operating System: +# diskString=\\.\ORCLDISK* +# +# Note: Refrain from enclosing the disk discovery string with single quotes (' ') or double quotes (" "). +# +# Deprecated: oracle.install.asm.diskGroup.diskDiscoveryString +#------------------------------------------------------------------------------- +diskString= + +#------------------------------------------------------------------------------- +# Password for ASMSNMP account +# ASMSNMP account is used by Oracle Enterprise Manager to monitor Oracle ASM instances +# +# Deprecated: oracle.install.asm.monitorPassword +#------------------------------------------------------------------------------- +asmsnmpPassword= + +#------------------------------------------------------------------------------- +# Configure AFD - ASM Filter Driver +# Applicable only for FLEX_ASM_STORAGE option +# Specify 'true' if you want to configure AFD, else specify 'false' +# +# Deprecated: oracle.install.asm.configureAFD +#------------------------------------------------------------------------------- +configureAFD= + +################################################################################ +# # +# SECTION H - UPGRADE # +# # +################################################################################ +#------------------------------------------------------------------------------- +# Specify whether to ignore down nodes during upgrade operation. +# Value should be 'true' to ignore down nodes otherwise specify 'false' +# +# Deprecated: oracle.install.crs.config.ignoreDownNodes +#------------------------------------------------------------------------------- +ignoreDownNodes= + +################################################################################ +# # +# SECTION I - OCR BACKUP # +# # +################################################################################ +#------------------------------------------------------------------------------ +# Create a separate ASM DiskGroup to store Clusterware data. +# Specify 'true' if you would like to store backup of Clusterware data, +# else specify 'false' +# Value can be true/false. +#------------------------------------------------------------------------------ +configureBackupDG= + +#------------------------------------------------------------------------------- +# Backup Storage data ASM DiskGroup +# Applicable only when +# configureBackupDG=true +# Example: backupDGName=RECO +#------------------------------------------------------------------------------- +backupDGName= + +#------------------------------------------------------------------------------- +# Redundancy level to be used by ASM. +# It can be one of the following +# - NORMAL +# - HIGH +# - EXTERNAL +# - FLEX +# - EXTENDED (only if configureAsExtendedCluster=true) +# Example: backupDGRedundancy=NORMAL +#------------------------------------------------------------------------------- +backupDGRedundancy= + +#------------------------------------------------------------------------------- +# Allocation unit size to be used by ASM. +# It can be one of the following values +# - 1 +# - 2 +# - 4 +# - 8 +# - 16 +# - 32 +# - 64 +# Example: backupDGAUSize=4 +# size unit is MB +#------------------------------------------------------------------------------- +backupDGAUSize= + +#------------------------------------------------------------------------------- +# Failure Groups for the backup storage data ASM disk group +# If configuring for Extended cluster specify as list of "failure group name:site" +# tuples. +# Else just specify as list of failure group names +#------------------------------------------------------------------------------- +backupDGFailureGroups= + +#------------------------------------------------------------------------------- +# List of disks and their failure groups to create backup data ASM DiskGroup +# (Use this if each of the disks have an associated failure group) +# Failure Groups are not required if backupDGRedundancy=EXTERNAL +# Example: +# For Unix based Operating System: +# backupDGDisksWithFailureGroupNames=/oracle/asm/disk1,FGName,/oracle/asm/disk2,FGName +# For Windows based Operating System: +# backupDGDisksWithFailureGroupNames=\\.\ORCLDISKDATA0,FGName,\\.\ORCLDISKDATA1,FGName +#------------------------------------------------------------------------------- +backupDGDisksWithFailureGroupNames= + +#------------------------------------------------------------------------------- +# List of disks to create backup data ASM DiskGroup +# (Use this variable only if failure groups configuration is not required) +# Example: +# For Unix based Operating System: +# backupDGDiskList=/oracle/asm/disk1,/oracle/asm/disk2 +# For Windows based Operating System: +# backupDGDiskList=\\.\ORCLDISKDATA0,\\.\ORCLDISKDATA1 +#------------------------------------------------------------------------------- +backupDGDiskList= + +#------------------------------------------------------------------------------- +# List of failure groups to be marked as QUORUM. +# Quorum failure groups contain only Voting File, no user data is stored +# Example: +# backupDGQuorumFailureGroups=FGName1,FGName2 +#------------------------------------------------------------------------------- +backupDGQuorumFailureGroups= + +################################################################################ +# # +# MANAGEMENT OPTIONS # +# # +################################################################################ +#------------------------------------------------------------------------------- +# Specify the management option to use for managing Oracle Grid Infrastructure +# Options are: +# 1. CLOUD_CONTROL - If you want to manage your Oracle Grid Infrastructure with Enterprise Manager Cloud Control. +# 2. NONE -If you do not want to manage your Oracle Grid Infrastructure with Enterprise Manager Cloud Control. +# +# Deprecated: oracle.install.config.managementOption +#------------------------------------------------------------------------------- +managementOption= + +#------------------------------------------------------------------------------- +# Specify the OMS host to connect to Cloud Control. +# Applicable only when managementOption=CLOUD_CONTROL +# +# Deprecated: oracle.install.config.omsHost +#------------------------------------------------------------------------------- +omsHost= + +#------------------------------------------------------------------------------- +# Specify the OMS port to connect to Cloud Control. +# Applicable only when oracle.install.config.managementOption=CLOUD_CONTROL +# +# Deprecated: oracle.install.config.omsPort +#------------------------------------------------------------------------------- +omsPort= + +#------------------------------------------------------------------------------- +# Specify the EM Admin user name to use to connect to Cloud Control. +# Applicable only when managementOption=CLOUD_CONTROL +# +# Deprecated: oracle.install.config.emAdminUser +#------------------------------------------------------------------------------- +emAdminUser= + +#------------------------------------------------------------------------------- +# Specify the EM Admin password to use to connect to Cloud Control. +# Applicable only when managementOption=CLOUD_CONTROL +# +# Deprecated: oracle.install.config.emAdminPassword +#------------------------------------------------------------------------------- +emAdminPassword= + +################################################################################ +# # +# Root script execution configuration # +# # +################################################################################ +#------------------------------------------------------------------------------------------------------- +# Specify the root script execution mode. +# +# - true : To run the root script automatically by using the appropriate configuration methods. +# - false : To run the root script manually. +# +# If this option is selected, password should be specified on the console. +# +# Deprecated: oracle.install.crs.rootconfig.executeRootScript +#------------------------------------------------------------------------------------------------------- +executeRootScript= + +#-------------------------------------------------------------------------------------- +# Specify the configuration method to be used for automatic root script execution. +# +# Following are the possible choices: +# - ROOT +# - SUDO +# +# Deprecated: oracle.install.crs.rootconfig.configMethod +#-------------------------------------------------------------------------------------- +configMethod= + +#-------------------------------------------------------------------------------------- +# Specify the absolute path of the sudo program. +# +# Applicable only when SUDO configuration method was chosen. +# +# Deprecated: oracle.install.crs.rootconfig.sudoPath +#-------------------------------------------------------------------------------------- +sudoPath= + +#-------------------------------------------------------------------------------------- +# Specify the name of the user who is in the sudoers list. +# Applicable only when SUDO configuration method was chosen. +# Note:For Grid Infrastructure for Standalone server installations,the sudo user name must be the username of the user performing the installation. +# +# Deprecated: oracle.install.crs.rootconfig.sudoUserName +#-------------------------------------------------------------------------------------- +sudoUserName= + +#-------------------------------------------------------------------------------------- +# Specify the nodes batch map. +# +# This should be a comma separated list of node:batch pairs. +# During upgrade, you can sequence the automatic execution of root scripts +# by pooling the nodes into batches. +# A maximum of three batches can be specified. +# Installer will execute the root scripts on all the nodes in one batch before +# proceeding to next batch. +# Root script execution on the local node must be in Batch 1. +# Examples: +# 1. batchInfo=Node1:1,Node2:2,Node3:2,Node4:3 +# 2. batchInfo=Node1:1,Node2:2,Node3:2,Node4:2 +# 3. batchInfo=Node1:1,Node2:1,Node3:2,Node4:3 +# +# Applicable only for UPGRADE install option. +# +# Deprecated: oracle.install.crs.config.batchinfo +#-------------------------------------------------------------------------------------- +batchInfo= + +################################################################################# +# # +# DELETE NODE OPTIONS # +# # +################################################################################# +#-------------------------------------------------------------------------------- +# Specify the node names to delete nodes from cluster. +# Delete node will be performed only for the remote nodes from the cluster. +# +# Deprecated: oracle.install.crs.deleteNode.nodes +#-------------------------------------------------------------------------------- +nodesToDelete= + +#------------------------------------------------------------------------------- +# Specify 'true' if you would like to configure Automatic Self Correction, else +# specify 'false' +# +# Deprecated: oracle.install.crs.EnableAutoFixup +#------------------------------------------------------------------------------- +enableAutoFixup= diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/initsh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/initsh new file mode 100644 index 0000000000..6179d01354 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/initsh @@ -0,0 +1,8 @@ +#! /bin/bash + +echo "Creating env variables file /etc/rac_env_vars" +/bin/bash -c "cat /proc/1/environ | tr '\0' '\n' > /etc/rac_env_vars" +/bin/bash -c "sed -i -e 's/^/export /' /etc/rac_env_vars" + +echo "Starting Systemd" +exec /lib/systemd/systemd diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/installDBBinaries.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/installDBBinaries.sh new file mode 100644 index 0000000000..af2cfffc05 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/installDBBinaries.sh @@ -0,0 +1,64 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 2018,2021 Oracle and/or its affiliates. +# +# Since: December, 2018 +# Author: sanjay.singh@oracle.com, paramdeep.saini@oracle.com +# Description:Installing Oracle DB software +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +EDITION=$1 + +# Check whether edition has been passed on +if [ "$DB_EDITION" == "" ]; then + echo "ERROR: No edition has been passed on!" + echo "Please specify the correct edition!" + exit 1; +fi; + +# Check whether correct edition has been passed on +if [ "$DB_EDITION" != "EE" -a "$DB_EDITION" != "SE2" ]; then + echo "ERROR: Wrong edition has been passed on!" + echo "Edition $EDITION is no a valid edition!" + exit 1; +fi; + +# Check whether DB_BASE is set +if [ "$DB_BASE" == "" ]; then + echo "ERROR: DB_BASE has not been set!" + echo "You have to have the DB_BASE environment variable set to a valid value!" + exit 1; +fi; + +# Check whether DB_HOME is set +if [ "$DB_HOME" == "" ]; then + echo "ERROR: DB_HOME has not been set!" + echo "You have to have the DB_HOME environment variable set to a valid value!" + exit 1; +fi; + +# Replace place holders +# --------------------- +#sed -i -e "s|###ORACLE_EDITION###|$DB_EDITION|g" "$INSTALL_SCRIPTS"/"$DB_INSTALL_RSP" && \ +#sed -i -e "s|###DB_BASE###|$DB_BASE|g" "$INSTALL_SCRIPTS"/"$DB_INSTALL_RSP" && \ +#sed -i -e "s|###DB_HOME###|$DB_HOME|g" "$INSTALL_SCRIPTS"/"$DB_INSTALL_RSP" && \ +#sed -i -e "s|###INVENTORY###|$INVENTORY|g" "$INSTALL_SCRIPTS"/"$DB_INSTALL_RSP" + +export ORACLE_HOME=${DB_HOME} +export PATH=${ORACLE_HOME}/bin:/bin:/sbin:/usr/bin +export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:/lib:/usr/lib + +# Install Oracle binaries +if [ "${DB_USER}" != "${GRID_USER}" ]; then +mkdir -p /home/"${DB_USER}"/.ssh && \ +chmod 700 /home/"${DB_USER}"/.ssh +fi + + +# Install Oracle binaries +unzip -q "$INSTALL_SCRIPTS"/"$INSTALL_FILE_2" -d "$DB_HOME" && \ +"$DB_HOME"/runInstaller -silent -setupDBHome -OSDBA dba -OSOPER oper -OSBACKUPDBA backupdba -OSDGDBA dgdba -OSKMDBA kmdba -OSRACDBA racdba -ORACLE_BASE ${DB_BASE} -installEdition EE -INVENTORY_LOCATION ${INVENTORY} -ignorePrereqFailure || true +#"$DB_HOME"/runInstaller -silent -force -waitforcompletion -responsefile "$INSTALL_SCRIPTS"/"$DB_INSTALL_RSP" -ignorePrereqFailure || true diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/installGridBinaries.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/installGridBinaries.sh new file mode 100644 index 0000000000..0cecb35911 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/installGridBinaries.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 2018,2021 Oracle and/or its affiliates. +# +# Since: December, 2018 +# Author: sanjay.singh@oracle.com, paramdeep.saini@oracle.com +# Description: Install grid software inside the container. +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +EDITION=$1 +PATCH_NUMBER=$2 + +# Check whether edition has been passed on +if [ "$EDITION" == "" ]; then + echo "ERROR: No edition has been passed on!" + echo "Please specify the correct edition!" + exit 1; +fi; + +# Check whether correct edition has been passed on +if [ "$EDITION" != "EE" ]; then + echo "ERROR: Wrong edition has been passed on!" + echo "Edition $EDITION is no a valid edition!" + exit 1; +fi; + +# Check whether GRID_BASE is set +if [ "$GRID_BASE" == "" ]; then + echo "ERROR: GRID_BASE has not been set!" + echo "You have to have the GRID_BASE environment variable set to a valid value!" + exit 1; +fi; + +# Check whether GRID_HOME is set +if [ "$GRID_HOME" == "" ]; then + echo "ERROR: GRID_HOME has not been set!" + echo "You have to have the GRID_HOME environment variable set to a valid value!" + exit 1; +fi; + + +temp_var1=`hostname` + +# Install Oracle binaries +mkdir -p /home/grid/.ssh && \ + chmod 700 /home/grid/.ssh && \ + unzip -q "$INSTALL_SCRIPTS"/"$INSTALL_FILE_1" -d "$GRID_HOME" && \ + "${GRID_HOME}"/gridSetup.sh -silent -setupHome -OSDBA asmdba -OSOPER asmoper -OSASM asmadmin -ORACLE_BASE ${GRID_BASE} -INVENTORY_LOCATION ${INVENTORY} -ignorePrereqFailure || true \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/resetFailedUnits.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/resetFailedUnits.sh new file mode 100644 index 0000000000..1a531d7d14 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/resetFailedUnits.sh @@ -0,0 +1,12 @@ +#!/bin/bash +file_name=reset_failed_units.txt +current_time=$(date "+Y.%m.%d-%H.%M.%S") +passed_unit_file_name=passed_units.txt +new_failed_unit_file_name=$file_name.$current_time +systemctl_state=$(systemctl status | awk '/State:/{ print $0 }' | grep -v 'awk /State:/' | awk '{ print $2 }') +if [ "${systemctl_state}" != "running" ]; then + systemctl reset-failed + touch "/tmp/$new_failed_unit_file_name" +else + touch "/tmp/$passed_unit_file_name" +fi \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/resetOSPassword.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/resetOSPassword.sh new file mode 100644 index 0000000000..800e31523d --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/resetOSPassword.sh @@ -0,0 +1,221 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 2018,2021 Oracle and/or its affiliates. +# +# Since: January, 2018 +# Author: paramdeep.saini@oracle.com +# Description: Reset the password for Grid and oracle user +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +declare -a cluster_nodes +GRID_USER='grid' +DB_USER='oracle' +PROGNAME=$(basename "$0") +PWD_KEY='pwd.key' +SECRET_VOLUME='/run/secrets' +declare -x REMOVE_OS_PWD_FILES='false' +PASSWD_VALUE="NOPASSWD" +source /etc/rac_env_vars + +###################Capture Process id and source functions.sh############### +source "$SCRIPT_DIR/functions.sh" +###########################sourcing of functions.sh ends here############## + +####error_exit function sends a TERM signal, which is caught by trap command and returns exit status 15"#### +trap '{ exit 15; }' TERM +###########################trap code ends here########################## + +generate_pwd () +{ + +if [ -f "${SECRET_VOLUME}/${PWD_FILE}" ] && [ -f "${SECRET_VOLUME}/${PWD_KEY}" ] ; then +cmd='openssl enc -d -aes-256-cbc -in "${SECRET_VOLUME}/${PWD_FILE}" -out /tmp/${PWD_FILE} -pass file:"${SECRET_VOLUME}/${PWD_KEY}"' + +eval $cmd + +if [ $? -eq 0 ]; then +print_message "Password file generated" +else +error_exit "Error occurred during common os password file generation" +fi + +read PASSWORD < /tmp/"${PWD_FILE}" +rm -f /tmp/"${PWD_FILE}" +rm -f /tmp/${PWD_KEY} + +if [ "${REMOVE_OS_PWD_FILES}" == 'true' ]; then +rm -f "${SECRET_VOLUME}"/"${COMMON_OS_PWD_FILE}" +rm -f ${SECRET_VOLUME}/${PWD_KEY} +fi + +else + print_message "Password file or password key file is empty string! generating random password" + PASSWORD=O$(openssl rand -base64 6 | tr -d "=+/")_1 +fi + +if [ ! -z "${PASSWORD}" ]; then + PASSWD_VALUE="${PASSWORD}" +fi + +} + +setNode () { +if [ ! -f "$GRID_HOME"/bin/olsnodes ]; then +cluster_nodes=( $(hostname) ) +else +cluster_nodes=( $("$GRID_HOME"/bin/olsnodes | awk '{ print $1 }') ) +node_count=$("$GRID_HOME"/bin/olsnodes -a | awk '{ print $1 }' | wc -l) +fi +} + +reset_passwd () +{ +user=${1} +password=${2} + +if [ -z "${user}" ]; then +error_exit "user name is not specified. It must be set to oracle|grid" +fi + +if [ -z "${password}" ]; then +error_exit "password string is not specified" +fi + +for node in "${cluster_nodes[@]}" +do +if [ ! -f "$GRID_HOME"/bin/olsnodes ]; then +print_message "Resetting password for ${user} on the ${node}" +cmd='su - ${user} -c "sudo /usr/sbin/chpasswd <<<\"$user:$password\""' +else +print_message "Resetting password for ${user} on all the ${node}" +cmd='su - ${user} -c "ssh ${node} sudo /usr/sbin/chpasswd <<<\"$user:$password\""' +fi + +eval $cmd + +if [ $? -eq 0 ]; then +print_message "Password reset seucessfuly on ${node} for $user" +else +print_message "Password reset failed on ${node} for $user" +fi +done +} + +usage() { +cat << EOF +Usage: -o|--op_type Specify the value reset_grid_oracle|reset_grid|reset_oracle + -p|--pwd_file Specify the encrypted password file name + -k|--pwd_key_file Specify password key fle + -s|--secret_volume Specify the secret volume + -r|--remove_os_pwd_files Remove the passwordfiles after resetting the password + -h|--help Show help +EOF +error_exit "Please specify correct parameters" +} + +##################################################################### +### MAIN # +##################################################################### + +SHORTOPTS="o:p:k:s:r:h" +LONGOPTS="help,op_type:,pwd_key_file:,pwd_file:,secret_volume:,remove_os_pwd_files:" + +ARGS=$(getopt -o $SHORTOPTS --long $LONGOPTS --name "$PROGNAME" -- "$@" ) + +if [ $? != 0 ] ; then +error_exit "Terminating... as error occurred during ARGS computation"; +fi + +print_message "$ARGS" + +eval set -- "$ARGS" + +while true; do +case "$1" in + --help) + usage +;; + -o | --op_type) + if [ "$2" ]; then + RESET_PASSWORD_TYPE=$2 + else + error_exit "--op_type requires non empty option argument" + fi + print_message "RESET_PASSWORD_TYPE=${RESET_PASSWORD_TYPE}" + shift 2 +;; + -p | --pwd_file) + if [ "$2" ]; then + PWD_FILE=$2 + else + print_message "--pwd_file set to empty string. random password will generated" + fi + print_message "PWD_FILE: $PWD_FILE" + shift 2 +;; +-k | --pwd_key_file) + if [ "$2" ];then + PWD_KEY=$2 + else + PWD_KEY='pwd.key' + print_message "--pwd_key set to empty string. It will be set to default value ${PWD_KEY}" + fi + print_message "PWD_KEY=$PWD_KEY" + shift 2 +;; + -s | --secret_volume) + echo "Secret Volume Location" + if [ "$2" ];then + SECRET_VOLUME=$2 + else + SECRET_VOLUME='/run/secrets' + print_message "--secret_volume is set to empty string. It will be set to default value ${SECRET_VOLUME}" + fi + shift 2 +;; +-r| --remove_os_pwd_files) + echo "Remove OS PWD files after resetting password" + if [ "${2}" == 'true' ]; then + REMOVE_OS_PWD_FILES='true' + else + REMOVE_OS_PWD_FILES='false' + fi + shift 2 +;; + --) + shift; + break; +;; +*) +print_message "Not a valid option" +usage +;; +esac +done + +print_message "generating node name from the cluster" +setNode +print_message "Generating password for grid and oracle user" +generate_pwd + +if [ "${PASSWD_VALUE}" == "NOPASSWD" ]; then + error_exit "Correct password string is not set" +fi + +if [ "${RESET_PASSWORD_TYPE}" == 'reset_grid_oracle' ]; then +print_message "Setting password for $GRID_USER user" +reset_passwd $GRID_USER "$PASSWD_VALUE" +print_message "Setting password for $DB_USER user" +reset_passwd $DB_USER "$PASSWD_VALUE" +elif [ "${RESET_PASSWORD_TYPE}" == 'reset_grid' ]; then + print_message "Setting password for $GRID_USER user" + reset_passwd $GRID_USER "$PASSWD_VALUE" +elif [ "${RESET_PASSWORD_TYPE}" == 'reset_oracle' ]; then + print_message "Setting password for $DB_USER user" + reset_passwd $DB_USER "$PASSWD_VALUE" +else +error_exit "Please specify correct value for RESET_PASSWORD_TYPE. Correct Values are reset_grid_oracle|reset_grid|reset_oracle" +fi diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/runOracle.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/runOracle.sh new file mode 100644 index 0000000000..22f8cf652a --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/runOracle.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 2018,2022 Oracle and/or its affiliates. +# +# Since: January, 2018 +# Author: sanjay.singh@oracle.com, paramdeep.saini@oracle.com +# Description: Runs the Oracle RAC Database inside the container +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +if [ -f /etc/rac_env_vars ]; then +source /etc/rac_env_vars +fi + +################################### +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # +############# MAIN ################ +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # +################################### + +if [ -z ${BASE_DIR} ]; then + BASE_DIR=/opt/scripts/startup/scripts +else + BASE_DIR=$SCRIPT_DIR/scripts +fi + +if [ -z ${MAIN_SCRIPT} ]; then + SCRIPT_NAME="main.py" +fi + +if [ -z ${EXECUTOR} ]; then + EXECUTOR="python3" +fi + +cd $BASE_DIR +$EXECUTOR $SCRIPT_NAME + +# Tail on alert log and wait (otherwise container will exit) diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/setupDB.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/setupDB.sh new file mode 100644 index 0000000000..8673d5d113 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/setupDB.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 2018,2021 Oracle and/or its affiliates. +# +# Since: January, 2018 +# Author: paramdeep.saini@oracle.com +# Description: Sets up the unix environment for DB installation. +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +# Create Directories +if [ "${SLIMMING}x" != 'truex' ]; then + mkdir -p "$DB_BASE" + mkdir -p "$DB_HOME" +fi + +usermod -g oinstall -G oinstall,dba,oper,backupdba,dgdba,kmdba,asmdba,asmoper,racdba,asmadmin "${DB_USER}" + +chmod 775 "$INSTALL_SCRIPTS" + + +if [ "${SLIMMING}x" != 'truex' ]; then + chown -R "${DB_USER}":oinstall "$DB_BASE" + chown -R "${DB_USER}":oinstall "$DB_HOME" + chown -R "${DB_USER}":oinstall "$INSTALL_SCRIPTS" + echo "export PATH=$DB_PATH" >> /home/"${DB_USER}"/.bashrc + echo "export LD_LIBRARY_PATH=$DB_LD_LIBRARY_PATH" >> /home/"${DB_USER}"/.bashrc + echo "export SCRIPT_DIR=$SCRIPT_DIR" >> /home/"${DB_USER}"/.bashrc + echo "export GRID_HOME=$GRID_HOME" >> /home/"${DB_USER}"/.bashrc + echo "export DB_BASE=$DB_BASE" >> /home/"${DB_USER}"/.bashrc + echo "export DB_HOME=$DB_HOME" >> /home/"${DB_USER}"/.bashrc +fi + +if [ "${SLIMMING}x" != 'truex' ]; then + if [ "${DB_USER}" == "${GRID_USER}" ]; then + sed -i '/PATH=/d' /home/"${DB_USER}"/.bashrc + echo "export PATH=$GRID_HOME/bin:$DB_PATH" >> /home/"${DB_USER}"/.bashrc + echo "export LD_LIBRARY_PATH=$GRID_HOME/lib:$DB_LD_LIBRARY_PATH" >> /home/"${DB_USER}"/.bashrc + fi +fi diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/setupGrid.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/setupGrid.sh new file mode 100644 index 0000000000..2d698182e7 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/setupGrid.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 2018,2021 Oracle and/or its affiliates. +# +# Since: January, 2018 +# Author: paramdeep.saini@oracle.com +# Description: Sets up the unix environment for Grid installation. +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +EDITION=$1 + +# Create Directories +if [ "${SLIMMING}x" != 'truex' ] ; then + mkdir -p "$GRID_BASE" + mkdir -p "$GRID_HOME" +fi + +groupadd -g 54334 asmadmin +groupadd -g 54335 asmdba +groupadd -g 54336 asmoper +useradd -u 54332 -g oinstall -G oinstall,asmadmin,asmdba,asmoper,racdba,dba "${GRID_USER}" + +chmod 666 /etc/sudoers +echo "${DB_USER} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers +echo "${GRID_USER} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers +chmod 440 /etc/sudoers + +if [ "${SLIMMING}x" != 'truex' ] ; then + chown -R "${GRID_USER}":oinstall "$GRID_BASE" + chown -R "${GRID_USER}":oinstall "$GRID_HOME" + mkdir -p "$INVENTORY" + chown -R "${GRID_USER}":oinstall "$INVENTORY" + echo "export PATH=$GRID_PATH" >> /home/"${GRID_USER}"/.bashrc + echo "export LD_LIBRARY_PATH=$GRID_LD_LIBRARY_PATH" >> /home/"${GRID_USER}"/.bashrc + echo "export SCRIPT_DIR=$SCRIPT_DIR" >> /home/"${GRID_USER}"/.bashrc + echo "export GRID_HOME=$GRID_HOME" >> /home/"${GRID_USER}"/.bashrc + echo "export GRID_BASE=$GRID_BASE" >> /home/"${GRID_USER}"/.bashrc + echo "export DB_HOME=$DB_HOME" >> /home/"${GRID_USER}"/.bashrc +fi + diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/setupLinuxEnv.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/setupLinuxEnv.sh new file mode 100644 index 0000000000..8dbcb7ebb8 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/26.0.0/setupLinuxEnv.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 2018 - 2024 Oracle and/or its affiliates. +# +# Since: January, 2018 +# Author: paramdeep.saini@oracle.com +# Description: Sets up the unix environment for DB installation. +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +# ------------------------------------------------------------ +## Use OCI yum repos on OCI instead of public yum +region=$(curl --noproxy '*' -sfm 3 -H "Authorization: Bearer Oracle" http://169.254.169.254/opc/v2/instance/ | sed -nE 's/^ *"regionIdentifier": "([^"]+)".*/\1/p') +if [ -n "$region" ]; then + echo "Detected OCI Region: $region" + for proxy in $(printenv | grep -i _proxy | cut -d= -f1); do unset $proxy; done + echo "-$region" > /etc/yum/vars/ociregion +fi + +# Setup filesystem and oracle user +# Adjust file permissions, go to /opt/oracle as user 'oracle' to proceed with Oracle installation +mkdir /asmdisks && \ +mkdir /responsefiles && \ +chmod ug+x /opt/scripts/startup/*.sh && \ + +if grep -q "Oracle Linux Server release 9" /etc/oracle-release; then \ + # curl --noproxy '*' https://ca-artifacts.oraclecorp.com/auto-build/x86_64-build-output-9-dev/oracle-database-preinstall-23ai-1.0-2.el9.x86_64.rpm --output oracle-database-preinstall-23ai-1.0-2.el9.x86_64.rpm && \ + # dnf install -y oracle-database-preinstall-23ai-1.0-2.el9.x86_64.rpm cronie && \ + dnf install -y oracle-ai-database-preinstall-26ai && \ + cp /etc/security/limits.d/oracle-ai-database-preinstall-26ai.conf /etc/security/limits.d/grid-database-preinstall-26ai.conf && \ + sed -i 's/oracle/grid/g' /etc/security/limits.d/grid-database-preinstall-26ai.conf && \ + rm -f /etc/systemd/system/oracle-ai-database-preinstall-26ai-firstboot.service && \ + sed -i 's/^TasksMax\S*/TasksMax=80%/g' /usr/lib/systemd/system/user-.slice.d/10-defaults.conf && \ + dnf clean all; \ +else \ + dnf -y install oraclelinux-developer-release-el8 && \ + dnf -y install oracle-ai-database-preinstall-26ai libnsl cronie && \ + cp /etc/security/limits.d/oracle-ai-database-preinstall-26ai.conf /etc/security/limits.d/grid-database-preinstall-26ai.conf && \ + sed -i 's/oracle/grid/g' /etc/security/limits.d/grid-database-preinstall-26ai.conf && \ + rm -f /etc/rc.d/init.d/oracle-database-preinstall-26ai-firstboot && \ + dnf clean all; \ +fi && \ +dnf -y install systemd vim passwd expect sudo passwd openssl openssh-server hostname python3 rsync fontconfig lsof && \ +dnf clean all && \ +rm -f /etc/sysctl.conf && \ +rm -f /usr/lib/systemd/system/dnf-makecache.service diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/ociregion.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/ociregion.sh index 1c44f30fa3..3e4d1eda59 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/ociregion.sh +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/ociregion.sh @@ -13,4 +13,10 @@ # Setup filesystem and oracle user # Adjust file permissions, go to /opt/oracle as user 'oracle' to proceed with Oracle installation # ------------------------------------------------------------ -## Use OCI yum repos on OCI instead of public yum repos \ No newline at end of file +## Use OCI yum repos on OCI instead of public yum +region=$(curl --noproxy '*' -sfm 3 -H "Authorization: Bearer Oracle" http://169.254.169.254/opc/v2/instance/ | sed -nE 's/^ *"regionIdentifier": "([^"]+)".*/\1/p') +if [ -n "$region" ]; then + echo "Detected OCI Region: $region" + for proxy in $(printenv | grep -i _proxy | cut -d= -f1); do unset $proxy; done + echo "-$region" > /etc/yum/vars/ociregion +fi \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/main.py b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/main.py index f17ddd5a44..680025c6a5 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/main.py +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/main.py @@ -22,7 +22,7 @@ def main(): # Checking Comand line Args opts="" try: - opts, args = getopt.getopt(sys.argv[1:], '', ['help','resetpassword=','delracnode=','addtns=', 'checkracinst=', 'checkgilocal=','checkdbrole=','checkracdb=','checkracstatus','checkconnstr=','checkpdbconnstr=','setupdblsnr=','setuplocallsnr=','checkdbsvc=','modifydbsvc=','checkdbversion=','updatelsnrendp=','updateasmcount=','modifyscan=','updateasmdevices=','getasmdiskgroup=','getasmdisks=','getdgredundancy=','getasminstname=','getasminststatus=','rundatapatch=','ons=']) + opts, args = getopt.getopt(sys.argv[1:], '', ['help','resetpassword=','delracnode=','addtns=', 'checkracinst=', 'checkgilocal=','checkdbrole=','checkracdb=','checkracstatus','checkconnstr=','checkpdbconnstr=','setupdblsnr=','setuplocallsnr=','checkdbsvc=','modifydbsvc=','checkdbversion=','updatelsnrendp=','updateasmcount=','modifyscan=','updateasmdevices=','getasmdiskgroup=','getasmdisks=','getdgredundancy=','getasminstname=','getasminststatus=','rundatapatch=','ons=','updatesidprofile=','updatecdp=']) except getopt.GetoptError: pass @@ -284,6 +284,16 @@ def main(): oenv.update_key("OP_TYPE","miscops") else: oenv.add_custom_variable("OP_TYPE","miscops") + elif opt in ('--updatecdp'): + file_name = oenv.logfile_name("UPDATE_CDP") + oralogger.filename_ = file_name + ocommon.log_info_message("=======================================================================",file_name) + oenv.add_custom_variable("UPDATE_CDP",arg) + oenv.add_custom_variable("CUSTOM_RUN_FLAG","true") + if ocommon.check_key("OP_TYPE",oenv.get_env_dict()): + oenv.update_key("OP_TYPE","miscops") + else: + oenv.add_custom_variable("OP_TYPE","miscops") elif opt in ('--rundatapatch'): file_name = oenv.logfile_name("RUN_DATAPATCH") oralogger.filename_ = file_name @@ -304,6 +314,16 @@ def main(): oenv.update_key("OP_TYPE","miscops") else: oenv.add_custom_variable("OP_TYPE","miscops") + elif opt in ('--updatesidprofile'): + file_name = oenv.logfile_name("SIDPROFILEUPDATE") + oralogger.filename_ = file_name + ocommon.log_info_message("=======================================================================",file_name) + oenv.add_custom_variable("SID_PROFILE_UPDATE",arg) + oenv.add_custom_variable("CUSTOM_RUN_FLAG","true") + if ocommon.check_key("OP_TYPE",oenv.get_env_dict()): + oenv.update_key("OP_TYPE","miscops") + else: + oenv.add_custom_variable("OP_TYPE","miscops") else: pass diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oracommon.py b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oracommon.py index c45161e17b..a908d930e3 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oracommon.py +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oracommon.py @@ -80,6 +80,34 @@ def execute_cmd(self, cmd, env, dir): return output.decode(), error.decode(), retcode + def execute_cmd_noshell(self, cmd_list, env=None, cwd=None): + """ + Execute OS command without shell=True. + cmd_list must be a list of arguments. + """ + + try: + message = "Received Command : {}".format(" ".join(cmd_list)) + self.log_info_message(message, self.file_name) + + out = subprocess.Popen( + cmd_list, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=env, + cwd=cwd + ) + + output, error = out.communicate() + retcode = out.returncode + + except Exception: + error_msg = sys.exc_info() + self.log_error_message(error_msg, self.file_name) + self.prog_exit(self) + + return output.decode(), error.decode(), retcode + def mask_str(self, mstr): """ Function to mask the string. @@ -1834,43 +1862,122 @@ def check_gi_installed(self, retcode1, gihome, giuser, node, oinv): def restore_gi_files(self, gihome, giuser): """ - Restoring GI Files + Restore GI-related OS files (/etc/oracle). + Start CRS/HAS ONLY if restore was performed. + Returns True on success, False on failure. """ + giuser, gihome, gibase, oinv = self.get_gi_params() - srcdir = gibase+"/.etcoraclebackup" + srcdir = "{0}/.etcoraclebackup".format(gibase) + oraversion = self.get_rsp_version("INSTALL", None) version = oraversion.split(".", 1)[0].strip() - self.log_info_message("restore_gi_files" + version, self.file_name) - if int(version) == 19 and self.check_key("CRS_GPC", self.ora_env_dict): - files = os.listdir(srcdir) - if files: - cmd = 'cp -rp {0}/oracle /etc/'.format(srcdir) - output, error, retcode = self.execute_cmd(cmd, None, None) - self.check_os_err(output, error, retcode, None) - oracle_home = gihome - cmd = ( - 'export ORACLE_HOME={0} && ' - '{0}/perl/bin/perl -I{0}/perl/lib -I{0}/crs/install -I{0}/xag ' - '{0}/crs/install/roothas.pl -updateosfiles' - ).format(oracle_home) - output, error, retcode = self.execute_cmd(cmd, None, None) - self.check_os_err(output, error, retcode, None) - if retcode == 0: - status = self.start_has(gihome, giuser) - return bool(status) - else: - return False - else: - # If no files, run rootcrs.sh to update os files - cmd = '{0}/crs/install/rootcrs.sh -updateosfiles'.format(gihome) + self.log_info_message( + "restore_gi_files invoked (Oracle major version: {0})".format(version), + self.file_name + ) + + restored = False + + # -------------------------------------------------- + # 1. Restore /etc/oracle if backup exists + # -------------------------------------------------- + if os.path.isdir(srcdir) and os.listdir(srcdir): + self.log_info_message( + "Found /etc/oracle backup at {0}, restoring".format(srcdir), + self.file_name + ) + + cmd = "cp -rp {0}/oracle /etc/".format(srcdir) output, error, retcode = self.execute_cmd(cmd, None, None) self.check_os_err(output, error, retcode, None) - if retcode == 0: - return True - else: + + if retcode != 0: + self.log_error_message( + "Failed to restore /etc/oracle from backup", + self.file_name + ) return False + restored = True + else: + self.log_info_message( + "No /etc/oracle backup found; skipping restore", + self.file_name + ) + + # -------------------------------------------------- + # 2. Update OS files (always) + # -------------------------------------------------- + if self.check_key("CRS_GPC", self.ora_env_dict): + self.log_info_message( + "CRS_GPC set: updating OS files using roothas.pl", + self.file_name + ) + + cmd = ( + "export ORACLE_HOME={0} && " + "{0}/perl/bin/perl " + "-I{0}/perl/lib " + "-I{0}/crs/install " + "-I{0}/xag " + "{0}/crs/install/roothas.pl -updateosfiles" + ).format(gihome) + else: + self.log_info_message( + "CRS_GPC not set: updating OS files using rootcrs.sh", + self.file_name + ) + cmd = "{0}/crs/install/rootcrs.sh -updateosfiles".format(gihome) + + output, error, retcode = self.execute_cmd(cmd, None, None) + self.check_os_err(output, error, retcode, None) + + if retcode != 0: + self.log_error_message( + "OS file update failed", + self.file_name + ) + return False + + # -------------------------------------------------- + # 3. Start Oracle stack ONLY if restore happened + # -------------------------------------------------- + if not restored: + self.log_info_message( + "GI files not restored; skipping CRS/HAS startup", + self.file_name + ) + return True + + if self.check_key("CRS_GPC", self.ora_env_dict): + self.log_info_message( + "Starting Oracle Restart stack (HAS)", + self.file_name + ) + status = self.start_has(gihome, giuser) + else: + self.log_info_message( + "Starting Oracle Clusterware (CRS)", + self.file_name + ) + status = self.start_crs(gihome, giuser) + + if not status: + self.log_error_message( + "Failed to start Oracle stack after GI restore", + self.file_name + ) + return False + + self.log_info_message( + "GI restore completed and Oracle stack started successfully", + self.file_name + ) + return True + + ###### Starting Crs ############### def start_crs(self, gihome, giuser): """ @@ -3135,18 +3242,52 @@ def run_custom_scripts(self, dirkey, filekey, user): # else: # self.log_info_message("No custom script dir specified to execute user specified scripts. Not executing any user specified script.",self.file_name) -# Synching Oracle Home def sync_gi_home(self, node, ohome, user, clsnodes): """ - This home sync GI home during addnode from source machine to remote machine + Sync GI home during addnode. + ED25519-safe and StrictHostKeyChecking-compliant. """ - # install_node,pubhost=self.get_installnode() + + ssh_opts = ( + "-o StrictHostKeyChecking=yes " + "-o PasswordAuthentication=no " + "-o BatchMode=yes" + ) + for target_node in clsnodes: - cmd = '''su - {0} -c "ssh {1} 'rsync -Pav -e ssh --exclude \'{1}*\' {3}/* {0}@{2}:{3}'"'''.format( - user, node, target_node, ohome) - output, error, retcode = self.execute_cmd(cmd, None, None) + + # ------------------------------------------------------------ + # Ensure ED25519 host key exists on SOURCE node (critical) + # ------------------------------------------------------------ + seed_cmd = ( + "su - {0} -c " + "\"ssh-keygen -F {1} >/dev/null || " + "ssh-keyscan -t ed25519 -H {1} >> ~/.ssh/known_hosts\"" + ).format(user, target_node) + + self.execute_cmd(seed_cmd, None, None) + + # ------------------------------------------------------------ + # rsync using SSH with enforced ED25519 verification + # ------------------------------------------------------------ + rsync_cmd = ( + "su - {0} -c " + "\"ssh {1} " + "'rsync -Pav -e \\\"ssh {2}\\\" " + "--exclude \\\"{1}*\\\" " + "{3}/* {0}@{4}:{3}'\"" + ).format( + user, + node, + ssh_opts, + ohome, + target_node + ) + + output, error, retcode = self.execute_cmd(rsync_cmd, None, None) self.check_os_err(output, error, retcode, False) + # Set the User profiles def set_user_profile(self, ouser, key, val, type): """ @@ -3728,16 +3869,18 @@ def rotate_log_files(self): def modify_scan(self, giuser, gihome, scanname): """ - Modify Scan Details + Modify Scan Details (run as sudo) """ - cmd = '''{1}/bin/srvctl modify scan -scanname {2}'''.format( - giuser, gihome, scanname) + + cmd = ( + 'su - {0} -c ' + '"sudo {1}/bin/srvctl modify scan -scanname {2}"' + ).format(giuser, gihome, scanname) + output, error, retcode = self.execute_cmd(cmd, None, None) self.check_os_err(output, error, retcode, None) - if retcode == 0: - return True - else: - return False + + return retcode == 0 def updateasmcount(self, giuser, gihome, asmcount): """ @@ -3894,66 +4037,111 @@ def get_asmdgrd(self, giuser, gihome, dg): def get_asmdsk(self, giuser, gihome, dg): """ - check asm disks based on dg group + Return ASM disks that belong to a specific diskgroup """ + sid = self.get_asmsid(giuser, gihome) - cmd = '''su - {0} -c "export ORACLE_SID={1};{2}/bin/asmcmd lsdsk --suppressheader --member"'''.format( - giuser, sid, gihome, dg) + + cmd = ( + '''su - {0} -c "export ORACLE_SID={1};''' + '''{2}/bin/asmcmd lsdsk -G {3} --suppressheader"''' + ).format(giuser, sid, gihome, dg) + output, error, retcode = self.execute_cmd(cmd, None, None) self.check_os_err(output, error, retcode, None) - if retcode == 0: - return output.strip().replace('\n', ',') - else: - return "ERROR OCCURRED" - def add_cdp(self): + if retcode == 0 and output: + disks = [] + for line in output.strip().splitlines(): + parts = line.split() + if len(parts) == 1: + disks.append(parts[0]) # path-only format + else: + disks.append(parts[-1]) # multi-column format + return ",".join(disks) + + return "" + def _wait_for_cdp_removal(self, gihome, retries=10, sleep_sec=3): """ - Add one or more CDPs to the existing RAC cluster. - Works if ADD_CDP is a single node or a comma-separated list of nodes. + Wait until CDP is fully removed from OCR. """ + check_cmd = "{}/bin/srvctl status cdp".format(gihome) + + for i in range(retries): + out, err, rc = self.execute_cmd(check_cmd, None, None) + + if rc != 0 and "PRCS-1157" in (out + err): + return True # CDP is gone + + time.sleep(sleep_sec) + + return False + + def update_cdp(self, operation, node): + """ + Reconcile CDP configuration with current SCAN topology. + CDPs are recreated but NOT enabled or started. + """ + giuser, gihome, obase, invloc = self.get_gi_params() + + oraversion = self.get_rsp_version(operation, node) + major_version = int(oraversion.split(".", 1)[0].strip()) + + if major_version < 23: + self.log_info_message( + "GI version {}: CDP update not required".format(oraversion), + self.file_name + ) + return True + self.log_info_message( - "Adding CDP to the existing RAC cluster details", self.file_name) + "GI version {}: Reconciling CDP configuration".format(oraversion), + self.file_name + ) - if not self.check_key("ADD_CDP", self.ora_env_dict): - return True # nothing to add + remove_cmd = "sudo {}/bin/srvctl remove cdp".format(gihome) + add_cmd = "sudo {}/bin/srvctl add cdp".format(gihome) - # Handle single or multiple nodes - node_list = [n.strip() - for n in self.ora_env_dict["ADD_CDP"].split(",") if n.strip()] + # Step 1: Remove CDP + out, err, rc = self.execute_cmd(remove_cmd, None, None) - success = True - for nodename in node_list: - # Construct and execute the command - cmd = '''su - {0} -c "{1}/bin/srvctl start cdp -node {2}"'''.format( - giuser, gihome, nodename) - output, error, retcode = self.execute_cmd(cmd, None, None) - self.check_os_err(output, error, retcode, None) + if rc != 0 and "PRCS-1157" not in (out + err): + self.log_info_message( + "Failed to remove CDP (rc={})\nCommand: {}\nSTDOUT: {}\nSTDERR: {}".format( + rc, remove_cmd, out.strip(), err.strip() + ), + self.file_name + ) + return False - retvalue = False - if retcode != 0: - # Verify if CDP is already running - cmd = '''su - {0} -c "{1}/bin/srvctl status cdp"'''.format( - giuser, gihome) - output, error, retcode = self.execute_cmd(cmd, None, None) - retvalue = nodename in output - else: - retvalue = True # command succeeded + # Step 2: WAIT for OCR propagation + if not self._wait_for_cdp_removal(gihome): + self.log_info_message( + "Timed out waiting for CDP removal from OCR", + self.file_name + ) + return False - if not retvalue: - msg = "CDP {0} didn't get added to the existing RAC cluster".format( - nodename) - self.log_info_message(msg, self.file_name) - success = False - else: - msg = "New CDP {0} is now added to the RAC cluster".format( - nodename) - self.log_info_message(msg, self.file_name) + # Step 3: Add CDP (retry-safe) + out, err, rc = self.execute_cmd(add_cmd, None, None) - if not success: - self.prog_exit("Error occurred while adding CDPs") + if rc != 0: + self.log_info_message( + "Failed to add CDP (rc={})\nCommand: {}\nSTDOUT: {}\nSTDERR: {}".format( + rc, add_cmd, out.strip(), err.strip() + ), + self.file_name + ) + return False + + self.log_info_message( + "CDP configuration added (disabled, not running)", + self.file_name + ) + + return True - return success def update_ons(self, giuser, gihome, onsstate): """ @@ -4050,3 +4238,120 @@ def get_ora_version(self): "get_ora_version():[" + vdata + "]", self.file_name) major_version, minor_version, other_version = vdata.split(".", 2) return major_version, minor_version + + def seed_ed25519_on_source(self, user, source_node, target_node): + """ + Ensure ED25519 host key for target_node exists + in known_hosts ON THE SOURCE NODE. + """ + + cmd = ( + "su - {0} -c " + "\"ssh {1} " + "'ssh-keygen -F {2} >/dev/null || " + "ssh-keyscan -t ed25519 -H {2} >> ~/.ssh/known_hosts'\"" + ).format(user, source_node, target_node) + + self.execute_cmd(cmd, None, None) + + def update_osid_for_grid_and_db_users(self): + """ + Update OSID for both Grid and DB users by modifying their .bashrc profile. + """ + status = "" + msg = "" + users = [] + + # Gather DB user details + try: + dbuser, dbhome, dbbase, dbinv = self.get_db_params() + dbname = self.ora_env_dict["DB_NAME"] if self.check_key("DB_NAME", self.ora_env_dict) else "ORCLCDB" + hostname = self.get_public_hostname() + dbosid = self.get_inst_sid(dbuser, dbhome, dbname, hostname) + if not dbosid: + dbosid = dbname + "1" + users.append((dbuser, dbosid)) + except Exception as e: + status = "DB_USER_INFO_FAILED" + msg = '''Failed to get DB user info: {0}'''.format(e) + self.log_info_message(msg, self.file_name) + print(status) + self.prog_exit("Error occurred") + + # Gather GI user details + try: + giuser, gihome, gibase, giinv = self.get_gi_params() + giname = self.ora_env_dict["DB_NAME"] if self.check_key("DB_NAME", self.ora_env_dict) else "ORCLCDB" + hostname = self.get_public_hostname() + giosid = self.get_inst_sid(giuser, gihome, giname, hostname) + if not giosid: + giosid = giname + "1" + users.append((giuser, giosid)) + except Exception as e: + status = "GI_USER_INFO_FAILED" + msg = '''Failed to get GI user info: {0}'''.format(e) + self.log_info_message(msg, self.file_name) + print(status) + self.prog_exit("Error occurred") + + # Update .bashrc for each user + for osuser, osid in users: + bashrc_path = "/home/{0}/.bashrc".format(osuser) + bashrc_line = "\nexport ORACLE_SID={0}\n".format(osid) + try: + with open(bashrc_path, "a") as bashrc_file: + bashrc_file.write(bashrc_line) + msg = '''ORACLE_SID {0} is now added to {1}'''.format(osid, bashrc_path) + # status = "OSID_UPDATED_SUCCESSFULLY" + self.log_info_message(msg, self.file_name) + # print(status) + except Exception as e: + # status = "OSID_NOT_UPDATED" + msg = '''Failed to update {0} for user {1}: {2}'''.format(bashrc_path, osuser, e) + self.log_info_message(msg, self.file_name) + # print(status) + self.prog_exit("Error occurred") + + def update_listener_env_for_users(self): + """ + Configure listener-related environment variables for interactive shells + (oracle and grid users). Idempotent and safe across pod restarts. + """ + + giuser, gihome, gibase, giinv = self.get_gi_params() + dbuser, dbhome, dbbase, dbinv = self.get_db_params() + + marker = "# --- RAC listener environment ---" + + exports = [ + "export GRID_HOME={0}".format(gihome), + "export TNS_ADMIN={0}/network/admin".format(gihome), + ] + + for user in [giuser, dbuser]: + bashrc_path = "/home/{0}/.bashrc".format(user) + + try: + existing = "" + if self.check_file(bashrc_path, True, None, None): + existing = self.read_file(bashrc_path) + + with open(bashrc_path, "a") as bashrc: + if marker not in existing: + bashrc.write("\n{0}\n".format(marker)) + + for line in exports: + if line not in existing: + bashrc.write("{0}\n".format(line)) + + self.log_info_message( + "Listener environment updated for user {0}".format(user), + self.file_name + ) + + except Exception as e: + self.log_error_message( + "Failed to update listener environment for user {0}: {1}".format(user, e), + self.file_name + ) + self.prog_exit("127") diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oracvu.py b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oracvu.py index 4920931fdf..55974e6331 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oracvu.py +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oracvu.py @@ -181,30 +181,48 @@ def check_asm(self,node): self.ocommon.check_os_err(output,error,retcode,None) return retcode - def check_clu(self,node,sshflag,crsflag): - """ - This function check if crs is configued properly - """ - giuser,gihome,gbase,oinv=self.ocommon.get_gi_params() - crs_nodes="" - if not node: - crs_nodes=" -allnodes " - cmd='''su - {0} -c "{1}/bin/cluvfy comp clumgr {2}"'''.format(giuser,gihome,crs_nodes) - else: - crs_nodes=" -n " + node - cmd='''su - {0} -c "{1}/bin/cluvfy comp clumgr {2}"'''.format(giuser,gihome,crs_nodes) - - if sshflag: - crs_nodes=" -n " + node - cmd='''su - {0} -c "ssh {3} '{1}/bin/cluvfy comp clumgr {2}'"'''.format(giuser,gihome,crs_nodes,node) + def check_clu(self, node, sshflag, crsflag): + """ + This function checks if CRS is configured properly. + For Oracle Restart (CRS_GPC), CRS checks are not applicable. + """ - if crsflag: - crs_nodes=" -n " + node - cmd='''su - {0} -c "ssh {3} '{1}/bin/cluvfy stage -post hacfg'"'''.format(giuser,gihome,crs_nodes,node) + # ----------------------------------------- + # Oracle Restart: skip CRS / clumgr checks + # ----------------------------------------- + if crsflag: + self.ocommon.log_info_message( + "CRS_GPC detected (Oracle Restart). Skipping CRS/clumgr checks.", + self.file_name + ) + return 0 + + # ----------------------------------------- + # Existing RAC logic (unchanged) + # ----------------------------------------- + giuser, gihome, gbase, oinv = self.ocommon.get_gi_params() + + if not node: + crs_nodes = " -allnodes " + cmd = '''su - {0} -c "{1}/bin/cluvfy comp clumgr {2}"'''.format( + giuser, gihome, crs_nodes + ) + else: + crs_nodes = " -n " + node + cmd = '''su - {0} -c "{1}/bin/cluvfy comp clumgr {2}"'''.format( + giuser, gihome, crs_nodes + ) + + if sshflag: + crs_nodes = " -n " + node + cmd = '''su - {0} -c "ssh {0}@{3} '{1}/bin/cluvfy comp clumgr {2}'"'''.format( + giuser, gihome, crs_nodes, node + ) + + output, error, retcode = self.ocommon.execute_cmd(cmd, None, None) + self.ocommon.check_os_err(output, error, retcode, None) + return retcode - output,error,retcode=self.ocommon.execute_cmd(cmd,None,None) - self.ocommon.check_os_err(output,error,retcode,None) - return retcode def check_home(self,node,home,user): """ @@ -264,29 +282,6 @@ def check_addnode(self): self.ocommon.check_os_err(output,error,retcode,None) def check_db_home(self, node, db_home, user): - """ - This function checks if the Oracle Database home is installed correctly - """ - giuser, gihome, gbase, oinv = self.ocommon.get_gi_params() - oracle_home = db_home - - if not node: - crs_nodes = " -allnodes " - else: - crs_nodes = " -n " + node - - cvufile = '''{0}/bin/cluvfy'''.format(gihome) - if not self.ocommon.check_file(cvufile, True, None, None): - return 1 - - cmd = '''su - {0} -c "{1}/bin/cluvfy stage -post dbinst -d {3}"'''.format(user, gihome, node, db_home) - output, error, retcode = self.ocommon.execute_cmd(cmd, None, None) - if retcode == 0: - return 0 - else: - return 1 - - def check_db_home_has(self, node, db_home, user): """ This function checks if the Oracle Database home is installed correctly by running OPatch lsinventory on each node individually. diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraenv.py b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraenv.py index 1187046f12..445e2cc6de 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraenv.py +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraenv.py @@ -154,8 +154,6 @@ def logfile_name(file_type): OraEnv.__env_var_dict["LOG_FILE_NAME"] = OraEnv.logdir__ + "/oracle_update_asmcount_status.log" elif file_type == "UPDATE_ASMDEVICES": OraEnv.__env_var_dict["LOG_FILE_NAME"] = OraEnv.logdir__ + "/oracle_update_asmdevices_status.log" - elif file_type == "UPDATE_LISTENERENDP": - OraEnv.__env_var_dict["LOG_FILE_NAME"] = OraEnv.logdir__ + "/oracle_update_listenerendp_status.log" elif file_type == "LIST_ASMDG": OraEnv.__env_var_dict["LOG_FILE_NAME"] = OraEnv.logdir__ + "/oracle_list_asmdg_status.log" elif file_type == "LIST_ASMDISKS": @@ -168,10 +166,14 @@ def logfile_name(file_type): OraEnv.__env_var_dict["LOG_FILE_NAME"] = OraEnv.logdir__ + "/oracle_list_amsinst_status.log" elif file_type == "UPDATE_LISTENERENDP": OraEnv.__env_var_dict["LOG_FILE_NAME"] = OraEnv.logdir__ + "/oracle_update_listenerendp_status.log" + elif file_type == "UPDATE_CDP": + OraEnv.__env_var_dict["LOG_FILE_NAME"] = OraEnv.logdir__ + "/oracle_update_cdp_status.log" elif file_type == "RUN_DATAPATCH": OraEnv.__env_var_dict["LOG_FILE_NAME"] = OraEnv.logdir__ + "/oracle_rundatapatch_status.log" elif file_type == "ONS": OraEnv.__env_var_dict["LOG_FILE_NAME"] = OraEnv.logdir__ + "/oracle_ons_status.log" + elif file_type == "SIDPROFILEUPDATE": + OraEnv.__env_var_dict["LOG_FILE_NAME"] = OraEnv.logdir__ + "/sid_profile_update_status.log" else: pass diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oragiadd.py b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oragiadd.py index d93bb6019b..9d6b42222d 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oragiadd.py +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oragiadd.py @@ -104,10 +104,12 @@ def setup(self): self.ocommon.start_scan(giuser, gihome, pubhostname) self.ocommon.update_scan_lsnr(giuser, gihome, pubhostname) self.ocommon.start_scan_lsnr(giuser, gihome, pubhostname) - if self.ocommon.check_key("ADD_CDP", self.ora_env_dict): - self.ocommon.log_info_message("Start addcdp()", self.file_name) - self.addcdp() - self.ocommon.log_info_message("End addcdp()", self.file_name) + if self.ocommon.check_key("ADD_CDP", self.ora_env_dict): + self.ocommon.log_info_message("Start updatecdp()", self.file_name) + self.updatecdp(operation="ADDNODE") + self.ocommon.log_info_message("End updatecdp()", self.file_name) + + ct = datetime.datetime.now() ets = ct.timestamp() totaltime = ets - bts @@ -182,17 +184,87 @@ def clu_checks(self, hostname): def perform_ssh_setup(self): """ - Perform ssh setup + Perform SSH setup. + + - Non-k8s: + * Perform SSH setup (ADDNODE) + * Verify SSH at the end + + - k8s: + * SSH is assumed to be pre-configured + * Only verify SSH connectivity to + CRS nodes + EXISTING_CLS_NODE(s) """ + + user = self.ora_env_dict["GRID_USER"] + ohome = self.ora_env_dict["GRID_HOME"] + + giuser, gihome, _, _ = self.ocommon.get_gi_params() + + # -------------------------------------------------- + # Resolve CRS nodes (space-separated) + # -------------------------------------------------- + cluster_nodes = self.ocommon.get_cluster_nodes() or "" + cluster_nodes = cluster_nodes.replace(",", " ").split() + + # -------------------------------------------------- + # Resolve existing cluster nodes (may be None) + # -------------------------------------------------- + existing_nodes = self.ocommon.get_existing_clu_nodes(False) + if existing_nodes: + existing_nodes = existing_nodes.replace(",", " ").split() + else: + existing_nodes = [] + + # -------------------------------------------------- + # Merge + normalize node list + # -------------------------------------------------- + all_nodes = sorted(set(cluster_nodes + existing_nodes)) + all_nodes_str = " ".join(all_nodes) + + # -------------------------------------------------- + # Determine GI version + # -------------------------------------------------- + oraversion = self.ocommon.get_rsp_version("INSTALL", None) + version = int(oraversion.split(".", 1)[0].strip()) + + # -------------------------------------------------- + # Non-k8s: perform SSH setup + # -------------------------------------------------- if not self.ocommon.detect_k8s_env(): - user = self.ora_env_dict["GRID_USER"] - ohome = self.ora_env_dict["GRID_HOME"] - self.osetupssh.setupssh(user, ohome, 'ADDNODE') - # if self.ocommon.check_key("VERIFY_SSH",self.ora_env_dict): - # self.osetupssh.verifyssh(user,'ADDNODE') + self.ocommon.log_info_message( + "Performing SSH setup for ADDNODE", + self.file_name + ) + + self.osetupssh.setupssh(user, ohome, "ADDNODE") + else: + # -------------------------------------------------- + # k8s: setup already done, verify only + # -------------------------------------------------- + self.ocommon.log_info_message( + "k8s environment detected; skipping SSH setup and verifying connectivity only", + self.file_name + ) + + # -------------------------------------------------- + # Final authoritative verification (common path) + # -------------------------------------------------- + if all_nodes_str: self.ocommon.log_info_message( - "SSH setup must be already completed during env setup as this this k8s env.", self.file_name) + "Final SSH verification for nodes: {0}".format(all_nodes_str), + self.file_name + ) + + self.osetupssh.verifyssh( + giuser, + gihome, + "runcluvfy.sh", + all_nodes_str, + version + ) + def crs_sw_configure(self): """ @@ -369,16 +441,20 @@ def run_rootsh(self): output, error, retcode = self.ocommon.execute_cmd(cmd, None, None) self.ocommon.check_os_err(output, error, retcode, True) - def addcdp(self): + def updatecdp(self, operation): """ - add cdp to existing RAC cluster + Update CDP of existing RAC cluster """ - msg = "" - retvalue = self.ocommon.add_cdp() + install_node,_=self.ocommon.get_installnode() + retvalue = self.ocommon.update_cdp(operation,install_node) if not retvalue: - msg = "New CDP didnt added to existing RAC cluster" - self.ocommon.log_info_message(msg, self.file_name) + self.ocommon.log_info_message( + "Update CDP failed for the existing RAC cluster", + self.file_name + ) self.ocommon.prog_exit("Error occurred") else: - msg = "New CDP is now added to the RAC cluster" - self.ocommon.log_info_message(msg, self.file_name) + self.ocommon.log_info_message( + "CDP is now updated for the existing RAC cluster", + self.file_name + ) diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oragiprov.py b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oragiprov.py index 2042285c06..598e815b77 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oragiprov.py +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oragiprov.py @@ -166,28 +166,69 @@ def scan_check(self): self.ocommon.prog_exit("127") def perform_ssh_setup(self): - """ - Perform ssh setup - """ - #if not self.ocommon.detect_k8s_env(): - pub_nodes,vip_nodes,priv_nodes=self.ocommon.process_cluster_vars("CRS_NODES") - crs_nodes=pub_nodes.replace(" ",",") - crs_nodes_list=crs_nodes.split(",") - if len(crs_nodes_list) == 1: - self.ocommon.log_info_message("Cluster size=1. Node=" + crs_nodes_list[0],self.file_name) - user=self.ora_env_dict["GRID_USER"] - cmd = '''su - {0} -c "/bin/rm -rf ~/.ssh ; sleep 1; /bin/ssh-keygen -t rsa -b 4096 -q -N \'\' -f ~/.ssh/id_rsa ; sleep 1; /bin/ssh-keyscan {1} > ~/.ssh/known_hosts 2>/dev/null ; sleep 1; /bin/cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys"'''.format(user, crs_nodes_list[0]) - output,error,retcode=self.ocommon.execute_cmd(cmd,None,None) - self.ocommon.check_os_err(output,error,retcode,None) - else: - if not self.ocommon.check_key("SSH_PRIVATE_KEY",self.ora_env_dict) and not self.ocommon.check_key("SSH_PUBLIC_KEY",self.ora_env_dict): - user=self.ora_env_dict["GRID_USER"] - ohome=self.ora_env_dict["GRID_HOME"] - self.osetupssh.setupssh(user,ohome,"INSTALL") - #if self.ocommon.check_key("VERIFY_SSH",self.ora_env_dict): - # self.osetupssh.verifyssh(user,"INSTALL") - else: - self.ocommon.log_info_message("SSH setup must be already completed during env setup as this this env variables SSH_PRIVATE_KEY and SSH_PUBLIC_KEY are set.",self.file_name) + """ + Perform ssh setup + """ + + pub_nodes, vip_nodes, priv_nodes = self.ocommon.process_cluster_vars("CRS_NODES") + crs_nodes = pub_nodes.replace(" ", ",") + nodes = crs_nodes.split(",") + + is_gpc = self.ocommon.check_key("CRS_GPC", self.ora_env_dict) + is_k8s = self.ocommon.detect_k8s_env() + + has_injected_keys = ( + self.ocommon.check_key("SSH_PRIVATE_KEY", self.ora_env_dict) and + self.ocommon.check_key("SSH_PUBLIC_KEY", self.ora_env_dict) + ) + + user = self.ora_env_dict["GRID_USER"] + ohome = self.ora_env_dict["GRID_HOME"] + + # -------------------------------------------------- + # Case 1: Local SSH bootstrap + # - CRS_GPC with no injected keys (K8s or non-K8s) + # - OR single-node RAC on non-K8s + # -------------------------------------------------- + if (is_gpc and not has_injected_keys) or \ + (not is_gpc and len(nodes) == 1 and not is_k8s): + + node = nodes[0] + + self.ocommon.log_info_message( + f"Bootstrapping local SSH for GRID user on node {node}", + self.file_name + ) + + cmd = ( + 'su - {0} -c ' + '"/bin/rm -rf ~/.ssh ; ' + '/bin/mkdir -p ~/.ssh && chmod 700 ~/.ssh ; ' + '/bin/ssh-keygen -t rsa -b 4096 -q -N \'\' -f ~/.ssh/id_rsa ; ' + '/bin/ssh-keyscan -H {1} >> ~/.ssh/known_hosts 2>/dev/null ; ' + '/bin/cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys ; ' + '/bin/chmod 600 ~/.ssh/authorized_keys ~/.ssh/known_hosts"' + ).format(user, node) + + output, error, retcode = self.ocommon.execute_cmd(cmd, None, None) + self.ocommon.check_os_err(output, error, retcode, None) + return + + # -------------------------------------------------- + # Case 2: Multi-node RAC → CVU SSH setup + # -------------------------------------------------- + if not is_gpc and len(nodes) > 1: + if not has_injected_keys: + self.ocommon.log_info_message( + "Multi-node RAC detected; running legacy SSH setup for GRID user", + self.file_name + ) + self.osetupssh.setupssh(user, ohome, "INSTALL") + else: + self.ocommon.log_info_message( + "Injected SSH keys detected; skipping legacy SSH setup", + self.file_name + ) def crs_sw_install(self): """ @@ -707,28 +748,95 @@ def install_cvuqdisk(self, node): self.ocommon.log_error_message(f"Error installing cvuqdisk. Exiting... {e}", self.file_name) def backup_oracle_etc_files(self): + """ + Backup /etc/oracle based on Oracle version rules. + + - Version > 19 : always backup + - Version == 19 : backup only if CRS_GPC is set + """ + oraversion = self.ocommon.get_rsp_version("INSTALL", None) - self.ocommon.log_info_message("oraversion: " + str(oraversion), self.file_name) - gridrsp = "/tmp/grid.rsp" - version = oraversion.split(".", 1)[0].strip() - self.ocommon.log_info_message("disk version: " + version, self.file_name) + self.ocommon.log_info_message( + "oraversion: {0}".format(oraversion), + self.file_name + ) + + if not oraversion: + self.ocommon.log_info_message( + "Oracle version not detected; skipping /etc/oracle backup", + self.file_name + ) + return True - if int(version) == 19: - self.ocommon.log_info_message("running backup_oracle_etc_files()", self.file_name) - giuser, gihome, gibase, oinv = self.ocommon.get_gi_params() - node = self.ocommon.get_public_hostname() - targetdir=gibase+"/.etcoraclebackup" - try: - if self.ocommon.check_key("CRS_GPC", self.ora_env_dict): - backup_dir="/etc/oracle" - cmd = '''su - {0} -c "ssh {1} sudo mkdir -p {2}/"'''.format(giuser, node, targetdir) - output, error, retcode = self.ocommon.execute_cmd(cmd, None, None) - self.ocommon.check_os_err(output, error, retcode, None) - cmd = '''su - {0} -c "ssh {1} sudo cp -rp {3} {2}/"'''.format(giuser, node, targetdir, backup_dir) - output, error, retcode = self.ocommon.execute_cmd(cmd, None, None) - self.ocommon.check_os_err(output, error, retcode, None) - self.ocommon.log_info_message( - "Successfully backed up /etc/oracle files on node {0}.".format(node), self.file_name) - except subprocess.CalledProcessError as e: - self.ocommon.log_error_message( - "Error backing up /etc/oracle on node {0}. Exiting... {1}".format(node, str(e)), self.file_name) + version = oraversion.split(".", 1)[0].strip() + self.ocommon.log_info_message( + "Oracle major version: {0}".format(version), + self.file_name + ) + + # -------------------------------------------------- + # Decide whether backup is required + # -------------------------------------------------- + if int(version) == 19 and not self.ocommon.check_key("CRS_GPC", self.ora_env_dict): + self.ocommon.log_info_message( + "Oracle 19c detected and CRS_GPC not set; skipping /etc/oracle backup", + self.file_name + ) + return True + + self.ocommon.log_info_message( + "Running backup_oracle_etc_files()", + self.file_name + ) + + giuser, gihome, gibase, oinv = self.ocommon.get_gi_params() + node = self.ocommon.get_public_hostname() + + targetdir = "{0}/.etcoraclebackup".format(gibase) + backup_dir = "/etc/oracle" + + # -------------------------------------------------- + # 1. Create backup directory + # -------------------------------------------------- + cmd = ( + 'su - {0} -c "ssh {1} sudo mkdir -p {2}"' + .format(giuser, node, targetdir) + ) + output, error, retcode = self.ocommon.execute_cmd(cmd, None, None) + self.ocommon.check_os_err(output, error, retcode, None) + + if retcode != 0: + self.ocommon.log_error_message( + "Failed to create backup directory {0} on node {1}".format(targetdir, node), + self.file_name + ) + return False + + # -------------------------------------------------- + # 2. Copy /etc/oracle + # -------------------------------------------------- + cmd = ( + 'su - {0} -c "ssh {1} sudo cp -rp {3} {2}/"' + .format(giuser, node, targetdir, backup_dir) + ) + output, error, retcode = self.ocommon.execute_cmd(cmd, None, None) + self.ocommon.check_os_err(output, error, retcode, None) + + if retcode != 0: + self.ocommon.log_error_message( + "Failed to backup {0} on node {1}".format(backup_dir, node), + self.file_name + ) + return False + + # -------------------------------------------------- + # Success + # -------------------------------------------------- + self.ocommon.log_info_message( + "Successfully backed up {0} to {1} on node {2}".format( + backup_dir, targetdir, node + ), + self.file_name + ) + + return True diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oramiscops.py b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oramiscops.py index 21920feba6..8b4a317c9a 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oramiscops.py +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oramiscops.py @@ -43,6 +43,7 @@ def __init__(self,oralogger,orahandler,oraenv,oracommon,oracvu,orasetupssh): self.osetupssh = orasetupssh self.ocvu = oracvu self.oracstdby = OraRacStdby(self.ologger,self.ohandler,self.oenv,self.ocommon,self.ocvu,self.osetupssh) + except BaseException as ex: traceback.print_exc(file = sys.stdout) @@ -207,6 +208,14 @@ def setup(self): self.update_ons() else: pass + if self.ocommon.check_key("SID_PROFILE_UPDATE", self.ora_env_dict): + self.update_osid_for_grid_and_db_users() + else: + pass + if self.ocommon.check_key("UPDATE_CDP", self.ora_env_dict): + self.updatecdp() + else: + pass ct = datetime.datetime.now() ets = ct.timestamp() @@ -428,6 +437,7 @@ def checkracsvc(self): else: mode = "NOTAVAILABLE" return mode + def checkraclocal(self): """ @@ -952,4 +962,86 @@ def update_ons(self): msg='''ONS Details is now updated to {0}'''.format(onsstate) status="ONS_UPDATED_SUCCESSFULLY" self.ocommon.log_info_message(msg,self.file_name) - print(status) \ No newline at end of file + print(status) + + def update_osid_for_grid_and_db_users(self): + """ + Update OSID for both Grid and DB users by modifying their .bashrc profile. + """ + status = "" + msg = "" + users = [] + + # Gather DB user details + try: + dbuser, dbhome, dbbase, dbinv = self.ocommon.get_db_params() + dbname = self.ora_env_dict["DB_NAME"] if self.ocommon.check_key("DB_NAME", self.ora_env_dict) else "ORCLCDB" + hostname = self.ocommon.get_public_hostname() + dbosid = self.ocommon.get_inst_sid(dbuser, dbhome, dbname, hostname) + if not dbosid: + dbosid = dbname + "1" + users.append((dbuser, dbosid)) + except Exception as e: + status = "DB_USER_INFO_FAILED" + msg = '''Failed to get DB user info: {0}'''.format(e) + self.ocommon.log_info_message(msg, self.file_name) + print(status) + self.ocommon.prog_exit("Error occurred") + + # Gather GI user details + try: + giuser, gihome, gibase, giinv = self.ocommon.get_gi_params() + giname = self.ora_env_dict["DB_NAME"] if self.ocommon.check_key("DB_NAME", self.ora_env_dict) else "ORCLCDB" + hostname = self.ocommon.get_public_hostname() + giosid = self.ocommon.get_inst_sid(giuser, gihome, giname, hostname) + if not giosid: + giosid = giname + "1" + users.append((giuser, giosid)) + except Exception as e: + status = "GI_USER_INFO_FAILED" + msg = '''Failed to get GI user info: {0}'''.format(e) + self.ocommon.log_info_message(msg, self.file_name) + print(status) + self.ocommon.prog_exit("Error occurred") + + # Update .bashrc for each user + for osuser, osid in users: + bashrc_path = "/home/{0}/.bashrc".format(osuser) + bashrc_line = "\nexport ORACLE_SID={0}\n".format(osid) + try: + with open(bashrc_path, "a") as bashrc_file: + bashrc_file.write(bashrc_line) + msg = '''ORACLE_SID {0} is now added to {1}'''.format(osid, bashrc_path) + status = "OSID_UPDATED_SUCCESSFULLY" + self.ocommon.log_info_message(msg, self.file_name) + print(status) + except Exception as e: + status = "OSID_NOT_UPDATED" + msg = '''Failed to update {0} for user {1}: {2}'''.format(bashrc_path, osuser, e) + self.ocommon.log_info_message(msg, self.file_name) + print(status) + self.ocommon.prog_exit("Error occurred") + def updatecdp(self): + """ + Update CDP of the existing RAC cluster + """ + + status = "" + msg = "" + + retvalue = self.ocommon.update_cdp("INSTALL", None) + + if not retvalue: + status = "CDP_NOT_UPDATED" + msg = "Update CDP failed for the existing RAC cluster" + self.ocommon.log_info_message(msg, self.file_name) + print(status) + self.ocommon.prog_exit("Error occurred") + else: + status = "CDP_UPDATED_SUCCESSFULLY" + msg = "CDP is now updated for the existing RAC cluster" + self.ocommon.log_info_message(msg, self.file_name) + print(status) + + return True + diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracadd.py b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracadd.py index e4bbb3f256..2c9e5a5e3d 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracadd.py +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracadd.py @@ -94,6 +94,7 @@ def setup(self): self.ocommon.log_info_message("End create_db()",self.file_name) self.ocommon.perform_db_check("ADDNODE") self.ocommon.update_statefile("completed") + self.ocommon.update_osid_for_grid_and_db_users() ct = datetime.datetime.now() ets = ct.timestamp() totaltime=ets - bts @@ -141,16 +142,101 @@ def clu_checks(self): self.ocommon.prog_exit("127") def perform_ssh_setup(self): - """ - Perform ssh setup - """ - if not self.ocommon.detect_k8s_env(): - dbuser,dbhome,dbase,oinv=self.ocommon.get_db_params() - self.osetupssh.setupssh(dbuser,dbhome,'ADDNODE') - #if self.ocommon.check_key("VERIFY_SSH",self.ora_env_dict): - #self.osetupssh.verifyssh(dbuser,'ADDNODE') - else: - self.ocommon.log_info_message("SSH setup must be already completed during env setup as this this k8s env.",self.file_name) + """ + Perform SSH setup for DB addnode. + + Rules: + - DB addnode requires oracle↔oracle SSH + - NEVER regenerate keys if SSH_PRIVATE_KEY / SSH_PUBLIC_KEY exist + - In k8s: verify only + - In non-k8s: setup only if keys are not externally provided + """ + + # -------------------------------------------------- + # DB user context (THIS IS CRITICAL) + # -------------------------------------------------- + dbuser, dbhome, _, _ = self.ocommon.get_db_params() + + # -------------------------------------------------- + # Resolve cluster nodes + # -------------------------------------------------- + cluster_nodes = self.ocommon.get_cluster_nodes() or "" + cluster_nodes = cluster_nodes.replace(",", " ").split() + + existing_nodes = self.ocommon.get_existing_clu_nodes(False) + if existing_nodes: + existing_nodes = existing_nodes.replace(",", " ").split() + else: + existing_nodes = [] + + all_nodes = sorted(set(cluster_nodes + existing_nodes)) + all_nodes_str = " ".join(all_nodes) + node = "" + existing_crs_nodes = self.ocommon.get_existing_clu_nodes(True) + for cnode in existing_crs_nodes.split(","): + retcode3 = self.ocvu.check_clu(cnode, True, None) + if retcode3 == 0: + node = cnode + break + # -------------------------------------------------- + # Determine DB version (for verification logic) + # -------------------------------------------------- + oraversion = self.ocommon.get_rsp_version("ADDNODE", node) + version = int(oraversion.split(".", 1)[0].strip()) + + # -------------------------------------------------- + # Decide if SSH setup is allowed + # -------------------------------------------------- + ssh_keys_provided = ( + self.ocommon.check_key("SSH_PRIVATE_KEY", self.ora_env_dict) + and self.ocommon.check_key("SSH_PUBLIC_KEY", self.ora_env_dict) + ) + + crs_gpc = self.ocommon.check_key("CRS_GPC", self.ora_env_dict) + + # -------------------------------------------------- + # Non-k8s path + # -------------------------------------------------- + if not self.ocommon.detect_k8s_env(): + + if ssh_keys_provided or crs_gpc: + self.ocommon.log_info_message( + "SSH keys are externally managed; skipping SSH setup", + self.file_name + ) + else: + self.ocommon.log_info_message( + "Performing SSH setup for DB ADDNODE", + self.file_name + ) + # IMPORTANT: DB user, ADDNODE + self.osetupssh.setupssh(dbuser, dbhome, "ADDNODE") + + # -------------------------------------------------- + # k8s path (verify only) + # -------------------------------------------------- + else: + self.ocommon.log_info_message( + "k8s environment detected; skipping SSH setup", + self.file_name + ) + + # -------------------------------------------------- + # Final authoritative verification (oracle user) + # -------------------------------------------------- + if all_nodes_str: + self.ocommon.log_info_message( + "Verifying oracle SSH connectivity for nodes: {0}".format(all_nodes_str), + self.file_name + ) + + self.osetupssh.verifyssh( + dbuser, + dbhome, + "runcluvfy.sh", + all_nodes_str, + version + ) def db_sw_install(self): """ diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracdel.py b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracdel.py index 80ae203039..1ac74f3fc4 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracdel.py +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracdel.py @@ -76,7 +76,7 @@ def setup(self): ct = datetime.datetime.now() ets = ct.timestamp() totaltime=ets - bts - self.ocommon.log_info_message("Total time for setup() = [ " + str(round(totaltime,3)) + " ] seconds",self.file_name) + self.ocommon.log_info_message("Total time for delete setup() = [ " + str(round(totaltime,3)) + " ] seconds",self.file_name) ##### Check env vars ######## diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracprov.py b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracprov.py index dc34651266..52254abb15 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracprov.py +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracprov.py @@ -68,10 +68,7 @@ def setup(self): dbuser,dbhome,dbase,oinv=self.ocommon.get_db_params() # retcode1=self.ocvu.check_home(None,dbhome,dbuser) retcode=1 - if self.ocommon.check_key("CRS_GPC",self.ora_env_dict): - retcode1=self.ocvu.check_db_home_has(None,dbhome,dbuser) - else: - retcode1=self.ocvu.check_db_home(None,dbhome,dbuser) + retcode1=self.ocvu.check_db_home(None,dbhome,dbuser) status=self.ocommon.check_rac_installed(retcode1) self.ocommon.reset_os_password(dbuser) if not status: @@ -116,6 +113,8 @@ def setup(self): self.ocommon.log_info_message("End create_db()",self.file_name) self.ocommon.perform_db_check("INSTALL") self.ocommon.update_statefile("completed") + self.ocommon.update_osid_for_grid_and_db_users() + self.ocommon.update_listener_env_for_users() ct = datetime.datetime.now() ets = ct.timestamp() totaltime=ets - bts @@ -129,70 +128,168 @@ def env_param_checks(self): self.ocommon.check_env_variable("DB_BASE",True) self.ocommon.check_env_variable("INVENTORY",True) - def clu_checks(self,hostname): - """ - Performing clu checks - """ - self.ocommon.log_info_message("Performing CVU checks before DB home installation to make sure clusterware is up and running on " + hostname,self.file_name) - # hostname=self.ocommon.get_public_hostname() - retcode1=self.ocvu.check_ohasd(hostname) - retcode2=self.ocvu.check_asm(hostname) - retcode3=1 - if self.ocommon.check_key("CRS_GPC",self.ora_env_dict): - self.ocommon.log_info_message("Start check_clu() CRS_GPC is set. Check if oracle restart crs is configured properly",self.file_name) - retcode3=self.ocvu.check_clu(hostname,None,True) - self.ocommon.log_info_message("End check_clu()",self.file_name) - else: - self.ocommon.log_info_message("Start check_clu() Check if crs is configued properly",self.file_name) - retcode3=self.ocvu.check_clu(hostname,None,None) - self.ocommon.log_info_message("End check_clu()",self.file_name) + def clu_checks(self, hostname): + """ + Performing CVU checks with retry. + Handles RAC, bare-metal Oracle Restart, and Kubernetes CRS_GPC correctly. + """ - if retcode1 == 0: - msg="Cluvfy ohasd check passed!" - self.ocommon.log_info_message(msg,self.file_name) - else: - msg="Cluvfy ohasd check faild. Exiting.." - self.ocommon.log_error_message(msg,self.file_name) - self.ocommon.prog_exit("127") + max_retries = 10 # ~10 * 30s = 5 minutes + retry_sleep = 30 - if retcode2 == 0: - msg="Cluvfy asm check passed!" - self.ocommon.log_info_message(msg,self.file_name) - else: - msg="Cluvfy asm check faild. Exiting.." - self.ocommon.log_error_message(msg,self.file_name) - #self.ocommon.prog_exit("127") + is_crs_gpc = self.ocommon.check_key("CRS_GPC", self.ora_env_dict) + + self.ocommon.log_info_message( + "Performing CVU checks before DB home installation to make sure " + "clusterware is up and running on {0}".format(hostname), + self.file_name + ) + + for attempt in range(1, max_retries + 1): + + self.ocommon.log_info_message( + "CVU check attempt {0}/{1} on node {2}".format( + attempt, max_retries, hostname + ), + self.file_name + ) + + # ----------------------------- + # Mandatory checks (ALL modes) + # ----------------------------- + retcode_ohasd = self.ocvu.check_ohasd(hostname) + retcode_asm = self.ocvu.check_asm(hostname) + + # ----------------------------- + # CLU check (RAC only) + # ----------------------------- + retcode_clu = 0 + + if not is_crs_gpc: + self.ocommon.log_info_message( + "Start check_clu(): CRS detected (RAC / non-GPC)", + self.file_name + ) + retcode_clu = self.ocvu.check_clu(hostname, None, None) + else: + self.ocommon.log_info_message( + "CRS_GPC detected: Skipping cluvfy post hacfg validation " + "(CRS lifecycle is operator-managed)", + self.file_name + ) + retcode_clu = 0 + + # ----------------------------- + # Success path + # ----------------------------- + if retcode_ohasd == 0 and retcode_asm == 0 and retcode_clu == 0: + self.ocommon.log_info_message( + "All required CVU checks passed successfully on node {0}".format(hostname), + self.file_name + ) + return + + # ----------------------------- + # Retry path + # ----------------------------- + if attempt < max_retries: + self.ocommon.log_info_message( + "CVU checks not ready yet on node {0}. " + "This is expected after pod restart. Retrying in {1} seconds..." + .format(hostname, retry_sleep), + self.file_name + ) + time.sleep(retry_sleep) + continue + + # ----------------------------- + # Final failure (no more retries) + # ----------------------------- + if retcode_ohasd != 0: + self.ocommon.log_error_message( + "Cluvfy ohasd check failed after retries. Exiting..", + self.file_name + ) + self.ocommon.prog_exit("127") + + if retcode_asm != 0: + self.ocommon.log_error_message( + "Cluvfy asm check failed after retries. Exiting..", + self.file_name + ) + self.ocommon.prog_exit("127") + + if not is_crs_gpc and retcode_clu != 0: + self.ocommon.log_error_message( + "Cluvfy clumgr check failed after retries. Exiting..", + self.file_name + ) + self.ocommon.prog_exit("127") - if retcode3 == 0: - msg="Cluvfy clumgr check passed!" - self.ocommon.log_info_message(msg,self.file_name) - else: - msg="Cluvfy clumgr check faild. Exiting.." - self.ocommon.log_error_message(msg,self.file_name) - self.ocommon.prog_exit("127") def perform_ssh_setup(self): - """ - Perform ssh setup - """ - #if not self.ocommon.detect_k8s_env(): - pub_nodes,vip_nodes,priv_nodes=self.ocommon.process_cluster_vars("CRS_NODES") - crs_nodes=pub_nodes.replace(" ",",") - crs_nodes_list=crs_nodes.split(",") - if len(crs_nodes_list) == 1: - self.ocommon.log_info_message("Cluster size=1. Node=" + crs_nodes_list[0],self.file_name) - user=self.ora_env_dict["DB_USER"] - cmd = '''su - {0} -c "/bin/rm -rf ~/.ssh ; sleep 1; /bin/ssh-keygen -t rsa -b 4096 -q -N \'\' -f ~/.ssh/id_rsa ; sleep 1; /bin/ssh-keyscan {1} > ~/.ssh/known_hosts 2>/dev/null ; sleep 1; /bin/cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys"'''.format(user, crs_nodes_list[0]) - output,error,retcode=self.ocommon.execute_cmd(cmd,None,None) - self.ocommon.check_os_err(output,error,retcode,None) - else: - if not self.ocommon.check_key("SSH_PRIVATE_KEY",self.ora_env_dict) and not self.ocommon.check_key("SSH_PUBLIC_KEY",self.ora_env_dict): - dbuser,dbhome,dbase,oinv=self.ocommon.get_db_params() - self.osetupssh.setupssh(dbuser,dbhome,"INSTALL") - #if self.ocommon.check_key("VERIFY_SSH",self.ora_env_dict): - #self.osetupssh.verifyssh(dbuser,"INSTALL") - else: - self.ocommon.log_info_message("SSH setup must be already completed during env setup as this this env variables SSH_PRIVATE_KEY and SSH_PUBLIC_KEY are set.",self.file_name) + """ + Perform ssh setup + """ + + pub_nodes, vip_nodes, priv_nodes = self.ocommon.process_cluster_vars("CRS_NODES") + crs_nodes = pub_nodes.replace(" ", ",") + nodes = crs_nodes.split(",") + + is_gpc = self.ocommon.check_key("CRS_GPC", self.ora_env_dict) + is_k8s = self.ocommon.detect_k8s_env() + + has_keys = ( + self.ocommon.check_key("SSH_PRIVATE_KEY", self.ora_env_dict) and + self.ocommon.check_key("SSH_PUBLIC_KEY", self.ora_env_dict) + ) + + # -------------------------------------------------- + # Case 1: Local SSH bootstrap + # - CRS_GPC with no keys (K8s or non-K8s) + # - OR single-node RAC on non-K8s + # -------------------------------------------------- + if (is_gpc and not has_keys) or (not is_gpc and len(nodes) == 1 and not is_k8s): + node = nodes[0] + user = self.ora_env_dict["DB_USER"] + + self.ocommon.log_info_message( + f"Bootstrapping local SSH for node {node}", + self.file_name + ) + + cmd = ( + 'su - {0} -c ' + '"/bin/rm -rf ~/.ssh ; ' + '/bin/mkdir -p ~/.ssh && chmod 700 ~/.ssh ; ' + '/bin/ssh-keygen -t rsa -b 4096 -q -N \'\' -f ~/.ssh/id_rsa ; ' + '/bin/ssh-keyscan -H {1} >> ~/.ssh/known_hosts 2>/dev/null ; ' + '/bin/cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys ; ' + '/bin/chmod 600 ~/.ssh/authorized_keys ~/.ssh/known_hosts"' + ).format(user, node) + + out, err, rc = self.ocommon.execute_cmd(cmd, None, None) + self.ocommon.check_os_err(out, err, rc, None) + return + + # -------------------------------------------------- + # Case 2: Multi-node RAC → CVU SSH setup + # -------------------------------------------------- + if not is_gpc and len(nodes) > 1: + if not has_keys: + dbuser, dbhome, dbase, oinv = self.ocommon.get_db_params() + self.ocommon.log_info_message( + "Multi-node RAC detected; running CVU-based SSH setup", + self.file_name + ) + self.osetupssh.setupssh(dbuser, dbhome, "INSTALL") + else: + self.ocommon.log_info_message( + "Injected SSH keys detected; skipping CVU SSH setup", + self.file_name + ) + + def db_sw_install(self): """ @@ -624,7 +721,7 @@ def get_init_params(self): initprm= initprm + ''',sga_target={0},sga_max_size={0}'''.format(sgasize) if pgasize: - initprm= initprm + ''',pga_aggregate_size={0}'''.format(pgasize) + initprm= initprm + ''',pga_aggregate_target={0}'''.format(pgasize) if processes: initprm= initprm + ''',processes={0}'''.format(processes) diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracstdby.py b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracstdby.py index af24e021f5..816dc39f05 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracstdby.py +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/oraracstdby.py @@ -546,7 +546,7 @@ def get_init_params(self): initprm= initprm + ''',sga_target={0},sga_max_size={0}'''.format(sgasize) if pgasize: - initprm= initprm + ''',pga_aggregate_size={0}'''.format(pgasize) + initprm= initprm + ''',pga_aggregate_target={0}'''.format(pgasize) if processes: initprm= initprm + ''',processes={0}'''.format(processes) diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/orasetupenv.py b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/orasetupenv.py index 877b8940a9..fb95dcd8fe 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/orasetupenv.py +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/orasetupenv.py @@ -107,7 +107,10 @@ def setup(self): ct = datetime.datetime.now() ets = ct.timestamp() totaltime=ets - bts - self.ocommon.log_info_message("Total time for setup() = [ " + str(round(totaltime,3)) + " ] seconds",self.file_name) + # -------------------------------------------------- + # Final validation (single authority) + # -------------------------------------------------- + self.finalize_orasetupenv(bts) ########### SETUP_MACHINE ENDS here #################### @@ -131,6 +134,18 @@ def populate_env_vars(self): msg="CRS_NODES is not passed as an env variable. If CRS_NODES is not passed as env variable then user must pass PUBLIC_HOSTS,VIRTUAL_HOSTS and PRIVATE_HOST as en env variable so that CRS_NODES can be populated." self.ocommon.log_error_message(msg,self.file_name) self.populate_crs_nodes() + # ---------------------------------------------------- + # Default orasetupenv timeout (in minutes) + # ---------------------------------------------------- + if not self.ocommon.check_key("ORASETUPENV_TIMEOUT_MINUTES", self.ora_env_dict): + self.ora_env_dict = self.ocommon.add_key( + "ORASETUPENV_TIMEOUT_MINUTES", "15", self.ora_env_dict + ) + + self.ocommon.log_info_message( + "ORASETUPENV_TIMEOUT_MINUTES not set, defaulting to 15 minutes", + self.file_name + ) def check_statefile(self): """ @@ -663,18 +678,45 @@ def reset_db_user_passwd(self): self.ocommon.log_info_message("Resetting OS Password for OS user : " + user,self.file_name) self.ocommon.reset_os_password(user) -###### Setting up parallel Oracle and Grid User setup using Keys #### - def setup_ssh_using_keys(self,sshi): - """ - Setting up ssh using keys - """ - self.ocommon.log_info_message("I am in setup_ssh_using_keys",self.file_name) - uohome=sshi.split(":") - self.ocommon.log_info_message("I am in setup_ssh_using_keys + uhome[0] and uhome[1]",self.file_name) - self.osetupssh.setupsshdirs(uohome[0],uohome[1],None) - self.osetupssh.setupsshusekey(uohome[0],uohome[1],None) - #self.osetupssh.verifyssh(uohome[0],None) - + ###### Setting up parallel Oracle and Grid User setup using Keys #### + def setup_ssh_using_keys(self, sshi): + """ + Setting up SSH using keys. + INSTALL : populate keys from secrets + ADDNODE : reuse existing cluster keys (DO NOT overwrite) + """ + + self.ocommon.log_info_message( + "I am in setup_ssh_using_keys", self.file_name + ) + + uohome = sshi.split(":") + user = uohome[0] + ohome = uohome[1] + + self.ocommon.log_info_message( + "setup_ssh_using_keys user={0} home={1}".format(user, ohome), + self.file_name + ) + + # ------------------------------------------------------------ + # Determine operation type + # ------------------------------------------------------------ + ctype = None + + # ------------------------------------------------------------ + # SSH directory handling + # ------------------------------------------------------------ + self.osetupssh.setupsshdirs(user, ohome, ctype) + + # ------------------------------------------------------------ + # SSH key distribution (idempotent) + # ------------------------------------------------------------ + self.osetupssh.setupsshusekey(user, ohome, ctype) + + # verifyssh intentionally deferred / conditional + # self.osetupssh.verifyssh(user, None) + ###### Setting up ssh for K8s ####### def setup_ssh_for_k8s(self): """ @@ -881,4 +923,148 @@ def comment_out_swap_space(self): "Failed to comment out {} in {}: {}".format(param_name, file_path, str(e)), self.file_name ) + + def wait_for_orasetupenv_completion(self, log_file_path): + """ + Wait until 'Total time for orasetupenv setup' is printed in the log + on all CRS public nodes. + Runs ONLY on INSTALL_NODE. + """ + + # -------------------------------------------------- + # Run only on INSTALL_NODE + # -------------------------------------------------- + install_node = self.ora_env_dict["INSTALL_NODE"] + local_host = self.ocommon.get_public_hostname() + + if local_host.lower() != install_node.lower(): + self.ocommon.log_info_message( + "Not INSTALL_NODE ({}), skipping wait_for_orasetupenv_completion".format( + local_host + ), + self.file_name + ) + return True + + timeout_minutes = int(self.ora_env_dict["ORASETUPENV_TIMEOUT_MINUTES"]) + giuser = self.ora_env_dict["GRID_USER"] + + # -------------------------------------------------- + # Get CRS public nodes using existing helper + # -------------------------------------------------- + pub_nodes, vip_nodes, priv_nodes = self.ocommon.process_cluster_vars("CRS_NODES") + + # pub_nodes is space-separated → convert to list + crs_nodes = pub_nodes.replace(" ", ",").split(",") + + self.ocommon.log_info_message( + "Waiting for orasetupenv completion on CRS nodes {} " + "(timeout={} minutes)".format(",".join(crs_nodes), timeout_minutes), + self.file_name + ) + + # Single-node cluster + if len(crs_nodes) == 1: + self.ocommon.log_info_message( + "Single node cluster detected, skipping orasetupenv wait", + self.file_name + ) + return True + + start_time = time.time() + timeout_seconds = timeout_minutes * 60 + completed_nodes = set() + marker = "Total time for orasetupenv setup" + + while True: + for node in crs_nodes: + if node in completed_nodes: + continue + cmd = [ + "su", "-", giuser, "-c", + "ssh -o ConnectTimeout=5 {} grep -q \"Total time for orasetupenv setup\" {}".format( + node, log_file_path + ) + ] + + output, error, retcode = self.ocommon.execute_cmd_noshell(cmd) + if retcode == 0: + self.ocommon.log_info_message( + "orasetupenv completed on node {}".format(node), + self.file_name + ) + completed_nodes.add(node) + + if len(completed_nodes) == len(crs_nodes): + self.ocommon.log_info_message( + "orasetupenv completed successfully on all CRS nodes", + self.file_name + ) + return True + + if time.time() - start_time > timeout_seconds: + pending_nodes = set(crs_nodes) - completed_nodes + raise TimeoutError( + "Timeout waiting for orasetupenv completion. Pending nodes: {}".format( + ",".join(pending_nodes) + ) + ) + + time.sleep(10) + def finalize_orasetupenv(self, start_ts): + """ + Final validation phase for orasetupenv. + - Waits for orasetupenv completion on all CRS nodes + - Performs a single SSH verification at the very end + """ + + ct = datetime.datetime.now() + totaltime = ct.timestamp() - start_ts + + self.ocommon.log_info_message( + "Total time for orasetupenv setup() = [ {0} ] seconds" + .format(round(totaltime, 3)), + self.file_name + ) + if self.ocommon.detect_k8s_env(): + log_file = self.ora_env_dict.get("LOG_FILE_NAME") + if not log_file: + self.ocommon.log_error_message( + "LOG_FILE_NAME is not set, cannot wait for orasetupenv completion", + self.file_name + ) + return False + + # -------------------------------------------------- + # Wait for orasetupenv completion (authoritative) + # -------------------------------------------------- + if os.path.basename(log_file) == "oracle_db_setup.log": + self.wait_for_orasetupenv_completion(log_file) + + # -------------------------------------------------- + # Final SSH verification (single point of truth) + # -------------------------------------------------- + giuser, gihome, _, _ = self.ocommon.get_gi_params() + version = self.ocommon.get_rsp_version("INSTALL", None).split(".", 1)[0] + nodes = self.ocommon.get_cluster_nodes() + + rc = self.osetupssh.verifyssh( + giuser, + gihome, + "runcluvfy.sh", + nodes, + version + ) + + if rc != 0: + self.ocommon.log_error_message( + "Final SSH verification failed after orasetupenv completion", + self.file_name + ) + return False + self.ocommon.log_info_message( + "Final SSH verification successful on all cluster nodes", + self.file_name + ) + return True diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/orasshsetup.py b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/orasshsetup.py index 36a69cad7b..f744617aae 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/orasshsetup.py +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/scripts/orasshsetup.py @@ -46,6 +46,9 @@ def __init__(self, oralogger, orahandler, oraenv, oracommon): self.ocommon.log_info_message(ex_value, self.file_name) self.ocommon.log_info_message(stack_trace, self.file_name) + # ============================================================ + # ENTRY POINT + # ============================================================ def setup(self): """ This function setup ssh between computes @@ -83,6 +86,9 @@ def setup(self): self.ocommon.log_info_message( "Total time for setup() = [ " + str(round(totaltime, 3)) + " ] seconds", self.file_name) + # ============================================================ + # PASSWORD-BASED SSH (LEGACY / FALLBACK) + # ============================================================ def setupssh(self, user, ohome, ctype): """ This function setup the ssh between user as SKIP_SSH_SETUP flag is not set @@ -128,10 +134,9 @@ def setupssh(self, user, ohome, ctype): user, gihome, sshscr, cluster_nodes, version) if retcode == 0: break - else: - i = i + 1 - self.ocommon.log_info_message( - '''SSH setup verification failed. Trying again..''', self.file_name) + i = i + 1 + self.ocommon.log_info_message( + '''SSH setup verification failed. Trying again..''', self.file_name) elif ctype == 'ADDNODE': cluster_nodes = self.ocommon.get_cluster_nodes() cluster_nodes = cluster_nodes.replace(" ", ",") @@ -159,39 +164,72 @@ def setupssh(self, user, ohome, ctype): user, gihome, sshscr, new_nodes, version) if retcode == 0: break - else: - i = i + 1 - self.ocommon.log_info_message( - '''SSH setup verification failed. Trying again..''', self.file_name) + i = i + 1 + self.ocommon.log_info_message( + '''SSH setup verification failed. Trying again..''', self.file_name) else: cluster_nodes = self.ocommon.get_cluster_nodes() def verifyssh(self, user, gihome, sshscr, cls_nodes, version): """ - This function setup the ssh between user as SKIP_SSH_SETUP flag is not set + Verify SSH connectivity (quiet). + Logs only summary information. """ + self.ocommon.log_info_message( - "Verifying SSH between nodes " + cls_nodes, self.file_name) - retcode1 = 0 - if int(version) == 19 or int(version) == 21: - nodes_list = cls_nodes.split(" ") - for node in nodes_list: - cmd = '''su - {0} -c "ssh -o BatchMode=yes -o ConnectTimeout=5 {0}@{1} echo ok 2>&1"'''.format( - user, node) - output, error, retcode = self.ocommon.execute_cmd( - cmd, None, None) - self.ocommon.check_os_err(output, error, retcode, None) - if retcode != 0: - retcode1 = 255 - else: - cls_nodes = cls_nodes.replace(" ", ",") - cmd = '''su - {0} -c "{1}/{2} comp admprv -n {3} -o user_equiv -sshonly -verbose"'''.format( - user, gihome, sshscr, cls_nodes) - output, error, retcode = self.ocommon.execute_cmd(cmd, None, None) - self.ocommon.check_os_err(output, error, retcode, None) - retcode1 = retcode + "Verifying SSH between nodes {0}".format(cls_nodes), + self.file_name + ) + + if not cls_nodes: + return 0 + + nodes = cls_nodes.replace(",", " ").split() + + # ----------------------------- + # Modern versions (19c+) + # ----------------------------- + if int(version) >= 19: + for node in nodes: + cmd = ( + 'su - {0} -c ' + '"ssh -o BatchMode=yes -o ConnectTimeout=5 ' + '{0}@{1} echo ok ' + '>/dev/null 2>&1"' + ).format(user, node) + + _, _, rc = self.ocommon.execute_cmd(cmd, None, None) + + if rc != 0: + self.ocommon.log_info_message( + "SSH verification failed for user {0} on node {1}" + .format(user, node), + self.file_name + ) + return 255 + + return 0 + + # ----------------------------- + # Legacy path + # ----------------------------- + cls_nodes = cls_nodes.replace(" ", ",") + cmd = ( + 'su - {0} -c "{1}/{2} comp admprv ' + '-n {3} -o user_equiv -sshonly ' + '>/dev/null 2>&1"' + ).format(user, gihome, sshscr, cls_nodes) + + _, _, rc = self.ocommon.execute_cmd(cmd, None, None) + + if rc != 0: + self.ocommon.log_info_message( + "SSH verification failed for user {0}".format(user), + self.file_name + ) + + return rc - return retcode1 def performsshsetup(self, user, gihome, sshscr, cls_nodes, version, password, counter, expect, script_dir): """ @@ -272,56 +310,62 @@ def performsshsetup(self, user, gihome, sshscr, cls_nodes, version, password, co def setupsshusekey(self, user, ohome, ctype): """ - This function setup the ssh between user as SKIP_SSH_SETUP flag is not set - This will be using existing key to setup the ssh + SSH setup using existing RSA key. + Quiet retries; authoritative verification at the end. """ - # Populate Known Host file - i = 1 - cluster_nodes = "" - new_nodes = self.ocommon.get_cluster_nodes() - existing_cls_node = self.ocommon.get_existing_clu_nodes(None) - giuser, gihome, gibase, oinv = self.ocommon.get_gi_params() - oraversion = self.ocommon.get_rsp_version("INSTALL", None) - version = oraversion.split(".", 1)[0].strip() - sshscr = self.ora_env_dict["SSHSCR"] if self.ocommon.check_key( - "SSHSCR", self.ora_env_dict) else "bin/cluvfy" - if user == 'grid': - sshscr = "runcluvfy.sh" - else: - sshscr = "bin/cluvfy" - file = '''{0}/{1}'''.format(gihome, sshscr) - if not self.ocommon.check_file(file, "local", None, None): - sshscr = "runcluvfy.sh" - # node=exiting_cls_node.split(" ")[0] - if existing_cls_node is not None: - cluster_nodes = existing_cls_node.replace( - ",", " ") + " " + new_nodes - else: - cluster_nodes = new_nodes - - for node1 in cluster_nodes.split(" "): - for node in cluster_nodes.split(" "): - i = 1 - cmd = '''su - {0} -c "ssh -o StrictHostKeyChecking=no -x -l {0} {3} \\"ssh-keygen -R {1}; ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N \'\' ;ssh -o StrictHostKeyChecking=no -x -l {0} {1} \\\"/bin/sh -c true\\\"\\""'''.format( - user, node, ohome, node1) - output, error, retcode = self.ocommon.execute_cmd( - cmd, None, None) - self.ocommon.check_os_err(output, error, retcode, None) - if int(retcode) != 0: - while (i < 5): - self.ocommon.log_info_message( - '''SSH setup failed for the cmd {0}. Trying again and count is {1}'''.format(cmd, i), self.file_name) - output, error, retcode = self.ocommon.execute_cmd( - cmd, None, None) - self.ocommon.check_os_err(output, error, retcode, None) - if (retcode == 0): - break - else: - time.sleep(5) - i = i+1 + self.ocommon.log_info_message( + "Setting up SSH trust for user {0} ({1})".format( + user, ctype or "INSTALL" + ), + self.file_name + ) + + new_nodes = self.ocommon.get_cluster_nodes() or "" + existing_nodes = self.ocommon.get_existing_clu_nodes(None) - retcode = self.verifyssh(user, gihome, sshscr, new_nodes, version) + all_nodes = sorted(set( + (existing_nodes.replace(",", " ").split() if existing_nodes else []) + + (new_nodes.replace(",", " ").split() if new_nodes else []) + )) + + max_retries = 5 + retry_sleep = 20 # increased delay to reduce noise + + for src in all_nodes: + for tgt in all_nodes: + self.ocommon.log_info_message( + "Configuring SSH trust {0} -> {1}".format(src, tgt), + self.file_name + ) + + cmd = ( + 'su - {0} -c "ssh -o StrictHostKeyChecking=no -x -l {0} {1} ' + '\\\"ssh-keygen -R {2} >/dev/null 2>&1; ' + 'test -s ~/.ssh/id_rsa || ' + 'ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N \\\\\\\"\\\\\\\"; ' + 'ssh -o StrictHostKeyChecking=no -x -l {0} {2} ' + '\\\\\\\"/bin/sh -c true\\\\\\\"\\\"\"' + ).format(user, src, tgt) + + success = False + + for attempt in range(1, max_retries + 1): + _, _, rc = self.ocommon.execute_cmd(cmd, None, None) + if rc == 0: + success = True + break + time.sleep(retry_sleep) + + if not success: + self.ocommon.log_warn_message( + "SSH trust not ready yet for {0} -> {1}. " + "This is expected during setup and can be ignored for now; " + "final SSH verification will be performed later.".format( + src, tgt + ), + self.file_name + ) def setupsshdirs(self, user, ohome, ctype): """ @@ -344,4 +388,4 @@ def setupsshdirs(self, user, ohome, ctype): user, group, sshdir) for cmd in cmd1, cmd2, cmd3, cmd4, cmd5, cmd6, cmd7, cmd8, cmd9, cmd10: output, error, retcode = self.ocommon.execute_cmd(cmd, None, None) - self.ocommon.check_os_err(output, error, retcode, False) + self.ocommon.check_os_err(output, error, retcode, False) \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/setup_rac_host.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/setup_rac_host.sh index 85a00731fa..c6091b416e 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/setup_rac_host.sh +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/containerfiles/setup_rac_host.sh @@ -39,7 +39,7 @@ setup_nfs_variables() { export RACNODE1_CRS_PRIVATE_IP1=192.168.17.170 export RACNODE1_CRS_PRIVATE_IP2=192.168.18.170 export INSTALL_NODE=racnodep1 - export RAC_IMAGE_NAME=localhost/oracle/database-rac:21c + export RAC_IMAGE_NAME=localhost/oracle/database-rac:23.26ai export CRS_NODES="\"pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip\"" export SCAN_NAME=racnodepc1-scan export CRS_ASM_DISCOVERY_STRING="/oradata" @@ -66,7 +66,7 @@ setup_nfs_variables() { export DNS_PRIVATE2_IP=192.168.18.25 export CMAN_CONTAINER_NAME=racnodepc1-cman export CMAN_HOST_NAME=racnodepc1-cman - export CMAN_IMAGE_NAME="localhost/oracle/client-cman:21.3.0" + export CMAN_IMAGE_NAME="localhost/oracle/client-cman:23.26ai" export CMAN_PUBLIC_IP=10.0.20.15 export CMAN_PUBLIC_HOSTNAME="racnodepc1-cman" export DB_HOSTDETAILS="HOST=racnodepc1-scan:RULE_ACT=accept,HOST=racnodep1:IP=10.0.20.170" @@ -156,7 +156,7 @@ setup_blockdevices_variables(){ export RACNODE1_CRS_PRIVATE_IP1=192.168.17.170 export RACNODE1_CRS_PRIVATE_IP2=192.168.18.170 export INSTALL_NODE=racnodep1 - export RAC_IMAGE_NAME=localhost/oracle/database-rac:21c + export RAC_IMAGE_NAME=localhost/oracle/database-rac:23.26ai export CRS_NODES="\"pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip\"" export SCAN_NAME=racnodepc1-scan export ASM_DEVICE1="/dev/asm-disk1" @@ -187,7 +187,7 @@ setup_blockdevices_variables(){ export DNS_PRIVATE2_IP=192.168.18.25 export CMAN_CONTAINER_NAME=racnodepc1-cman export CMAN_HOST_NAME=racnodepc1-cman - export CMAN_IMAGE_NAME="localhost/oracle/client-cman:21.3.0" + export CMAN_IMAGE_NAME="localhost/oracle/client-cman:23.26ai" export CMAN_PUBLIC_IP=10.0.20.15 export CMAN_PUBLIC_HOSTNAME="racnodepc1-cman" export DB_HOSTDETAILS="HOST=racnodepc1-scan:RULE_ACT=accept,HOST=racnodep1:IP=10.0.20.170" @@ -261,7 +261,7 @@ setup_rac_container() { podman-compose start ${RACNODE1_CONTAINER_NAME} podman-compose start ${RACNODE2_CONTAINER_NAME} - RAC_LOG="/tmp/orod/oracle_rac_setup.log" + RAC_LOG="/tmp/orod/oracle_db_setup.log" success_message_line="ORACLE RAC DATABASE IS READY TO USE" last_lines="" start_time=$(date +%s) diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/CLEANUP.md b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/CLEANUP.md index 0f0a30cc39..8079dee76a 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/CLEANUP.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/CLEANUP.md @@ -1,5 +1,5 @@ # Cleanup Oracle RAC Database Container Environment -To clean up the Oracle Real Application Clusters (Oracle RAC) environment, complete the following commands. +To clean up the Oracle Real Application Clusters (Oracle RAC) environment, complete the following commands. ```bash podman inspect rac-dnsserver &> /dev/null && podman rm -f rac-dnsserver @@ -18,13 +18,13 @@ If you have set up the container environment to use block devices, then clean up dd if=/dev/zero of=/dev/oracleoci/oraclevdd bs=8k count=10000 dd if=/dev/zero of=/dev/oracleoci/oraclevde bs=8k count=10000 ``` -If you have set up the container environment using an Oracle Slim Image, then clean up the data folders: +If you have set up the container environment using an Oracle Slim Image, then clean up the data folders: ```bash rm -rf /scratch/rac/cluster01/node1/* rm -rf /scratch/rac/cluster01/node2/* ``` -If you have set up the container environment with User Defined Response files, then clean up the response files: +If you have set up the container environment with User Defined Response files, then clean up the response files: ```bash rm -rf /scratch/common_scripts/podman/rac/* ``` diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/CONNECTING.md b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/CONNECTING.md index 7c3c44f5dd..c49c04e928 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/CONNECTING.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/CONNECTING.md @@ -17,12 +17,12 @@ First Validate if Container is healthy or not by running- ```bash podman ps -a -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -598385416fd7 localhost/oracle/rac-dnsserver:latest /bin/sh -c exec $... 55 minutes ago Up 55 minutes (healthy) rac-dnsserver -835e3d113898 localhost/oracle/rac-storage-server:latest 55 minutes ago Up 55 minutes (healthy) racnode-storage -9ba7bbee9095 localhost/oracle/database-rac:21c 52 minutes ago Up 52 minutes (healthy) racnodep1 -ebbf520b0c95 localhost/oracle/database-rac:21c 52 minutes ago Up 52 minutes (healthy) racnodep2 -36df843594d9 localhost/oracle/client-cman:21.3.0 /bin/sh -c exec $... 12 minutes ago Up 12 minutes (healthy) 0.0.0.0:1521->1521/tcp racnodepc1-cman +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +598385416fd7 localhost/oracle/rac-dnsserver:latest /bin/sh -c exec $... 55 minutes ago Up 55 minutes (healthy) rac-dnsserver +835e3d113898 localhost/oracle/rac-storage-server:latest 55 minutes ago Up 55 minutes (healthy) racnode-storage +9ba7bbee9095 localhost/oracle/database-rac:23.26ai 52 minutes ago Up 52 minutes (healthy) racnodep1 +ebbf520b0c95 localhost/oracle/database-rac:23.26ai 52 minutes ago Up 52 minutes (healthy) racnodep2 +36df843594d9 localhost/oracle/client-cman:23.26ai /bin/sh -c exec $... 12 minutes ago Up 12 minutes (healthy) 0.0.0.0:1521->1521/tcp racnodepc1-cman ``` Look for `(healthy)` next to container names under `STATUS` section. @@ -55,9 +55,9 @@ CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online -[grid@racnodep1 u01]$ crsctl stat res -t +[grid@racnodep1 ~]$ crsctl stat res -t -------------------------------------------------------------------------------- -Name Target State Server State details +Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- @@ -68,8 +68,8 @@ ora.chad ONLINE ONLINE racnodep1 STABLE ONLINE ONLINE racnodep2 STABLE ora.helper - OFFLINE OFFLINE racnodep1 STABLE - OFFLINE OFFLINE racnodep2 STABLE + OFFLINE OFFLINE racnodep1 IDLE,STABLE + OFFLINE OFFLINE racnodep2 IDLE,STABLE ora.net1.network ONLINE ONLINE racnodep1 STABLE ONLINE ONLINE racnodep2 STABLE @@ -89,11 +89,9 @@ ora.DATA.dg(ora.asmgroup) 1 ONLINE ONLINE racnodep1 STABLE 2 ONLINE ONLINE racnodep2 STABLE ora.LISTENER_SCAN1.lsnr - 1 ONLINE ONLINE racnodep1 STABLE + 1 ONLINE ONLINE racnodep2 STABLE ora.LISTENER_SCAN2.lsnr 1 ONLINE ONLINE racnodep1 STABLE -ora.LISTENER_SCAN3.lsnr - 1 ONLINE ONLINE racnodep2 STABLE ora.asm(ora.asmgroup) 1 ONLINE ONLINE racnodep1 Started,STABLE 2 ONLINE ONLINE racnodep2 Started,STABLE @@ -104,26 +102,29 @@ ora.asmnet2.asmnetwork(ora.asmgroup) 1 ONLINE ONLINE racnodep1 STABLE 2 ONLINE ONLINE racnodep2 STABLE ora.cdp1.cdp - 1 ONLINE ONLINE racnodep1 STABLE + 1 OFFLINE OFFLINE STABLE ora.cdp2.cdp - 1 ONLINE ONLINE racnodep1 STABLE -ora.cdp3.cdp - 1 ONLINE ONLINE racnodep2 STABLE + 1 OFFLINE OFFLINE STABLE ora.cvu - 1 ONLINE ONLINE racnodep1 STABLE + 1 ONLINE ONLINE racnodep2 STABLE +ora.cvuhelper + 1 OFFLINE OFFLINE STABLE ora.orclcdb.db 1 ONLINE ONLINE racnodep1 Open,HOME=/u01/app/o - racle/product/23ai/db - home_1,STABLE + racle/product/26ai/d + bhome_1,STABLE 2 ONLINE ONLINE racnodep2 Open,HOME=/u01/app/o - racle/product/23ai/db - home_1,STABLE + racle/product/26ai/d + bhome_1,STABLE +ora.orclcdb.orclcdb_orclpdb.svc + 1 ONLINE ONLINE racnodep2 STABLE + 2 ONLINE ONLINE racnodep1 STABLE ora.orclcdb.orclpdb.pdb 1 ONLINE ONLINE racnodep1 READ WRITE,STABLE 2 ONLINE ONLINE racnodep2 READ WRITE,STABLE ora.orclcdb.soepdb.svc - 1 ONLINE ONLINE racnodep1 STABLE - 2 ONLINE ONLINE racnodep2 STABLE + 1 ONLINE ONLINE racnodep2 STABLE + 2 ONLINE ONLINE racnodep1 STABLE ora.racnodep1.vip 1 ONLINE ONLINE racnodep1 STABLE ora.racnodep2.vip @@ -131,14 +132,12 @@ ora.racnodep2.vip ora.rhpserver 1 OFFLINE OFFLINE STABLE ora.scan1.vip - 1 ONLINE ONLINE racnodep1 STABLE + 1 ONLINE ONLINE racnodep2 STABLE ora.scan2.vip 1 ONLINE ONLINE racnodep1 STABLE -ora.scan3.vip - 1 ONLINE ONLINE racnodep2 STABLE -------------------------------------------------------------------------------- -/u01/app/21c/grid/bin/olsnodes -n +[grid@racnodep1 ~]$ olsnodes -n racnodep1 1 racnodep2 2 ``` @@ -148,7 +147,7 @@ Validate Oracle RAC Database from within Container- su - oracle #Confirm the status of Oracle Database instances: -[oracle@racnodep1 ~]$ srvctl status database -d ORCLCDB +[oracle@racnodep1 ~]$ srvctl status database -d ORCLCDB Instance ORCLCDB1 is running on node racnodep1 Instance ORCLCDB2 is running on node racnodep2 @@ -166,7 +165,7 @@ SCAN VIP is enabled. ``` ## Debugging Oracle RAC Containers -If the install fails for any reason, log in to container using the above command and check `/tmp/orod/oracle_rac_setup.log`. You can also review the Grid Infrastructure logs located at `$GRID_BASE/diag/crs` and check for failure logs. If the failure occurred during the database creation then check the database logs. +If the install fails for any reason, log in to container using the above command and check `/tmp/orod/oracle_db_setup.log`. You can also review the Grid Infrastructure logs located at `$GRID_BASE/diag/crs` and check for failure logs. If the failure occurred during the database creation then check the database logs. ## Client Connection diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/DELETION.md b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/DELETION.md index b761e57855..e63619b425 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/DELETION.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/DELETION.md @@ -13,7 +13,7 @@ python3 main.py --delracnode="del_rachome=true;del_gridnode=true" Validate racnodep3 is deleted successfully from Oracle RAC on Container Cluster - ```bash podman exec -it racnodep1 bash -[root@racnodep1 bin]# /u01/app/21c/grid/bin/olsnodes -n +[root@racnodep1 bin]# /u01/app/26ai/grid/bin/olsnodes -n racnodep1 1 racnodep2 2 ``` diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/ENVIRONMENTVARIABLES.md b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/ENVIRONMENTVARIABLES.md index 2fa9759343..048f574663 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/ENVIRONMENTVARIABLES.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/ENVIRONMENTVARIABLES.md @@ -1,50 +1,48 @@ # Environment Variables Explained for Oracle RAC on Podman -This section provides information about the environment variables that can be used when creating Oracle RAC on Containers. - | Environment Variable | Mandatory/Optional | Usage | Description | |--------------------------|---------------------|------------|--------------------------------------------------------------| | DNS_SERVERS | Mandatory | All | Specify the comma-separated list of DNS server IP addresses where both Oracle RAC nodes are resolved. | | OP_TYPE | Mandatory | All | Specify the operation type. It can accept setuprac/setupgrid/addgridnode/racaddnode/setupracstandby. | -| CRS_NODES | Mandatory | All | Specify the CRS nodes in the format pubhost:pubhost1,viphost:viphost1;pubhost:pubhost2,viphost:viphost2. You can add as many hosts separated by semicolon. publhost and viphost are separated by comma. | -| SCAN_NAME | Mandatory | All | Specify the SCAN name. | -| CRS_ASM_DEVICE_LIST | Mandatory | All | Specify the ASM disk lists. | -| PUBLIC_HOSTS_DOMAIN | Optional | All | Specify public domain where RAC Containers are resolving to. | -| CRS_ASM_DISCOVERY_STRING | Optional | All | Specify the discovery string for ASM. | -| ORACLE_SID | Optional | All | Default value set to ORCLCDB. | -| ORACLE_PDB | Optional | All | Default value set to ORCLPDB. | -| ORACLE_CHARACTERSET | Optional | All | Default value set to AL32UTF8. | -| PWD_KEY | Mandatory | All | Pass the podman secret name for the key used while generating podman secrets. Default set to keysecret. | +| CRS_NODES | Mandatory | All | Specify the CRS nodes in the format pubhost:pubhost1,viphost:viphost1;pubhost:pubhost2,viphost:viphost2. You can add as many hosts separated by semicolon. pubhost and viphost are separated by comma. | +| SCAN_NAME | Mandatory | All | Specify the SCAN name. | +| CRS_ASM_DEVICE_LIST | Mandatory | All | Specify the ASM disk lists. | +| PUBLIC_HOSTS_DOMAIN | Optional | All | Specify public domain where RAC containers are resolving to. | +| CRS_ASM_DISCOVERY_STRING | Optional | All | Specify the discovery string for ASM. | +| ORACLE_SID | Optional | All | Default value set to ORCLCDB. | +| ORACLE_PDB | Optional | All | Default value set to ORCLPDB. | +| ORACLE_CHARACTERSET | Optional | All | Default value set to AL32UTF8. | +| PWD_KEY | Mandatory | All | Pass the podman secret name for the key used while generating podman secrets. Default value is set to keysecret. | | DB_PWD_FILE | Mandatory | All | Pass the podman secret name for the Oracle RAC Database to be used while generating podman secrets. Default set to pwdsecret. | | INIT_SGA_SIZE | Optional | All | Set this environment variable when you want to set the size of SGA for RAC containers. | | INIT_PGA_SIZE | Optional | All | Set this environment variable when you want to set the size of PGA for RAC containers. | | CRS_PRIVATE_IP1 | Mandatory | All | Set this environment variable when you want to set the private IP for the first private network for RAC container. | | CRS_PRIVATE_IP2 | Mandatory | All | Set this environment variable when you want to set the private IP for the second private network for RAC container. | -| INSTALL_NODE | Mandatory | All | Set this environment variable to the new Oracle node where the actual RAC cluster installation will happen. e.g., racnodep1/racnodep3 etc. | -| EXISTING_CLS_NODE | Mandatory | Mandatory only during Node Addition to existing RAC Cluster | This is set during addition of node to Existing RAC Cluster. Set this environment variable to existing Oracle RAC node e.g., racnodep1, racnodep2. | -| DB_ASM_DEVICE_LIST | Optional | All | Comma-separated list of ASM disk names with their full paths. | -| RECO_ASM_DEVICE_LIST | Optional | All | Comma-separated list of ASM disk names with their full paths. | -| DB_DATA_FILE_DEST | Optional | All | Name of the diskgroup where database data files will be stored. | -| DB_RECOVERY_FILE_DEST | Optional | All | Name of the diskgroup where database recovery files (archivelogs) will be stored. | -| CMAN_HOST | Optional | All | Specify the host for Oracle Connection Manager (CMAN). Default value is set to racnodepc1-cman. | -| CMAN_PORT | Optional | All | Specify the port for Oracle Connection Manager (CMAN). Default port is set to 1521. | +| INSTALL_NODE | Mandatory | All | Set this environment variable to the Oracle node where the actual RAC cluster installation will happen. e.g. During deploying two node RAC database with racnodep1 and racnodep2, you can set it to racnodep1. In case of addition third node named racnodep3, set it to the new node name i.e. racnodep3 | +| EXISTING_CLS_NODE | Mandatory only during Node Addition | Node Addition | This is set during addition of node to Existing RAC Cluster. Set this environment variable to existing Oracle RAC node e.g., racnodep1, racnodep2. | +| DB_ASM_DEVICE_LIST | Optional | All | Comma-separated list of ASM disk names with full paths. | +| RECO_ASM_DEVICE_LIST | Optional | All | Comma-separated list of ASM disk names with full paths. | +| DB_DATA_FILE_DEST | Optional | All | Name of the diskgroup where database data files will be stored. | +| DB_RECOVERY_FILE_DEST | Optional | All | Name of the diskgroup for Fast Recovery Area usage. | +| CMAN_HOST | Optional | All | Specify the host for Oracle Connection Manager (CMAN). Default value is set to racnodepc1-cman. | +| CMAN_PORT | Optional | All | Specify the port for Oracle Connection Manager (CMAN). Default port is set to 1521. | | DB_UNIQUE_NAME | Mandatory | Standby (DG Setup) | Specify the unique name for the standby database. | | PRIMARY_DB_SCAN_NAME | Mandatory | Standby (DG Setup) | Specify the SCAN name of the primary database. | | CRS_ASM_DISKGROUP | Mandatory | Standby (DG Setup) | Specify the ASM diskgroup for the standby database. | | PRIMARY_DB_UNIQUE_NAME | Mandatory | Standby (DG Setup) | Specify the unique name of the primary database. | | PRIMARY_DB_NAME | Mandatory | Standby (DG Setup) | Specify the name of the primary database. | | DB_BLOCK_CHECKSUM | Mandatory | Primary and Standby (DG Setup) | Specify the type of DB block checksum to use. | -| DB_SERVICE | Optional | All | Specify the database service. Format: service:soepdb. | -| GRID_HOME | Mandatory | Setup using Slim Image | Path to Oracle Grid Infrastructure home directory. Default value is `/u01/app/21c/grid`. | +| DB_SERVICE | Optional | All | Specify the database service. Format: service:soepdb. | +| GRID_HOME | Mandatory | Setup using Slim Image | Path to Oracle Grid Infrastructure home directory. Default value is `/u01/app/26ai/grid`. | | GRID_BASE | Mandatory | Setup using Slim Image | Path to the base directory of Oracle Grid Infrastructure. Default value is `/u01/app/grid`. | -| DB_HOME | Mandatory | Setup using Slim Image | Path to Oracle Database home directory. Default value is `/u01/app/oracle/product/21c/dbhome_1`. | +| DB_HOME | Mandatory | Setup using Slim Image | Path to Oracle Database home directory. Default value is `/u01/app/oracle/product/26ai/dbhome_1`. | | DB_BASE | Mandatory | Setup using Slim Image | Path to the base directory of Oracle Database. Default value is `/u01/app/oracle`. | | INVENTORY | Mandatory | Setup using Slim Image | Path to the Oracle Inventory directory. Default value is `/u01/app/oraInventory`. | -| STAGING_SOFTWARE_LOC | Mandatory | Setup using Slim Image | Location where the Oracle software zip files are staged. Default value is `/scratch/software/21c/goldimages/`. | -| GRID_SW_ZIP_FILE | Mandatory | Setup using Slim Image | Name of the Oracle Grid Infrastructure software zip file. Default value is `LINUX.X64_213000_grid_home.zip`. | -| DB_SW_ZIP_FILE | Mandatory | Setup using Slim Image | Name of the Oracle Database software zip file. Default value is `LINUX.X64_213000_db_home.zip`. | -| GRID_RESPONSE_FILE | Mandatory | Setup using User Defined Response Files | Path to the Oracle Grid Infrastructure response file. Default value is `/tmp/grid_21c.rsp`. | -| DBCA_RESPONSE_FILE | Mandatory | Setup using User Defined Response Files | Path to the Oracle Database Configuration Assistant (DBCA) response file. Default value is `/tmp/dbca_21c.rsp`. | +| STAGING_SOFTWARE_LOC | Mandatory | Setup using Slim Image | Location where the Oracle software zip files are staged. Default value is `/scratch/software/23.26ai/goldimages`. | +| GRID_SW_ZIP_FILE | Mandatory | Setup using Slim Image | Name of the Oracle Grid Infrastructure software zip file. Default value is `LINUX.X64_260000_grid_home.zip`. | +| DB_SW_ZIP_FILE | Mandatory | Setup using Slim Image | Name of the Oracle Database software zip file. Default value is `LINUX.X64_260000_db_home.zip`. | +| GRID_RESPONSE_FILE | Mandatory | Setup using User Defined Response Files | Path to the Oracle Grid Infrastructure response file. Default value is `/tmp/grid_23.26ai.rsp`. | +| DBCA_RESPONSE_FILE | Mandatory | Setup using User Defined Response Files | Path to the Oracle Database Configuration Assistant (DBCA) response file. Default value is `/tmp/dbca_23.26ai.rsp`. | ## License diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/developers/ENVVARIABLESCOMPOSE.md b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/developers/ENVVARIABLESCOMPOSE.md index 1821f037f3..91f30a8ccb 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/developers/ENVVARIABLESCOMPOSE.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/developers/ENVVARIABLESCOMPOSE.md @@ -22,7 +22,7 @@ Learn about the environment variables (env variables) that you can use when crea | RACNODE1_CRS_PRIVATE_IP1 | Default set to `192.168.17.170`. Set this env variable when you want to set the private IP for the first private network of the first Oracle RAC container. | | RACNODE1_CRS_PRIVATE_IP2 | Default set to `192.168.18.170`. Set this env variable when you want to set the private IP for the second private network of the first Oracle RAC container. | | INSTALL_NODE | Default set to `racnodep1`. Set this env variable to any of the RAC containers. Note: This value will remain the same across the Oracle RAC Cluster for both nodes where the actual Oracle RAC cluster installation occurs. | -| RAC_IMAGE_NAME | Default set to `localhost/oracle/database-rac:21.0.0`. Set this env variable when you want to specify the Oracle RAC Image name. | +| RAC_IMAGE_NAME | Default set to `localhost/oracle/database-rac:23.26ai`. Set this env variable when you want to specify the Oracle RAC Image name. | | CRS_NODES | Default set to `"pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip"`. Set this env variable to a value with the same format used here for all the Oracle RAC cluster node cluster setup. | | SCAN_NAME | Default set to `racnodepc1-scan`. Set this env variable when you want to specify a resolvable scan name from the DNS. | | CRS_ASM_DISCOVERY_STRING | With NFS storage devices the default is set to `/oradata`. With block devices, the default is set to `/dev/asm-disk*`. This value specifies the discovery string for ASM. Do not change this unless you have modified `podman-compose.yml` to find a different discovery string. | @@ -38,7 +38,7 @@ Learn about the environment variables (env variables) that you can use when crea | KEY_SECRET_FILE | Default set to `/opt/.secrets/key.pem`. Do not change this value. | | CMAN_CONTAINER_NAME | Default set to `racnodepc1-cman`. Set this env variable when you want to set a connection manager container name. | | CMAN_HOST_NAME | Default set to `racnodepc1-cman`. Set this env variable when you want to set the hostname for the connection manager container. | -| CMAN_IMAGE_NAME | Default set to `"localhost/oracle/client-cman:21.0.0"`. Set this env variable when you want to set the connection manager image name. | +| CMAN_IMAGE_NAME | Default set to `"localhost/oracle/client-cman:23.26ai"`. Set this env variable when you want to set the connection manager image name. | | CMAN_PUBLIC_IP | Default set to 10.0.20.15. Set this env variable when you want to set public ip for connection manager container. | | CMAN_PUBLIC_HOSTNAME | Default set to `racnodepc1-cman`. Set this env variable when you want to set the public hostname for the connection manager container. | | DB_HOSTDETAILS | Default set to `HOST=racnodepc1-scan:RULE_ACT=accept,HOST=racnodep1:IP=10.0.20.170`. Set this env variable when you want to use connection manager container to set details for the database host. | diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/developers/OTHERS.md b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/developers/OTHERS.md index 4657975c99..1ceaae2f69 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/developers/OTHERS.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/developers/OTHERS.md @@ -1,6 +1,6 @@ # Oracle Real Application Clusters in Linux Containers for Developers -Learn about container deployment options for Oracle Real Application Clusters (Oracle RAC) Release 21c (v21.3). +Learn about container deployment options for Oracle Real Application Clusters (Oracle RAC) Release 23.26ai (26ai). ## Overview of Running Oracle RAC in Containers @@ -9,9 +9,9 @@ Oracle Real Application Clusters (Oracle RAC) is an option for the award-winning Oracle RAC uses Oracle Clusterware as a portable cluster software that allows clustering of independent servers so that they cooperate as a single system, and Oracle Automatic Storage Management (Oracle ASM) to provide simplified storage management that is consistent across all servers and storage platforms. Oracle Clusterware and Oracle ASM are part of the Oracle Grid Infrastructure, which bundles both solutions in an easy-to-deploy software package. -For more information on Oracle RAC Database 21c, refer to the [Oracle Database documentation](http://docs.oracle.com/en/database/). +For more information on Oracle RAC Database 23.26ai, refer to the [Oracle Database documentation](http://docs.oracle.com/en/database/). -This guide helps you install Oracle RAC on Containers on Host Machines as explained in detail below. With the current release, you prepare the host machine, build or use pre-built Oracle RAC Container Images v21.3, and set up Oracle RAC on Single or Multiple Host machines with Oracle ASM. +This guide helps you install Oracle RAC on Containers on Host Machines as explained in detail below. With the current release, you prepare the host machine, build or use pre-built Oracle RAC Container Images 23.26ai, and set up Oracle RAC on Single or Multiple Host machines with Oracle ASM. In this installation guide, we use [Podman](https://docs.podman.io/en/v3.0/) to create Oracle RAC Containers and manage them. ## Using this Documentation @@ -66,8 +66,8 @@ If you have a preconfigured DNS server in your environment, then you can replace * The Oracle RAC `Containerfile` does not contain any Oracle software binaries. Download the following software from the [Oracle Technology Network](https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html), if you are planning to build Oracle RAC Container Images from the next section. However, if you are using pre-built RAC images from the Oracle Container Registry, you can skip this step. - - Oracle Grid Infrastructure 21c (21.3) for Linux x86-64 - - Oracle Database 21c (21.3) for Linux x86-64 + - Oracle Grid Infrastructure 23.26ai (26ai) for Linux x86-64 + - Oracle Database 23.26ai (26ai) for Linux x86-64 **Notes** @@ -81,12 +81,12 @@ Oracle RAC is supported for production use on Podman starting with Oracle Databa Refer to [this documentation](https://docs.oracle.com/en/operating-systems/oracle-linux/docker/docker-UsingDockerRegistries.html#docker-registry) for details on using the Oracle Container Registry. Example of pulling an Oracle RAC Image from the Oracle Container Registry: + ```bash -# For Oracle RAC Container Image podman pull container-registry.oracle.com/database/rac_ru:latest -podman tag container-registry.oracle.com/database/rac_ru:latest localhost/oracle/database-rac:21c +podman tag container-registry.oracle.com/database/rac_ru:latest localhost/oracle/database-rac:23.26ai ``` -**NOTE** Currently, latest tag in Oracle Container registry represents `21.16.0` tag. If you are pulling any other version of container image, then retag approriately as per your environment to use in `podman create` commands later. +**NOTE** Currently, latest tag in Oracle Container registry represents `23.26ai` tag. If you are pulling any other version of container image, then retag approriately as per your environment to use in `podman create` commands later. If you are using pre-built Oracle RAC images from the Oracle Container Registry, then you can skip the section that follows where we build the container images. @@ -104,9 +104,9 @@ Before you begin, you must download grid and database binaries and stage them un ```bash ./buildContainerImage.sh -v ``` -Example: Building Oracle RAC image for v 21.3.0- +Example: Building Oracle RAC image for v 26.0.0- ```bash - ./buildContainerImage.sh -v 21.3.0 + ./buildContainerImage.sh -v 26.0.0 ``` ### Building Oracle RAC Database Container Slim Image @@ -114,9 +114,9 @@ In this document, an Oracle RAC container slim image refers to a container image ```bash ./buildContainerImage.sh -v -i -o '--build-arg SLIMMING=true' ``` - Example: Building Oracle Slim Image for v 21.3.0- + Example: Building Oracle Slim Image for version 26.0.0- ```bash - ./buildContainerImage.sh -v 21.3.0 -i -o '--build-arg SLIMMING=true' + ./buildContainerImage.sh -v 26.0.0 -i -o '--build-arg SLIMMING=true' ``` To build an Oracle RAC slim image, you must use `--build-arg SLIMMING=true`. To change the base image for building Oracle RAC images, you must use `--build-arg BASE_OL_IMAGE=oraclelinux:9`. @@ -130,7 +130,7 @@ In this document, an Oracle RAC container slim image refers to a container image -o: passes on container build option (e.g., --build-arg SLIMMIMG=true for slim,--build-arg BASE_OL_IMAGE=oraclelinux:9 to change base image). The default is "--build-arg SLIMMING=false" ``` - Ensure that you have enough space in `/var/lib/containers` while building the Oracle RAC image. Also, if required use `export TMPDIR=` for Podman to refer to any other folder as the temporary podman cache location instead of the default '/tmp' location. -- After the `21.3.0` Oracle RAC container image is built, to apply the 21c RU and build the 21c patched image, refer to [Example of how to create a patched database image](./samples/applypatch/README.md). +- After Oracle RAC Container image is built, you can also apply RU and one-off patches to build the patched image. For example: After the `21.3.0` Oracle RAC container image is built, to apply the 21c RU and build the 21c patched image, refer to [Example of how to create a patched database image](./samples/applypatch/README.md). - If you are behind a proxy wall, then you must set the `https_proxy` or `http_proxy` environment variable based on your environment before building the image. - In the slim image case, the resulting images will not contain the Oracle Grid Infrastructure binaries and Oracle RAC Database binaries. @@ -217,12 +217,14 @@ Refer to [README](./DELETION.md) for instructions on how to delete a Node from E ## Building a Patched Oracle RAC Container Image -If you want to build a patched image based on a base 21.3.0 container image, then refer to the GitHub page [Example of how to create a patched database image](./samples/applypatch/README.md). +If you want to build a patched image based on a base container image, then refer to the GitHub page [Example of how to create a patched database image](./samples/applypatch/README.md). ## Sample Container Files for Older Releases This project offers example container files for Oracle Grid Infrastructure and Oracle Real Application Clusters for dev and test: +* Oracle Database 23.26ai Oracle Grid Infrastructure (26ai) for Linux x86-64 +* Oracle Database 23.26ai (26ai) for Linux x86-64 * Oracle Database 21c Oracle Grid Infrastructure (21.3) for Linux x86-64 * Oracle Database 21c (21.3) for Linux x86-64 * Oracle Database 19c Oracle Grid Infrastructure (19.3) for Linux x86-64 @@ -239,7 +241,7 @@ Refer to [README](./CLEANUP.md) for instructions on how to connect to an Oracle ## Support -At the time of this release, Oracle RAC on Podman is supported for Oracle Linux 9.3 or later. To see the current Linux support certifications, refer to [Oracle RAC on Podman Documentation](https://docs.oracle.com/en/database/oracle/oracle-database/21/install-and-upgrade.html) +At the time of this release, Oracle RAC on Podman is supported for Oracle Linux 8.5 or later. To see the current Linux support certifications, refer to [Oracle RAC on Podman Documentation](https://docs.oracle.com/en/database/oracle/oracle-database/21/install-and-upgrade.html) ## License diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/developers/README.md b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/developers/README.md index c96e8e559e..5ef2e398d5 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/developers/README.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/developers/README.md @@ -6,9 +6,9 @@ Learn about container deployment options for Oracle Real Application Clusters (O Oracle Real Application Clusters (Oracle RAC) is an option for the award-winning Oracle Database Enterprise Edition. Oracle RAC is a cluster database with a shared cache architecture that overcomes the limitations of traditional shared-nothing and shared-disk approaches to provide highly scalable and available database solutions for all business applications. Oracle RAC uses Oracle Clusterware as a portable cluster software that allows clustering of independent servers so that they cooperate as a single system and Oracle Automatic Storage Management (Oracle ASM) to provide simplified storage management that is consistent across all servers and storage platforms. -Oracle Clusterware and Oracle ASM are part of the Oracle Grid Infrastructure, which bundles both solutions in an easy-to-deploy software package. For more information on Oracle RAC Database 21c refer to the [Oracle Database documentation](http://docs.oracle.com/en/database/). +Oracle Clusterware and Oracle ASM are part of the Oracle Grid Infrastructure, which bundles both solutions in an easy-to-deploy software package. For more information on Oracle RAC Database 23.26ai refer to the [Oracle Database documentation](http://docs.oracle.com/en/database/). -This guide helps you install Oracle RAC on Containers on Host Machines as explained in detail below. With the current release, you prepare the host machine, build or use pre-built Oracle RAC Container Images v21.0, and setup Oracle RAC on Single or Multiple Host machines with Oracle ASM. +This guide helps you install Oracle RAC on Containers on Host Machines as explained in detail below. With the current release, you prepare the host machine, build or use pre-built Oracle RAC Container Images, and setup Oracle RAC on Single or Multiple Host machines with Oracle ASM. In this installation guide, we use [Podman](https://docs.podman.io/en/v3.0/) to create Oracle RAC Containers and manage them. ## Using this Documentation @@ -71,7 +71,7 @@ Example of pulling an Oracle RAC Image from the Oracle Container Registry: ```bash # For Oracle RAC Container Image- podman pull container-registry.oracle.com/database/rac_ru:latest -podman tag container-registry.oracle.com/database/rac_ru:latest localhost/oracle/database-rac:21c +podman tag container-registry.oracle.com/database/rac_ru:latest localhost/oracle/database-rac:23.26ai ``` **Notes** @@ -82,10 +82,10 @@ podman tag container-registry.oracle.com/database/rac_ru:latest localhost/oracle - When Podman Images are ready like the below example used in this quickstart developer guide, you can proceed to the next steps- ```bash podman images - localhost/oracle/client-cman 21.3.0 7b095637d7b6 About a minute ago 2.08 GB - localhost/oracle/database-rac 21c dcda5cf71b23 12 hours ago 9.33 GB - localhost/oracle/rac-storage-server latest d233b08a8aed 12 hours ago 443 MB - localhost/oracle/rac-dnsserver latest 7d2301d7ea53 13 hours ago 279 MB + localhost/oracle/client-cman 23.26ai 7b095637d7b6 About a minute ago 2.08 GB + localhost/oracle/database-rac 23.26ai dcda5cf71b23 12 hours ago 9.33 GB + localhost/oracle/rac-storage-server latest d233b08a8aed 12 hours ago 443 MB + localhost/oracle/rac-dnsserver latest 7d2301d7ea53 13 hours ago 279 MB ``` @@ -267,9 +267,9 @@ You can validate if the environment is healthy by running the below command- ```bash podman ps -a -58642afb20eb localhost/oracle/rac-dnsserver:latest /bin/sh -c exec $... 23 hours ago Up 23 hours (healthy) rac-dnsserver -a192f4e9092a localhost/oracle/database-rac:21c 10 hours ago Up 10 hours (healthy) racnodep1 -745679457df5 localhost/oracle/database-rac:21c 10 hours ago Up 10 hours (healthy) racnodep2 +58642afb20eb localhost/oracle/rac-dnsserver:latest /bin/sh -c exec $... 23 hours ago Up 23 hours (healthy) rac-dnsserver +a192f4e9092a localhost/oracle/database-rac:23.26ai 10 hours ago Up 10 hours (healthy) racnodep1 +745679457df5 localhost/oracle/database-rac:23.26ai 10 hours ago Up 10 hours (healthy) racnodep2 ``` Note: - Look for `(healthy)` next to container names under the `STATUS` section. @@ -287,7 +287,7 @@ Refer to [README](../CLEANUP.md) for instructions on how to cleanup an Oracle RA ## Support -At the time of this release, Oracle RAC on Podman is supported for Oracle Linux 8.10 later. To see current Linux support certifications, refer [Oracle RAC on Podman Documentation](https://docs.oracle.com/en/database/oracle/oracle-database/21/install-and-upgrade.html) +At the time of this release, Oracle RAC on Podman is supported for Oracle Linux 8.5 later. To see current Linux support certifications, refer [Oracle RAC on Podman Documentation](https://docs.oracle.com/en/database/oracle/oracle-database/21/install-and-upgrade.html) ## License diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/orestart/README.md b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/orestart/README.md index dd2e4e7538..4a15cae5d3 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/orestart/README.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/orestart/README.md @@ -1,6 +1,6 @@ # Oracle Database on Oracle Restart -After you build your Oracle RAC Database Container Image, you can create use this image to deploy an Oracle database on Oracle Restart. Oracle Restart improves the availability of your Oracle Database. When you install Oracle Restart, various Oracle components can be automatically restarted after a hardware or software failure or whenever your database host computer restarts. +After you build your Oracle RAC Database Container Image, you can use this image to deploy an Oracle database on Oracle Restart. Oracle Restart improves the availability of your Oracle Database. When you install Oracle Restart, various Oracle components can be automatically restarted after a hardware or software failure or whenever your database host computer restarts. You can choose to deploy Oracle Database on Oracle Restart on block devices as demonstrated in the detail in this document. Refer [Getting Oracle RAC Database Container Images](../../../OracleRealApplicationClusters/README.md#getting-oracle-rac-database-container-images) for getting Oracle RAC Container Images. @@ -118,7 +118,7 @@ podman start ${GPCNODE} It can take approximately 20 minutes or longer to create and start the Oracle Restart setup . To check the logs, use the following command from another terminal session: ```bash -podman exec ${GPCNODE} /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec ${GPCNODE} /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` When the database configuration is complete, you should see a message similar to the following: @@ -134,9 +134,9 @@ To validate if the environment is healthy, run the following command: ```bash podman ps -a -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -131b86004040 localhost/oracle/rac-dnsserver:latest /bin/sh -c exec $... 3 days ago Up 3 days (healthy) rac-dnsserver -e010e1122e99 container-registry.oracle.com/database/rac_ru:latest podman network di... 3 hours ago Up 3 hours (healthy) dbmc1 +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +131b86004040 localhost/oracle/rac-dnsserver:latest /bin/sh -c exec $... 3 days ago Up 3 days (healthy) rac-dnsserver +2b88f1a6c71f localhost/oracle/database-rac:23.26ai 16 minutes ago Up 16 minutes (healthy) dbmc1 ``` **Note:** - Look for `(healthy)` next to container names under the `STATUS` section. @@ -163,35 +163,44 @@ CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online [grid@dbmc1 ~]$ crsctl stat res -t -------------------------------------------------------------------------------- -Name Target State Server State details +Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- -ora.DATA.dg - ONLINE ONLINE dbmc1 STABLE ora.LISTENER.lsnr ONLINE ONLINE dbmc1 STABLE -ora.asm - ONLINE ONLINE dbmc1 Started,STABLE +ora.chad + ONLINE ONLINE dbmc1 STABLE +ora.net1.network + ONLINE ONLINE dbmc1 STABLE ora.ons - OFFLINE OFFLINE dbmc1 STABLE + ONLINE ONLINE dbmc1 STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- -ora.cssd +ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup) 1 ONLINE ONLINE dbmc1 STABLE -ora.diskmon +ora.DATA.dg(ora.asmgroup) + 1 ONLINE ONLINE dbmc1 STABLE +ora.asm(ora.asmgroup) + 1 ONLINE ONLINE dbmc1 Started,STABLE +ora.asmnet1.asmnetwork(ora.asmgroup) + 1 ONLINE ONLINE dbmc1 STABLE +ora.cvu + 1 ONLINE ONLINE dbmc1 STABLE +ora.cvuhelper 1 OFFLINE OFFLINE STABLE -ora.evmd +ora.dbmc1.vip 1 ONLINE ONLINE dbmc1 STABLE ora.orclcdb.db 1 ONLINE ONLINE dbmc1 Open,HOME=/u01/app/o - racle/product/21c/db - home_1,STABLE + racle/product/26ai/d + bhome_1,STABLE ora.orclcdb.orclpdb.pdb + 1 ONLINE ONLINE dbmc1 READ WRITE,STABLE +ora.orclcdb.soepdb.svc 1 ONLINE ONLINE dbmc1 STABLE -------------------------------------------------------------------------------- - ``` ### Validating Oracle Restart Database Validate Oracle Restart Database from within Container- diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/README.md b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/README.md index 38c365c41c..484afd2161 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/README.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/README.md @@ -1,5 +1,4 @@ # Oracle RAC on Podman using Oracle RAC Image -=============================================================== Refer to the following instructions to set up Oracle RAC on Podman using an Oracle RAC Image for various scenarios. @@ -41,7 +40,8 @@ You can deploy multi-node Oracle RAC Database using Oracle RAC Database Containe * Ensure the Oracle RAC Database Container Image is present. You can either pull ru image from the Oracle Container Registry by following [Getting Oracle RAC Database Container Images](../../../README.md#getting-oracle-rac-database-container-images), or you can create the Oracle RAC Container Patched image by following [Building a Patched Oracle RAC Container Image](../../../README.md#building-a-patched-oracle-rac-container-image) ```bash # podman images|grep database-rac -localhost/oracle/database-rac 21c 41239091d2ac 16 minutes ago 20.2 GB +localhost/oracle/database-rac 26.0.0 c717efbe4111 10 minutes ago 10 GB +localhost/oracle/database-rac 23.26ai c717efbe4111 10 minutes ago 10 GB ``` * Configure the [Network Management](../../../README.md#network-management). * Configure the [Password Management](../../../README.md#password-management). @@ -74,7 +74,6 @@ Repeat this command on each shared block device. In this example command, `/dev/ Create the Oracle RAC containers using the Oracle RAC Database Container Image. For details about environment variables, see [Environment Variables Explained](#environment-variables-for-oracle-rac-on-containers) You can use the following example to create a container on host `racnodep1`: - ```bash podman create -t -i \ --hostname racnodep1 \ @@ -118,7 +117,7 @@ podman create -t -i \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep1 \ -localhost/oracle/database-rac:21c +localhost/oracle/database-rac:23.26ai ``` To create another container with hostname `racnodep2`, use the following command: @@ -165,15 +164,15 @@ podman create -t -i \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep2 \ -localhost/oracle/database-rac:21c +localhost/oracle/database-rac:23.26ai ``` #### Section 2.1.2: Deploying with NFS Storage Devices ##### Section 2.1.2.1: Prerequisites for setting up Oracle RAC with NFS storage devices -* Create an NFS Volume to be used for ASM Devices for Oracle RAC. See the section `Configuring NFS for Storage for Oracle RAC on Podman` in [Oracle Real Application Clusters Installation Guide for Podman](https://docs.oracle.com/cd/F39414_01/racpd/oracle-real-application-clusters-installation-guide-podman-oracle-linux-x86-64.pdf) for more details. +* Create an NFS Volume to be used for ASM Devices for Oracle RAC. See the section `Configuring NFS for Storage for Oracle RAC on Podman` in [Oracle Real Application Clusters Installation Guide for Podman](https://docs.oracle.com/cd/F39414_01/racpd/oracle-real-application-clusters-installation-guide-podman-oracle-linux-x86-64.pdf) for more details. -**Note:** You can skip this step if you are planning to use block devices for storage. + **Note:** You can skip this step if you are planning to use block devices for storage. * Make sure the ASM NFS Storage devices do not have any existing file system. ##### Section 2.1.2.2: Create Oracle RAC Containers @@ -223,7 +222,7 @@ podman create -t -i \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep1 \ -localhost/oracle/database-rac:21c +localhost/oracle/database-rac:23.26ai ``` To create another container on host `racnodep2`, use the following command: @@ -271,7 +270,7 @@ podman create -t -i \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep2 \ -localhost/oracle/database-rac:21c +localhost/oracle/database-rac:23.26ai ``` ### Section 2.2: Deploying Two-Node Oracle RAC Setup on Podman using Oracle RAC Image Using User Defined Response files @@ -281,14 +280,14 @@ Follow the below instructions to setup Oracle RAC on Podman using Oracle RAC Ima #### Section 2.2.1: Deploying With BlockDevices ##### Prerequisites for setting up Oracle RAC with User-Defined files -- On the shared folder between both RAC nodes, create a file named [grid_setup_21c.rsp](withresponsefiles/blockdevices/grid_setup_21c.rsp). In this example, we copy the file to `/scratch/common_scripts/podman/rac/grid_setup_21c.rsp` -- On the shared folder between both RAC nodes, create a file named [dbca_21c.rsp](withresponsefiles/dbca_21c.rsp). In this example, we copy the file to `/scratch/common_scripts/podman/rac/dbca_21c.rsp` +- On the shared folder between both RAC nodes, create a file named [grid_setup_23.26ai.rsp](withresponsefiles/blockdevices/grid_setup_23.26ai.rsp). In this example, we copy the file to `/scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp` +- On the shared folder between both RAC nodes, create a file named [dbca_23.26ai.rsp](withresponsefiles/blockdevices/dbca_23.26ai.rsp). In this example, we copy the file to `/scratch/common_scripts/podman/rac/dbca_23.26ai.rsp` - If SELinux is enabled on the host machine then execute the following as well - ```bash - semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_21c.rsp - restorecon -v /scratch/common_scripts/podman/rac/grid_setup_21c.rsp - semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_21c.rsp - restorecon -v /scratch/common_scripts/podman/rac/dbca_21c.rsp + semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp + restorecon -v /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp + semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp + restorecon -v /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp ``` **Note:** Passwords defined in response files is going to be overwritten by passwords defined in `podman secret` due to security reasons of exposure of the password as plain text. You can skip this step if you are not planning to use **User Defined Response Files for RAC**. @@ -300,8 +299,8 @@ podman create -t -i \ --dns-search "example.info" \ --dns 10.0.20.25 \ --shm-size 4G \ ---volume /scratch/common_scripts/podman/rac/grid_setup_21c.rsp:/tmp/grid_21c.rsp \ ---volume /scratch/common_scripts/podman/rac/dbca_21c.rsp:/tmp/dbca_21c.rsp \ +--volume /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp:/tmp/grid_setup_23.26ai.rsp \ +--volume /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp:/tmp/dbca_23.26ai.rsp \ --cpuset-cpus 0-1 \ --memory 16G \ --memory-swap 32G \ @@ -322,8 +321,8 @@ podman create -t -i \ --secret keysecret \ -e DNS_SERVERS="10.0.20.25" \ -e DB_SERVICE=service:soepdb \ --e GRID_RESPONSE_FILE=/tmp/grid_21c.rsp \ --e DBCA_RESPONSE_FILE=/tmp/dbca_21c.rsp \ +-e GRID_RESPONSE_FILE=/tmp/grid_setup_23.26ai.rsp \ +-e DBCA_RESPONSE_FILE=/tmp/dbca_23.26ai.rsp \ -e CRS_PRIVATE_IP1=192.168.17.170 \ -e CRS_PRIVATE_IP2=192.168.18.170 \ -e CRS_NODES="\"pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip\"" \ @@ -341,7 +340,7 @@ podman create -t -i \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep1 \ -localhost/oracle/database-rac:21c +localhost/oracle/database-rac:23.26ai ``` Create another Oracle RAC container `racnodep2`: @@ -351,8 +350,8 @@ podman create -t -i \ --dns-search "example.info" \ --dns 10.0.20.25 \ --shm-size 4G \ ---volume /scratch/common_scripts/podman/rac/grid_setup_21c.rsp:/tmp/grid_21c.rsp \ ---volume /scratch/common_scripts/podman/rac/dbca_21c.rsp:/tmp/dbca_21c.rsp \ +--volume /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp:/tmp/grid_setup_23.26ai.rsp \ +--volume /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp:/tmp/dbca_23.26ai.rsp \ --cpuset-cpus 0-1 \ --memory 16G \ --memory-swap 32G \ @@ -373,8 +372,8 @@ podman create -t -i \ --health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ -e DNS_SERVERS="10.0.20.25" \ -e DB_SERVICE=service:soepdb \ --e GRID_RESPONSE_FILE=/tmp/grid_21c.rsp \ --e DBCA_RESPONSE_FILE=/tmp/dbca_21c.rsp \ +-e GRID_RESPONSE_FILE=/tmp/grid_setup_23.26ai.rsp \ +-e DBCA_RESPONSE_FILE=/tmp/dbca_23.26ai.rsp \ -e CRS_PRIVATE_IP1=192.168.17.171 \ -e CRS_PRIVATE_IP2=192.168.18.171 \ -e CRS_NODES="\"pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip\"" \ @@ -392,7 +391,7 @@ podman create -t -i \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep2 \ -localhost/oracle/database-rac:21c +localhost/oracle/database-rac:23.26ai ``` #### Section 2.2.2: Deploying with NFS storage devices @@ -402,14 +401,14 @@ localhost/oracle/database-rac:21c **Note:** You can skip this step if you are planning to use block devices for storage. - Make sure the ASM NFS Storage devices do not have any existing file system. -- On the shared folder between both Oracle RAC nodes, create the file name [grid_setup_21c.rsp](withresponsefiles/nfsdevices/grid_setup_21c.rsp). In this example, we copy the file to `/scratch/common_scripts/podman/rac/grid_setup_21c.rsp` -- On the shared folder between both RAC nodes, create a file named [dbca_21c.rsp](withresponsefiles/dbca_21c.rsp). In this example, we copy the file to `/scratch/common_scripts/podman/rac/dbca_21c.rsp` +- On the shared folder between both Oracle RAC nodes, create the file name [grid_setup_23.26ai.rsp](withresponsefiles/nfsdevices/grid_setup_23.26ai.rsp). In this example, we copy the file to `/scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp` +- On the shared folder between both RAC nodes, create a file named [dbca_23.26ai.rsp](withresponsefiles/nfsdevices/dbca_23.26ai.rsp). In this example, we copy the file to `/scratch/common_scripts/podman/rac/dbca_23.26ai.rsp` - If the SELinux is enabled on the machine then also run the following the following as well- ```bash - semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_21c.rsp - restorecon -v /scratch/common_scripts/podman/rac/grid_setup_21c.rsp - semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_21c.rsp - restorecon -v /scratch/common_scripts/podman/rac/dbca_21c.rsp + semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp + restorecon -v /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp + semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp + restorecon -v /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp ``` **Note:** You can skip this step if you are not planning to deploy with user-defined Response Files for Oracle RAC. @@ -421,8 +420,8 @@ podman create -t -i \ --dns-search "example.info" \ --dns 10.0.20.25 \ --shm-size 4G \ ---volume /scratch/common_scripts/podman/rac/grid_setup_21c.rsp:/tmp/grid_21c.rsp \ ---volume /scratch/common_scripts/podman/rac/dbca_21c.rsp:/tmp/dbca_21c.rsp \ +--volume /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp:/tmp/grid_setup_23.26ai.rsp \ +--volume /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp:/tmp/dbca_23.26ai.rsp \ --cpuset-cpus 0-1 \ --memory 16G \ --memory-swap 32G \ @@ -443,8 +442,8 @@ podman create -t -i \ --secret keysecret \ -e DNS_SERVERS="10.0.20.25" \ -e DB_SERVICE=service:soepdb \ --e GRID_RESPONSE_FILE=/tmp/grid_21c.rsp \ --e DBCA_RESPONSE_FILE=/tmp/dbca_21c.rsp \ +-e GRID_RESPONSE_FILE=/tmp/grid_setup_23.26ai.rsp \ +-e DBCA_RESPONSE_FILE=/tmp/dbca_23.26ai.rsp \ -e CRS_PRIVATE_IP1=192.168.17.170 \ -e CRS_PRIVATE_IP2=192.168.18.170 \ -e CRS_NODES="\"pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip\"" \ @@ -463,7 +462,7 @@ podman create -t -i \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep1 \ -localhost/oracle/database-rac:21c +localhost/oracle/database-rac:23.26ai ``` Create another Oracle RAC container. In this example, the hostname is `racnodep2` @@ -473,8 +472,8 @@ podman create -t -i \ --dns-search "example.info" \ --dns 10.0.20.25 \ --shm-size 4G \ ---volume /scratch/common_scripts/podman/rac/grid_setup_21c.rsp:/tmp/grid_21c.rsp \ ---volume /scratch/common_scripts/podman/rac/dbca_21c.rsp:/tmp/dbca_21c.rsp \ +--volume /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp:/tmp/grid_setup_23.26ai.rsp \ +--volume /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp:/tmp/dbca_23.26ai.rsp \ --cpuset-cpus 0-1 \ --memory 16G \ --memory-swap 32G \ @@ -495,8 +494,8 @@ podman create -t -i \ --secret keysecret \ -e DNS_SERVERS="10.0.20.25" \ -e DB_SERVICE=service:soepdb \ --e GRID_RESPONSE_FILE=/tmp/grid_21c.rsp \ --e DBCA_RESPONSE_FILE=/tmp/dbca_21c.rsp \ +-e GRID_RESPONSE_FILE=/tmp/grid_setup_23.26ai.rsp \ +-e DBCA_RESPONSE_FILE=/tmp/dbca_23.26ai.rsp \ -e CRS_PRIVATE_IP1=192.168.17.171 \ -e CRS_PRIVATE_IP2=192.168.18.171 \ -e CRS_NODES="\"pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip\"" \ @@ -515,7 +514,7 @@ podman create -t -i \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep2 \ -localhost/oracle/database-rac:21c +localhost/oracle/database-rac:23.26ai ``` **Note:** - To use this example, change the environment variables based on your environment. See [Environment Variables for Oracle RAC on Containers](#environment-variables-for-oracle-rac-on-containers) for more details. @@ -556,7 +555,7 @@ podman start racnodep2 It can take approximately 20 minutes or longer to create and set up a two-node Oracle RAC Database on Containers. To check the logs, use the following command from another terminal session: ```bash -podman exec racnodep1 /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec racnodep1 /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` When the database configuration is complete, you should see a message, similar to the following, on the installing node i.e. `racnodep1` in this case: @@ -572,9 +571,9 @@ Note: For example: ```bash - semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_21c.rsp - restorecon -vF /scratch/common_scripts/podman/rac/dbca_21c.rsp - ls -lZ /scratch/common_scripts/podman/rac/dbca_21c.rsp + semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp + restorecon -vF /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp + ls -lZ /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp ``` ## Section 5: Validate the Oracle RAC Environment @@ -582,10 +581,10 @@ To validate if the environment is healthy, run the following command: ```bash podman ps -a -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -f1345fd4047b localhost/oracle/rac-dnsserver:latest /bin/sh -c exec $... 8 hours ago Up 8 hours (healthy) rac-dnsserver -2f42e49758d1 localhost/oracle/database-rac:21c 46 minutes ago Up 37 minutes (healthy) racnodep1 -a27fceea9fe6 localhost/oracle/database-rac:21c 46 minutes ago Up 37 minutes (healthy) racnodep2 +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +f1345fd4047b localhost/oracle/rac-dnsserver:latest /bin/sh -c exec $... 8 hours ago Up 8 hours (healthy) rac-dnsserver +2f42e49758d1 localhost/oracle/database-rac:23.26ai 46 minutes ago Up 37 minutes (healthy) racnodep1 +a27fceea9fe6 localhost/oracle/database-rac:23.26ai 46 minutes ago Up 37 minutes (healthy) racnodep2 ``` **Note:** - Look for `(healthy)` next to container names under the `STATUS` section. @@ -645,7 +644,7 @@ podman create -t -i \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep3 \ -localhost/oracle/database-rac:21c +localhost/oracle/database-rac:23.26ai ``` Attach the networks to the new container and start the container: @@ -659,7 +658,7 @@ podman start racnodep3 Monitor the new container logs using below command: ```bash -podman exec racnodep3 /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec racnodep3 /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` When the Oracle RAC container has completed being set up, you should see a message similar to the following: ```bash @@ -718,7 +717,7 @@ podman create -t -i \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep3 \ -localhost/oracle/database-rac:21c +localhost/oracle/database-rac:23.26ai ``` Attach the networks to the new container and start the container: @@ -731,7 +730,7 @@ podman start racnodep3 ``` Monitor the new container logs using below command: ```bash -podman exec racnodep3 /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec racnodep3 /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` When the Oracle RAC container has completed being set up, you should see a message similar to the following: @@ -759,4 +758,4 @@ All scripts and files hosted in this repository that are required to build the c ## Copyright -Copyright (c) 2014-2025 Oracle and/or its affiliates. \ No newline at end of file +Copyright (c) 2014-2025 Oracle and/or its affiliates. diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/addition/podman-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/addition/podman-compose.yml index 6ca4172d63..956dbfe2f5 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/addition/podman-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/addition/podman-compose.yml @@ -28,7 +28,7 @@ services: - pwdsecret - keysecret volumes: - - ${GRID_RESPONSE_FILE}:/tmp/grid_21ai.rsp + - ${GRID_RESPONSE_FILE}:/tmp/grid_23.26ai.rsp environment: DNS_SERVERS: ${DNS_PUBLIC_IP} PRIVATE_IP1_LIST: ${RACNODE3_PRIVATE_IP1_LIST} @@ -46,7 +46,7 @@ services: CRS_ASM_DISCOVERY_DIR: ${CRS_ASM_DISCOVERY_DIR} INIT_SGA_SIZE: 3G INIT_PGA_SIZE: 2G - GRID_RESPONSE_FILE: /tmp/grid_21ai.rsp + GRID_RESPONSE_FILE: /tmp/grid_23.26ai.rsp sysctls: - kernel.shmall=2097152 - kernel.shmmax=8589934592 @@ -70,7 +70,7 @@ services: - rac_priv1_nw - rac_priv2_nw healthcheck: - test: ["CMD-SHELL", "if [ `cat /tmp/orod/oracle_rac_setup.log | grep -c 'ORACLE RAC DATABASE IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + test: ["CMD-SHELL", "if [ `cat /tmp/orod/oracle_db_setup.log | grep -c 'ORACLE RAC DATABASE IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] interval: ${HEALTHCHECK_INTERVAL} timeout: ${HEALTHCHECK_TIMEOUT} retries: ${HEALTHCHECK_RETRIES} \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/dbca_21c.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/dbca_23.26ai.rsp similarity index 86% rename from OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/dbca_21c.rsp rename to OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/dbca_23.26ai.rsp index e36b5e55d7..fe21b49dfa 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/dbca_21c.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/dbca_23.26ai.rsp @@ -1,4 +1,4 @@ -responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v21.0.0 +responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v23.0.0 gdbName=ORCLCDB sid=ORCLCDB databaseConfigType=RAC @@ -15,15 +15,15 @@ createAsContainerDatabase=true numberOfPDBs=1 pdbName=ORCLPDB useLocalUndoForPDBs=true -pdbAdminPassword=ORacle__21c +pdbAdminPassword=<< YOUR PASSWORD HERE >> nodelist=racnodep1,racnodep2 templateName={ORACLE_HOME}/assistants/dbca/templates/General_Purpose.dbc -sysPassword=ORacle__21c -systemPassword=ORacle__21c +sysPassword=<< YOUR PASSWORD HERE >> +systemPassword=<< YOUR PASSWORD HERE >> oracleHomeUserPassword= emConfiguration= runCVUChecks=true -dbsnmpPassword=ORacle__21c +dbsnmpPassword=<< YOUR PASSWORD HERE >> omsHost= omsPort= emUser= @@ -49,10 +49,10 @@ dirServicePassword= walletPassword= listeners=LISTENER variablesFile= -variables=DB_UNIQUE_NAME=ORCLCDB,ORACLE_BASE=/u01/app/oracle,PDB_NAME=ORCLPDB,DB_NAME=ORCLCDB,ORACLE_HOME=/u01/app/oracle/product/21c/dbhome_1,SID=ORCLCDB +variables=DB_UNIQUE_NAME=ORCLCDB,ORACLE_BASE=/u01/app/oracle,PDB_NAME=ORCLPDB,DB_NAME=ORCLCDB,ORACLE_HOME=/u01/app/oracle/product/26ai/dbhome_1,SID=ORCLCDB initParams=audit_trail=none,audit_sys_operations=false,remote_login_passwordfile=exclusive sampleSchema=false memoryPercentage=40 databaseType=MULTIPURPOSE automaticMemoryManagement=false -totalMemory=5000 \ No newline at end of file +totalMemory=5000 diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/grid_setup_21c.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/grid_setup_21c.rsp deleted file mode 100644 index c7ffe19d4a..0000000000 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/grid_setup_21c.rsp +++ /dev/null @@ -1,64 +0,0 @@ -oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v21.0.0 -INVENTORY_LOCATION=/u01/app/oraInventory -oracle.install.option=CRS_CONFIG -ORACLE_BASE=/u01/app/grid -oracle.install.asm.OSDBA=dba -oracle.install.asm.OSOPER= -oracle.install.asm.OSASM=asmadmin -oracle.install.crs.config.scanType=LOCAL_SCAN -oracle.install.crs.config.SCANClientDataFile= -oracle.install.crs.config.gpnp.scanName=racnodepc1-scan -oracle.install.crs.config.gpnp.scanPort=1521 -oracle.install.crs.config.ClusterConfiguration=STANDALONE -oracle.install.crs.config.configureAsExtendedCluster=false -oracle.install.crs.config.memberClusterManifestFile= -oracle.install.crs.config.clusterName=rac01cluster -oracle.install.crs.config.gpnp.configureGNS= -oracle.install.crs.config.autoConfigureClusterNodeVIP=false -oracle.install.crs.config.gpnp.gnsOption= -oracle.install.crs.config.gpnp.gnsClientDataFile= -oracle.install.crs.config.gpnp.gnsSubDomain= -oracle.install.crs.config.gpnp.gnsVIPAddress= -oracle.install.crs.config.sites= -oracle.install.crs.config.clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB -oracle.install.crs.config.networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 -oracle.install.asm.configureGIMRDataDG=false -oracle.install.crs.config.storageOption= -oracle.install.crs.config.useIPMI=false -oracle.install.crs.config.ipmi.bmcUsername= -oracle.install.crs.config.ipmi.bmcPassword= -oracle.install.asm.storageOption=ASM -oracle.install.asmOnNAS.ocrLocation= -oracle.install.asmOnNAS.configureGIMRDataDG=false -oracle.install.asmOnNAS.gimrLocation= -oracle.install.asm.SYSASMPassword=ORacle__21c -oracle.install.asm.diskGroup.name=DATA -oracle.install.asm.diskGroup.redundancy=EXTERNAL -oracle.install.asm.diskGroup.AUSize=4 -oracle.install.asm.diskGroup.FailureGroups= -oracle.install.asm.diskGroup.disksWithFailureGroupNames=/dev/asm-disk1,,/dev/asm-disk2, -oracle.install.asm.diskGroup.disks=/dev/asm-disk1,/dev/asm-disk2 -oracle.install.asm.diskGroup.quorumFailureGroupNames= -oracle.install.asm.diskGroup.diskDiscoveryString=/dev/asm* -oracle.install.asm.monitorPassword=ORacle__21c -oracle.install.asm.gimrDG.name= -oracle.install.asm.gimrDG.redundancy= -oracle.install.asm.gimrDG.AUSize=1 -oracle.install.asm.gimrDG.FailureGroups= -oracle.install.asm.gimrDG.disksWithFailureGroupNames= -oracle.install.asm.gimrDG.disks= -oracle.install.asm.gimrDG.quorumFailureGroupNames= -oracle.install.asm.configureAFD=false -oracle.install.crs.configureRHPS=false -oracle.install.crs.config.ignoreDownNodes=false -oracle.install.config.managementOption=NONE -oracle.install.config.omsHost= -oracle.install.config.omsPort=0 -oracle.install.config.emAdminUser= -oracle.install.config.emAdminPassword= -oracle.install.crs.rootconfig.executeRootScript=false -oracle.install.crs.rootconfig.configMethod=ROOT -oracle.install.crs.rootconfig.sudoPath= -oracle.install.crs.rootconfig.sudoUserName= -oracle.install.crs.config.batchinfo= -oracle.install.crs.deleteNode.nodes= \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/grid_setup_23.26ai.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/grid_setup_23.26ai.rsp new file mode 100644 index 0000000000..5c15376174 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/grid_setup_23.26ai.rsp @@ -0,0 +1,62 @@ +oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v23.0.0 +INVENTORY_LOCATION=/u01/app/oraInventory +installOption=CRS_CONFIG +ORACLE_BASE=/u01/app/grid +clusterUsage= +zeroDowntimeGIPatching= +skipDriverUpdate= +OSDBA=asmdba +OSOPER=asmoper +OSASM=asmadmin +scanType=LOCAL_SCAN +scanClientDataFile= +scanName=racnodepc1-scan +scanPort=1521 +configureAsExtendedCluster=false +clusterName=rac01cluster +configureGNS= +configureDHCPAssignedVIPs= +gnsSubDomain= +gnsVIPAddress= +sites= +clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB +networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 +storageOption=FLEX_ASM_STORAGE +votingFilesLocations= +ocrLocations= +clientDataFile= +useIPMI=false +bmcBinpath= +bmcUsername= +bmcPassword= +sysasmPassword=<< YOUR PASSWORD HERE >> +diskGroupName=DATA +redundancy=EXTERNAL +auSize=4 +failureGroups= +disksWithFailureGroupNames=/dev/asm-disk1,,/dev/asm-disk2, +diskList=/dev/asm-disk1,/dev/asm-disk2 +quorumFailureGroupNames= +diskString=/dev/asm* +asmsnmpPassword=<< YOUR PASSWORD HERE >> +ignoreDownNodes=false +configureBackupDG= +backupDGName= +backupDGRedundancy= +backupDGAUSize= +backupDGFailureGroups= +backupDGDisksWithFailureGroupNames= +backupDGDiskList= +backupDGQuorumFailureGroups= +managementOption=NONE +omsHost= +omsPort= +emAdminUser= +emAdminPassword= +executeRootScript=false +configMethod=ROOT +sudoPath= +sudoUserName= +batchInfo= +nodesToDelete= +enableAutoFixup= diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/podman-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/podman-compose.yml index a74819d4a8..8f3700b94f 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/podman-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/blockdevices/podman-compose.yml @@ -64,7 +64,7 @@ services: - pwdsecret - keysecret volumes: - - ${GRID_RESPONSE_FILE}:/tmp/grid_21c.rsp + - ${GRID_RESPONSE_FILE}:/tmp/grid_23.26ai.rsp environment: DNS_SERVERS: ${DNS_PUBLIC_IP} PRIVATE_IP1_LIST: ${RACNODE1_PRIVATE_IP1_LIST} @@ -80,7 +80,7 @@ services: INIT_PGA_SIZE: 2G DB_PWD_FILE: pwdsecret PWD_KEY: keysecret - GRID_RESPONSE_FILE: /tmp/grid_21c.rsp + GRID_RESPONSE_FILE: /tmp/grid_23.26ai.rsp CMAN_HOST: ${CMAN_HOST_NAME} CMAN_PORT: 1521 sysctls: @@ -106,7 +106,7 @@ services: - rac_priv1_nw - rac_priv2_nw healthcheck: - test: ["CMD-SHELL", "if [ `cat /tmp/orod/oracle_rac_setup.log | grep -c 'ORACLE RAC DATABASE IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + test: ["CMD-SHELL", "if [ `cat /tmp/orod/oracle_db_setup.log | grep -c 'ORACLE RAC DATABASE IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] interval: ${HEALTHCHECK_INTERVAL} timeout: ${HEALTHCHECK_TIMEOUT} retries: ${HEALTHCHECK_RETRIES} @@ -122,7 +122,7 @@ services: - pwdsecret - keysecret volumes: - - ${GRID_RESPONSE_FILE}:/tmp/grid_21c.rsp + - ${GRID_RESPONSE_FILE}:/tmp/grid_23.26ai.rsp environment: DNS_SERVERS: ${DNS_PUBLIC_IP} PRIVATE_IP1_LIST: ${RACNODE2_PRIVATE_IP1_LIST} @@ -137,7 +137,7 @@ services: INIT_PGA_SIZE: 2G DB_PWD_FILE: pwdsecret PWD_KEY: keysecret - GRID_RESPONSE_FILE: /tmp/grid_21c.rsp + GRID_RESPONSE_FILE: /tmp/grid_23.26ai.rsp CMAN_HOST: ${CMAN_HOST_NAME} CMAN_PORT: 1521 sysctls: diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/dbca_21c.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/nfsdevices/dbca_23.26ai.rsp similarity index 86% rename from OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/dbca_21c.rsp rename to OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/nfsdevices/dbca_23.26ai.rsp index e36b5e55d7..fe21b49dfa 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/dbca_21c.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/nfsdevices/dbca_23.26ai.rsp @@ -1,4 +1,4 @@ -responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v21.0.0 +responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v23.0.0 gdbName=ORCLCDB sid=ORCLCDB databaseConfigType=RAC @@ -15,15 +15,15 @@ createAsContainerDatabase=true numberOfPDBs=1 pdbName=ORCLPDB useLocalUndoForPDBs=true -pdbAdminPassword=ORacle__21c +pdbAdminPassword=<< YOUR PASSWORD HERE >> nodelist=racnodep1,racnodep2 templateName={ORACLE_HOME}/assistants/dbca/templates/General_Purpose.dbc -sysPassword=ORacle__21c -systemPassword=ORacle__21c +sysPassword=<< YOUR PASSWORD HERE >> +systemPassword=<< YOUR PASSWORD HERE >> oracleHomeUserPassword= emConfiguration= runCVUChecks=true -dbsnmpPassword=ORacle__21c +dbsnmpPassword=<< YOUR PASSWORD HERE >> omsHost= omsPort= emUser= @@ -49,10 +49,10 @@ dirServicePassword= walletPassword= listeners=LISTENER variablesFile= -variables=DB_UNIQUE_NAME=ORCLCDB,ORACLE_BASE=/u01/app/oracle,PDB_NAME=ORCLPDB,DB_NAME=ORCLCDB,ORACLE_HOME=/u01/app/oracle/product/21c/dbhome_1,SID=ORCLCDB +variables=DB_UNIQUE_NAME=ORCLCDB,ORACLE_BASE=/u01/app/oracle,PDB_NAME=ORCLPDB,DB_NAME=ORCLCDB,ORACLE_HOME=/u01/app/oracle/product/26ai/dbhome_1,SID=ORCLCDB initParams=audit_trail=none,audit_sys_operations=false,remote_login_passwordfile=exclusive sampleSchema=false memoryPercentage=40 databaseType=MULTIPURPOSE automaticMemoryManagement=false -totalMemory=5000 \ No newline at end of file +totalMemory=5000 diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/nfsdevices/grid_setup_21c.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/nfsdevices/grid_setup_21c.rsp deleted file mode 100644 index 16062dd6cb..0000000000 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/nfsdevices/grid_setup_21c.rsp +++ /dev/null @@ -1,64 +0,0 @@ -oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v21.0.0 -INVENTORY_LOCATION=/u01/app/oraInventory -oracle.install.option=CRS_CONFIG -ORACLE_BASE=/u01/app/grid -oracle.install.asm.OSDBA=dba -oracle.install.asm.OSOPER= -oracle.install.asm.OSASM=asmadmin -oracle.install.crs.config.scanType=LOCAL_SCAN -oracle.install.crs.config.SCANClientDataFile= -oracle.install.crs.config.gpnp.scanName=racnodepc1-scan -oracle.install.crs.config.gpnp.scanPort=1521 -oracle.install.crs.config.ClusterConfiguration=STANDALONE -oracle.install.crs.config.configureAsExtendedCluster=false -oracle.install.crs.config.memberClusterManifestFile= -oracle.install.crs.config.clusterName=rac01cluster -oracle.install.crs.config.gpnp.configureGNS= -oracle.install.crs.config.autoConfigureClusterNodeVIP=false -oracle.install.crs.config.gpnp.gnsOption= -oracle.install.crs.config.gpnp.gnsClientDataFile= -oracle.install.crs.config.gpnp.gnsSubDomain= -oracle.install.crs.config.gpnp.gnsVIPAddress= -oracle.install.crs.config.sites= -oracle.install.crs.config.clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB -oracle.install.crs.config.networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 -oracle.install.asm.configureGIMRDataDG=false -oracle.install.crs.config.storageOption= -oracle.install.crs.config.useIPMI=false -oracle.install.crs.config.ipmi.bmcUsername= -oracle.install.crs.config.ipmi.bmcPassword= -oracle.install.asm.storageOption=ASM -oracle.install.asmOnNAS.ocrLocation= -oracle.install.asmOnNAS.configureGIMRDataDG=false -oracle.install.asmOnNAS.gimrLocation= -oracle.install.asm.SYSASMPassword=ORacle__21c -oracle.install.asm.diskGroup.name=DATA -oracle.install.asm.diskGroup.redundancy=EXTERNAL -oracle.install.asm.diskGroup.AUSize=4 -oracle.install.asm.diskGroup.FailureGroups= -oracle.install.asm.diskGroup.disksWithFailureGroupNames=/oradata/asm_disk01.img,,/oradata/asm_disk02.img,,/oradata/asm_disk03.img,,/oradata/asm_disk04.img,,/oradata/asm_disk05.im -oracle.install.asm.diskGroup.disks=/oradata/asm_disk01.img,/oradata/asm_disk02.img,/oradata/asm_disk03.img,/oradata/asm_disk04.img,/oradata/asm_disk05.img -oracle.install.asm.diskGroup.quorumFailureGroupNames= -oracle.install.asm.diskGroup.diskDiscoveryString=/oradata/asm_disk* -oracle.install.asm.monitorPassword=ORacle__21c -oracle.install.asm.gimrDG.name= -oracle.install.asm.gimrDG.redundancy= -oracle.install.asm.gimrDG.AUSize=1 -oracle.install.asm.gimrDG.FailureGroups= -oracle.install.asm.gimrDG.disksWithFailureGroupNames= -oracle.install.asm.gimrDG.disks= -oracle.install.asm.gimrDG.quorumFailureGroupNames= -oracle.install.asm.configureAFD=false -oracle.install.crs.configureRHPS=false -oracle.install.crs.config.ignoreDownNodes=false -oracle.install.config.managementOption=NONE -oracle.install.config.omsHost= -oracle.install.config.omsPort=0 -oracle.install.config.emAdminUser= -oracle.install.config.emAdminPassword= -oracle.install.crs.rootconfig.executeRootScript=false -oracle.install.crs.rootconfig.configMethod=ROOT -oracle.install.crs.rootconfig.sudoPath= -oracle.install.crs.rootconfig.sudoUserName= -oracle.install.crs.config.batchinfo= -oracle.install.crs.deleteNode.nodes= \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/nfsdevices/grid_setup_23.26ai.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/nfsdevices/grid_setup_23.26ai.rsp new file mode 100644 index 0000000000..b3a93a947a --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racimage/withresponsefiles/nfsdevices/grid_setup_23.26ai.rsp @@ -0,0 +1,62 @@ +oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v23.0.0 +INVENTORY_LOCATION=/u01/app/oraInventory +installOption=CRS_CONFIG +ORACLE_BASE=/u01/app/grid +clusterUsage= +zeroDowntimeGIPatching= +skipDriverUpdate= +OSDBA=asmdba +OSOPER=asmoper +OSASM=asmadmin +scanType=LOCAL_SCAN +scanClientDataFile= +scanName=racnodepc1-scan +scanPort=1521 +configureAsExtendedCluster=false +clusterName=rac01cluster +configureGNS= +configureDHCPAssignedVIPs= +gnsSubDomain= +gnsVIPAddress= +sites= +clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB +networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 +storageOption=FLEX_ASM_STORAGE +votingFilesLocations= +ocrLocations= +clientDataFile= +useIPMI= +bmcBinpath= +bmcUsername= +bmcPassword= +sysasmPassword=<< YOUR PASSWORD HERE >> +diskGroupName=DATA +redundancy=EXTERNAL +auSize=4 +failureGroups= +disksWithFailureGroupNames=/oradata/asm_disk01.img,,/oradata/asm_disk02.img,,/oradata/asm_disk03.img,,/oradata/asm_disk04.img,,/oradata/asm_disk05.img, +diskList=/oradata/asm_disk01.img,/oradata/asm_disk02.img,/oradata/asm_disk03.img,/oradata/asm_disk04.img,/oradata/asm_disk05.img +quorumFailureGroupNames= +diskString=/oradata/asm_disk* +asmsnmpPassword=<< YOUR PASSWORD HERE >> +ignoreDownNodes=false +configureBackupDG= +backupDGName= +backupDGRedundancy= +backupDGAUSize= +backupDGFailureGroups= +backupDGDisksWithFailureGroupNames= +backupDGDiskList= +backupDGQuorumFailureGroups= +managementOption=NONE +omsHost= +omsPort= +emAdminUser= +emAdminPassword= +executeRootScript=false +configMethod=ROOT +sudoPath= +sudoUserName= +batchInfo= +nodesToDelete= +enableAutoFixup= diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/README.md b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/README.md index ed09c6eeb4..2076cba6d4 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/README.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/README.md @@ -1,5 +1,4 @@ # Oracle RAC on Podman using Slim Image -=============================================================== Refer below instructions for the setup of Oracle RAC on Podman using Slim Image for various scenarios. @@ -18,7 +17,7 @@ Refer below instructions for the setup of Oracle RAC on Podman using Slim Image - [Section 4: Start the Containers](#section-4-start-the-containers) - [Section 5: Validation Oracle RAC Environment](#section-5-validating-oracle-rac-environment) - [Section 6: Connecting to Oracle RAC Environment](#section-6-connecting-to-oracle-rac-environment) - - [Section 7: Sample of Addition of Nodes to Oracle RAC Containers based on Slim Image](#section-7-sample-of-addition-of-nodes-to-oracle-rac-containers-based-on-slim-image) + - [Section 7: Sample of Addition of Nodes to Oracle RAC Containers based on Slim Image](#section-7-sample-of-addition-of-nodes-to-oracle-rac-containers-based-on-slim-image-and-using-block-devices) - [Section 7.1: Sample of Addition of Nodes to Oracle RAC Containers based on Slim Image Without Response File](#section-71-sample-of-addition-of-nodes-to-oracle-rac-containers-based-on-slim-image-without-response-file) - [Section 8: Sample of Addition of Nodes to Oracle RAC Containers based on Oracle RAC Slim Image with NFS Storage Devices](#section-8-sample-of-addition-of-nodes-to-oracle-rac-containers-based-on-oracle-rac-slim-image-with-nfs-storage-devices) - [Section 8.1: Sample of Addition of Nodes to Oracle RAC Containers based on Oracle RAC Image Without Response File](#section-81-sample-of-addition-of-nodes-to-oracle-rac-containers-based-on-oracle-rac-image-without-response-file) @@ -40,7 +39,7 @@ Users can deploy multi-node Oracle RAC Database Setup using Oracle RAC Database * Make sure the Oracle RAC Database Container Slim Image is present as shown below. If you have not created the Oracle RAC Database Container image, execute the [Building Oracle RAC Database Container Slim Image](../../../README.md#building-oracle-rac-database-container-slim-image) ```bash # podman images|grep database-rac - localhost/oracle/database-rac 21c-slim bf6ae21ccd5a 8 hours ago 517 MB + localhost/oracle/database-rac 26.0.0-slim 8280809e82c8 About a minute ago 518 MB ``` * Configure the [Network Management](../../../README.md#network-management). * Configure the [Password Management](../../../README.md#password-management). @@ -54,10 +53,10 @@ Users can deploy multi-node Oracle RAC Database Setup using Oracle RAC Database rm -rf /scratch/rac/cluster01/node2/* ``` -* Make sure the downloaded Oracle RAC software location is staged & available for both RAC nodes. In the below example, we have staged Oracle RAC software at location ```/scratch/software/21c/goldimages``` +* Make sure the downloaded Oracle RAC software location is staged & available for both RAC nodes. In the below example, we have staged Oracle RAC software at location ```/scratch/software/23.26ai/goldimages``` ```bash - ls /scratch/software/21c/goldimages - LINUX.X64_213000_db_home.zip LINUX.X64_213000_grid_home.zip + ls /scratch/software/23.26ai/goldimages + LINUX.X64_260000_db_home.zip LINUX.X64_260000_grid_home.zip ``` * If SELinux is enabled on the host machine then execute the following as well- ```bash @@ -65,10 +64,10 @@ Users can deploy multi-node Oracle RAC Database Setup using Oracle RAC Database restorecon -v /scratch/rac/cluster01/node1 semanage fcontext -a -t container_file_t /scratch/rac/cluster01/node2 restorecon -v /scratch/rac/cluster01/node2 - semanage fcontext -a -t container_file_t /scratch/software/21c/goldimages/LINUX.X64_213000_grid_home.zip - restorecon -v /scratch/software/21c/goldimages/LINUX.X64_213000_grid_home.zip - semanage fcontext -a -t container_file_t /scratch/software/21c/goldimages/LINUX.X64_213000_db_home.zip - restorecon -v /scratch/software/21c/goldimages/LINUX.X64_213000_db_home.zip + semanage fcontext -a -t container_file_t /scratch/software/23.26ai/goldimages/LINUX.X64_260000_grid_home.zip + restorecon -v /scratch/software/23.26ai/goldimages/LINUX.X64_260000_grid_home.zip + semanage fcontext -a -t container_file_t /scratch/software/23.26ai/goldimages/LINUX.X64_260000_db_home.zip + restorecon -v /scratch/software/23.26ai/goldimages/LINUX.X64_260000_db_home.zip ``` ## Section 2: Deploying 2 Node Oracle RAC Setup on Podman using Slim Image @@ -115,12 +114,7 @@ podman create -t -i \ --shm-size 4G \ --volume /scratch/rac/cluster01/node1:/u01 \ --volume /scratch/common_scripts/podman/rac/envfile_racnodep1:/etc/rac_env_vars/envfile \ ---health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ --volume /scratch:/scratch \ ---secret pwdsecret \ ---secret keysecret \ ---sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ ---sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ --cpuset-cpus 0-1 \ --memory 16G \ --memory-swap 32G \ @@ -128,37 +122,37 @@ podman create -t -i \ --sysctl "kernel.sem=250 32000 100 128" \ --sysctl kernel.shmmax=8589934592 \ --sysctl kernel.shmmni=4096 \ +--sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ +--sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ --cap-add=SYS_RESOURCE \ --cap-add=NET_ADMIN \ --cap-add=SYS_NICE \ --cap-add=AUDIT_WRITE \ --cap-add=AUDIT_CONTROL \ --cap-add=NET_RAW \ +--secret pwdsecret \ +--secret keysecret \ +--health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ --device=/dev/oracleoci/oraclevdd:/dev/asm-disk1 \ --device=/dev/oracleoci/oraclevde:/dev/asm-disk2 \ --restart=always \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep1 \ - localhost/oracle/database-rac:21c-slim - ``` - **Note**: Before creating the containers, you need to make sure you have edited the file `/scratch/common_scripts/podman/rac/envfile_racnodep2` and set the variables based on your enviornment. +localhost/oracle/database-rac:23.26ai-slim +``` + **Note**: Before creating the containers, you need to make sure you have edited the file `/scratch/common_scripts/podman/rac/envfile_racnodep2` and set the variables based on your environment. -Create another Oracle RAC Container - - ```bash +To create another container with hostname `racnodep2`, use the following command: +```bash podman create -t -i \ --hostname racnodep2 \ --dns-search "example.info" \ --dns 10.0.20.25 \ --shm-size 4G \ ---secret pwdsecret \ ---secret keysecret \ --volume /scratch/rac/cluster01/node2:/u01 \ --volume /scratch/common_scripts/podman/rac/envfile_racnodep2:/etc/rac_env_vars/envfile \ ---health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ --volume /scratch:/scratch \ ---sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ ---sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ --cpuset-cpus 0-1 \ --memory 16G \ --memory-swap 32G \ @@ -166,28 +160,35 @@ podman create -t -i \ --sysctl "kernel.sem=250 32000 100 128" \ --sysctl kernel.shmmax=8589934592 \ --sysctl kernel.shmmni=4096 \ +--sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ +--sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ --cap-add=SYS_RESOURCE \ --cap-add=NET_ADMIN \ --cap-add=SYS_NICE \ --cap-add=AUDIT_WRITE \ --cap-add=AUDIT_CONTROL \ --cap-add=NET_RAW \ +--secret pwdsecret \ +--secret keysecret \ +--health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ --device=/dev/oracleoci/oraclevdd:/dev/asm-disk1 \ --device=/dev/oracleoci/oraclevde:/dev/asm-disk2 \ --restart=always \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep2 \ - localhost/oracle/database-rac:21c-slim - ``` +localhost/oracle/database-rac:23.26ai-slim +``` #### Section 2.1.2: Deploying with NFS Storage Devices ##### Section 2.1.2.1: Prerequisites for setting up Oracle RAC with NFS Storage Devices -* Create a NFS Volume to be used for ASM Devices for Oracle RAC. See [Configuring NFS for Storage for Oracle RAC on Podman](https://review.us.oracle.com/review2/Review.html#reviewId=467473;scope=document;status=open,fixed;documentId=4229197) for more details. **Note:** You can skip this step if you are planning to use block devices for storage. +* Create an NFS Volume to be used for ASM Devices for Oracle RAC. See the section `Configuring NFS for Storage for Oracle RAC on Podman` in [Oracle Real Application Clusters Installation Guide for Podman](https://docs.oracle.com/cd/F39414_01/racpd/oracle-real-application-clusters-installation-guide-podman-oracle-linux-x86-64.pdf) for more details. + + **Note:** You can skip this step if you are planning to use block devices for storage. * Make sure the ASM NFS Storage devices do not have any existing file system. -* In this example we are going to use environment variables passed in a file called [envfile_racnodep1](withoutresponsefiles/nfsdevices/envfile_racnodep1) & [envfile_racnodep2](withoutresponsefiles/nfsdevices/envfile_racnodep2) and mounted to rac node containers. In this example, we are creating files under the `/scratch/common_scripts/podman/rac` path. +* In this example we are going to use environment variables passed in a file [envfile_racnodep1](withoutresponsefiles/nfsdevices/envfile_racnodep1) & [envfile_racnodep2](withoutresponsefiles/nfsdevices/envfile_racnodep2) and mounted to rac node containers. In this example, we are creating files under the `/scratch/common_scripts/podman/rac` path. * If SELinux is enabled on the host machine, then execute the following as well - ```bash @@ -197,7 +198,8 @@ podman create -t -i \ restorecon -v /scratch/common_scripts/podman/rac/envfile_racnodep2 ``` ###### Section 2.1.2.2: Create Oracle RAC Containers -Now create the Oracle RAC containers using the image. For the details of environment variables, refer to [Environment Variables Explained](#section-9-environment-variables-for-oracle-rac-on-containers) +Create the Oracle RAC Database containers using the Oracle RAC Database Container Slim Image. For the details of environment variables, refer to [Environment Variables Explained](#section-9-environment-variables-for-oracle-rac-on-containers) + **Note**: Before creating the containers, you need to make sure you have edited the file `/scratch/common_scripts/podman/rac/envfile_racnodep1` and set the variables based on your environment. You can use the following example to create the first Oracle RAC container: @@ -207,14 +209,9 @@ podman create -t -i \ --dns-search "example.info" \ --dns 10.0.20.25 \ --shm-size 4G \ ---secret pwdsecret \ ---secret keysecret \ --volume /scratch/rac/cluster01/node1:/u01 \ --volume /scratch/common_scripts/podman/rac/envfile_racnodep1:/etc/rac_env_vars/envfile \ ---health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ --volume /scratch:/scratch \ ---sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ ---sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ --cpuset-cpus 0-1 \ --memory 16G \ --memory-swap 32G \ @@ -222,38 +219,38 @@ podman create -t -i \ --sysctl "kernel.sem=250 32000 100 128" \ --sysctl kernel.shmmax=8589934592 \ --sysctl kernel.shmmni=4096 \ +--sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ +--sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ --cap-add=SYS_RESOURCE \ --cap-add=NET_ADMIN \ --cap-add=SYS_NICE \ --cap-add=AUDIT_WRITE \ --cap-add=AUDIT_CONTROL \ --cap-add=NET_RAW \ +--secret pwdsecret \ +--secret keysecret \ +--health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ --volume racstorage:/oradata \ --restart=always \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep1 \ - localhost/oracle/database-rac:21c-slim - ``` +localhost/oracle/database-rac:23.26ai-slim +``` -**Note**: Before creating the containers, you need to make sure you have edited the file `/scratch/common_scripts/podman/rac/envfile_racnodep2` and set the variables based on your enviornment. +To create another container on host `racnodep2`, use the following command: -Create another Oracle RAC Container - +**Note**: Before creating the containers, you need to make sure you have edited the file `/scratch/common_scripts/podman/rac/envfile_racnodep2` and set the variables based on your enviornment. - ```bash +```bash podman create -t -i \ --hostname racnodep2 \ --dns-search "example.info" \ --dns 10.0.20.25 \ --shm-size 4G \ ---secret pwdsecret \ ---secret keysecret \ --volume /scratch/rac/cluster01/node2:/u01 \ --volume /scratch/common_scripts/podman/rac/envfile_racnodep2:/etc/rac_env_vars/envfile \ ---health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ --volume /scratch:/scratch \ ---sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ ---sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ --cpuset-cpus 0-1 \ --memory 16G \ --memory-swap 32G \ @@ -261,32 +258,37 @@ podman create -t -i \ --sysctl "kernel.sem=250 32000 100 128" \ --sysctl kernel.shmmax=8589934592 \ --sysctl kernel.shmmni=4096 \ +--sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ +--sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ --cap-add=SYS_RESOURCE \ --cap-add=NET_ADMIN \ --cap-add=SYS_NICE \ --cap-add=AUDIT_WRITE \ --cap-add=AUDIT_CONTROL \ --cap-add=NET_RAW \ +--secret pwdsecret \ +--secret keysecret \ +--health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ --volume racstorage:/oradata \ --restart=always \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep2 \ - localhost/oracle/database-rac:21c-slim - ``` +localhost/oracle/database-rac:23.26ai-slim +``` ### Section 2.2: Deploying 2 Node Oracle RAC Setup on Podman using Slim Image Using User Defined response files #### Section 2.2.1: Deploying With BlockDevices ##### Section 2.1.1.1: Prerequisites for setup Oracle RAC using User-Defined Files with Block Devices -- On the shared folder between both RAC nodes, copy file [grid_setup_new_21c.rsp](withresponsefiles/blockdevices/grid_setup_new_21c.rsp) in `/scratch/common_scripts/podman/rac/`. -- Also, prepare a database response file similar to this [dbca_21c.rsp](withresponsefiles/dbca_21c.rsp). -- In the below example, we have captured all environment variables passed to the container in a separate envfile and mounted the same to both RAC nodes. Create envfile [envfile_racnodep1](withresponsefiles/blockdevices/envfile_racnodep1) and [envfile_racnode2](withresponsefiles/blockdevices/envfile_racnodep2) for both nodes in directory `/scratch/common_scripts/podman/rac/` +- On the shared folder between both RAC nodes, create a file named [grid_setup_23.26ai.rsp](withresponsefiles/blockdevices/grid_setup_23.26ai.rsp). In this example, we copy the file to `/scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp` +- On the shared folder between both RAC nodes, create a file named [dbca_23.26ai.rsp](withresponsefiles/blockdevices/dbca_23.26ai.rsp). In this example, we copy the file to `/scratch/common_scripts/podman/rac/dbca_23.26ai.rsp` +- In the below example, we have added all environment variables passed to the container in a separate envfile and mounted the same to both RAC nodes. Create envfile [envfile_racnodep1](withresponsefiles/blockdevices/envfile_racnodep1) and [envfile_racnode2](withresponsefiles/blockdevices/envfile_racnodep2) for both nodes in directory `/scratch/common_scripts/podman/rac/` - If SELinux is enabled on the host machine then execute the following as well- ```bash - semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp - restorecon -v /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp - semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_21c.rsp - restorecon -v /scratch/common_scripts/podman/rac/dbca_21c.rsp + semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp + restorecon -v /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp + semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp + restorecon -v /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/envfile_racnodep1 restorecon -v /scratch/common_scripts/podman/rac/envfile_racnodep1 semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/envfile_racnodep2 @@ -308,16 +310,11 @@ podman create -t -i \ --dns-search "example.info" \ --dns 10.0.20.25 \ --shm-size 4G \ ---secret pwdsecret \ ---secret keysecret \ ---volume /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp:/tmp/grid_21c.rsp \ ---volume /scratch/common_scripts/podman/rac/dbca_21c.rsp:/tmp/dbca_21c.rsp \ +--volume /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp:/tmp/grid_setup_23.26ai \ +--volume /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp:/tmp/dbca_23.26ai \ --volume /scratch/rac/cluster01/node1:/u01 \ ---volume /scratch:/scratch \ --volume /scratch/common_scripts/podman/rac/envfile_racnodep1:/etc/rac_env_vars/envfile \ ---health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ ---sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ ---sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ +--volume /scratch:/scratch \ --cpuset-cpus 0-1 \ --memory 16G \ --memory-swap 32G \ @@ -325,24 +322,29 @@ podman create -t -i \ --sysctl "kernel.sem=250 32000 100 128" \ --sysctl kernel.shmmax=8589934592 \ --sysctl kernel.shmmni=4096 \ +--sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ +--sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ --cap-add=SYS_RESOURCE \ --cap-add=NET_ADMIN \ --cap-add=SYS_NICE \ --cap-add=AUDIT_WRITE \ --cap-add=AUDIT_CONTROL \ --cap-add=NET_RAW \ +--secret pwdsecret \ +--secret keysecret \ +--health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ --device=/dev/oracleoci/oraclevdd:/dev/asm-disk1 \ --device=/dev/oracleoci/oraclevde:/dev/asm-disk2 \ --restart=always \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep1 \ -localhost/oracle/database-rac:21c-slim - ``` +localhost/oracle/database-rac:23.26ai-slim +``` **Note**: Before creating the containers, you need to make sure you have edited the file `/scratch/common_scripts/podman/rac/envfile_racnodep2` and set the variables based on your enviornment. -To create another container, use the following command: +Create another Oracle RAC container `racnodep2`: ```bash podman create -t -i \ @@ -350,16 +352,11 @@ podman create -t -i \ --dns-search "example.info" \ --dns 10.0.20.25 \ --shm-size 4G \ ---secret pwdsecret \ ---secret keysecret \ ---volume /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp:/tmp/grid_21c.rsp \ ---volume /scratch/common_scripts/podman/rac/dbca_21c.rsp:/tmp/dbca_21c.rsp \ +--volume /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp:/tmp/grid_setup_23.26ai \ +--volume /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp:/tmp/dbca_23.26ai \ --volume /scratch/rac/cluster01/node2:/u01 \ ---volume /scratch:/scratch \ --volume /scratch/common_scripts/podman/rac/envfile_racnodep2:/etc/rac_env_vars/envfile \ ---health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ ---sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ ---sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ +--volume /scratch:/scratch \ --cpuset-cpus 0-1 \ --memory 16G \ --memory-swap 32G \ @@ -367,36 +364,42 @@ podman create -t -i \ --sysctl "kernel.sem=250 32000 100 128" \ --sysctl kernel.shmmax=8589934592 \ --sysctl kernel.shmmni=4096 \ +--sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ +--sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ --cap-add=SYS_RESOURCE \ --cap-add=NET_ADMIN \ --cap-add=SYS_NICE \ --cap-add=AUDIT_WRITE \ --cap-add=AUDIT_CONTROL \ --cap-add=NET_RAW \ +--secret pwdsecret \ +--secret keysecret \ +--health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ --device=/dev/oracleoci/oraclevdd:/dev/asm-disk1 \ --device=/dev/oracleoci/oraclevde:/dev/asm-disk2 \ --restart=always \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep2 \ - localhost/oracle/database-rac:21c-slim - ``` +localhost/oracle/database-rac:23.26ai-slim +``` #### Section 2.2.2: Deploying with NFS Storage Devices ##### Section 2.2.2.1: Prerequisites for setup Oracle RAC using User Defined Files with NFS Devices -- Create a NFS Volume to be used for ASM Devices for Oracle RAC. See [Configuring NFS for Storage for Oracle RAC on Podman](https://review.us.oracle.com/review2/Review.html#reviewId=467473;scope=document;status=open,fixed;documentId=4229197) for more details. **Note:** You can skip this step if you are planning to use block devices for storage. +- Create a NFS Volume to be used for ASM Devices for Oracle RAC. See the section `Configuring NFS for Storage for Oracle RAC on Podman` in [Oracle Real Application Clusters Installation Guide for Podman](https://docs.oracle.com/cd/F39414_01/racpd/oracle-real-application-clusters-installation-guide-podman-oracle-linux-x86-64.pdf) for more details. + **Note:** You can skip this step if you are planning to use block devices for storage. - Make sure the ASM NFS Storage devices do not have any existing file system. -- On the shared folder between both RAC nodes, create file name [grid_setup_new_21c.rsp](withresponsefiles/nfsdevices/grid_setup_new_21c.rsp) similar as below inside directory named `/scratch/common_scripts/podman/rac/`. -- Also, prepare a database response file similar to this [dbca_21c.rsp](withresponsefiles/dbca_21c.rsp) inside directory named `/scratch/common_scripts/podman/rac/`. -- In the below example, we have captured all environment variables passed to the container in a separate envfile and mounted the same to both RAC nodes. +- On the shared folder between both Oracle RAC nodes, create the file name [grid_setup_23.26ai.rsp](withresponsefiles/nfsdevices/grid_setup_23.26ai.rsp). In this example, we copy the file to `/scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp` +- On the shared folder between both Oracle RAC nodes, create the file name [dbca_23.26ai.rsp](withresponsefiles/nfsdevices/dbca_23.26ai.rsp). In this example, we copy the file to `/scratch/common_scripts/podman/rac/dbca_23.26ai.rsp` +- In the below example, we have added all environment variables passed to the container in a separate envfile and mounted the same to both RAC nodes. Create envfile [envfile_racnodep1](withresponsefiles/nfsdevices/envfile_racnodep1) and [envfile_racnode2](withresponsefiles/nfsdevices/envfile_racnodep2) for both nodes in directory `/scratch/common_scripts/podman/rac/`. - If the SELinux is enabled on machine then execute the following as well - ```bash - semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp - restorecon -v /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp - semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_21c.rsp - restorecon -v /scratch/common_scripts/podman/rac/dbca_21c.rsp + semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp + restorecon -v /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp + semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp + restorecon -v /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/envfile_racnodep1 restorecon -v /scratch/common_scripts/podman/rac/envfile_racnodep1 semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/envfile_racnodep2 @@ -404,27 +407,22 @@ podman create -t -i \ ``` You can skip this step if you are planning not to use **User Defined Response Files for RAC**. -Follow the below instructions to setup Oracle RAC on Podman using Slim Image for using user-defined response files. +Follow the below instructions to setup Oracle RAC on Podman using Slim Image for using user-defined response files with NFS Storage. -**Note**: Before creating the containers, you need to make sure you have edited the file `/scratch/common_scripts/podman/rac/envfile_racnodep1` and set the variables based on your enviornment. +**Note**: Before creating the containers, you need to make sure you have edited teh file `/scratch/common_scripts/podman/rac/envfile_racnodep1` and set the variables based on your enviornment. -You can use the following example to create the first Oracle RAC container: +Create the first Oracle RAC Container. In this example, the hostname is `racnodep1` ```bash podman create -t -i \ --hostname racnodep1 \ --dns-search "example.info" \ --dns 10.0.20.25 \ --shm-size 4G \ ---secret pwdsecret \ ---secret keysecret \ ---volume /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp:/tmp/grid_21c.rsp \ ---volume /scratch/common_scripts/podman/rac/dbca_21c.rsp:/tmp/dbca_21c.rsp \ +--volume /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp:/tmp/grid_setup_23.26ai.rsp \ +--volume /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp:/tmp/dbca_23.26ai.rsp \ --volume /scratch/rac/cluster01/node1:/u01 \ ---volume /scratch:/scratch \ --volume /scratch/common_scripts/podman/rac/envfile_racnodep1:/etc/rac_env_vars/envfile \ ---health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ ---sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ ---sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ +--volume /scratch:/scratch \ --cpuset-cpus 0-1 \ --memory 16G \ --memory-swap 32G \ @@ -432,23 +430,28 @@ podman create -t -i \ --sysctl "kernel.sem=250 32000 100 128" \ --sysctl kernel.shmmax=8589934592 \ --sysctl kernel.shmmni=4096 \ +--sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ +--sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ --cap-add=SYS_RESOURCE \ --cap-add=NET_ADMIN \ --cap-add=SYS_NICE \ --cap-add=AUDIT_WRITE \ --cap-add=AUDIT_CONTROL \ --cap-add=NET_RAW \ +--secret pwdsecret \ +--secret keysecret \ +--health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ --volume racstorage:/oradata \ --restart=always \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep1 \ -localhost/oracle/database-rac:21c-slim - ``` +localhost/oracle/database-rac:23.26ai-slim +``` -**Note**: Before creating the containers, you need to make sure you have edited the file `/scratch/common_scripts/podman/rac/envfile_racnodep1` and set the variables based on your enviornment. +**Note**: Before creating the containers, you need to make sure you have edited teh file `/scratch/common_scripts/podman/rac/envfile_racnodep1` and set the variables based on your enviornment. -To create another container, use the following command: +Create another Oracle RAC container. In this example, the hostname is `racnodep2` ```bash podman create -t -i \ @@ -456,16 +459,11 @@ podman create -t -i \ --dns-search "example.info" \ --dns 10.0.20.25 \ --shm-size 4G \ ---secret pwdsecret \ ---secret keysecret \ ---volume /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp:/tmp/grid_21c.rsp \ ---volume /scratch/common_scripts/podman/rac/dbca_21c.rsp:/tmp/dbca_21c.rsp \ +--volume /scratch/common_scripts/podman/rac/grid_setup_23.26ai.rsp:/tmp/grid_setup_23.26ai.rsp \ +--volume /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp:/tmp/dbca_23.26ai.rsp \ --volume /scratch/rac/cluster01/node2:/u01 \ ---volume /scratch:/scratch \ --volume /scratch/common_scripts/podman/rac/envfile_racnodep2:/etc/rac_env_vars/envfile \ ---health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ ---sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ ---sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ +--volume /scratch:/scratch \ --cpuset-cpus 0-1 \ --memory 16G \ --memory-swap 32G \ @@ -473,23 +471,28 @@ podman create -t -i \ --sysctl "kernel.sem=250 32000 100 128" \ --sysctl kernel.shmmax=8589934592 \ --sysctl kernel.shmmni=4096 \ +--sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ +--sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ --cap-add=SYS_RESOURCE \ --cap-add=NET_ADMIN \ --cap-add=SYS_NICE \ --cap-add=AUDIT_WRITE \ --cap-add=AUDIT_CONTROL \ --cap-add=NET_RAW \ +--secret pwdsecret \ +--secret keysecret \ +--health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ --volume racstorage:/oradata \ --restart=always \ --ulimit rtprio=99 \ --systemd=always \ --name racnodep2 \ - localhost/oracle/database-rac:21c-slim - ``` +localhost/oracle/database-rac:23.26ai-slim +``` **Note:** -- Change environment variables based on your environment. Refer [Section 8: Environment Variables for Oracle RAC on Containers](#section-9-environment-variables-for-oracle-rac-on-containers) for more details. -- Below example uses, a podman bridge network with one public and two private networks, hence`--sysctl 'net.ipv4.conf.eth1.rp_filter=2' --sysctl 'net.ipv4.conf.eth2.rp_filter=2` is required when we use two private networks, else these can be ignored. -- If you are planning to place database files such as datafiles and archivelogs on different diskgroups, you need to pass these parameters- `DB_ASM_DEVICE_LIST`,`RECO_ASM_DEVICE_LIST`,`DB_DATA_FILE_DEST`, `DB_RECOVERY_FILE_DEST`. Refer [Section 8: Environment Variables for Oracle RAC on Containers](#section-9-environment-variables-for-oracle-rac-on-containers) for more details. +- To use this example, change the environment variables based on your environment. Refer [Environment Variables for Oracle RAC on Containers](#section-9-environment-variables-for-oracle-rac-on-containers) for more details. +- Below example uses, a podman bridge network with one public and two private networks, hence `--sysctl 'net.ipv4.conf.eth1.rp_filter=2' --sysctl 'net.ipv4.conf.eth2.rp_filter=2` is required when we use two private networks, else these can be ignored. If your use case is different, then this sysctl configuration for the Podman Bridge can be ignored. +- If you are planning to place database files such as datafiles and archivelogs on different diskgroups, you need to pass these parameters- `DB_ASM_DEVICE_LIST`,`RECO_ASM_DEVICE_LIST`,`DB_DATA_FILE_DEST`, `DB_RECOVERY_FILE_DEST`. Refer [Environment Variables for Oracle RAC on Containers](#section-9-environment-variables-for-oracle-rac-on-containers) for more details. ## Section 3: Attach the network to containers @@ -500,33 +503,35 @@ You need to assign the podman networks created based on the above sections. Exec ```bash podman network disconnect podman racnodep1 podman network connect rac_pub1_nw --ip 10.0.20.170 racnodep1 -podman network connect rac_priv1_nw --ip 192.168.17.170 racnodep1 -podman network connect rac_priv2_nw --ip 192.168.18.170 racnodep1 +podman network connect rac_priv1_nw --ip 192.168.17.170 racnodep1 +podman network connect rac_priv2_nw --ip 192.168.18.170 racnodep1 ``` + ### Attach the network to racnodep2 ```bash podman network disconnect podman racnodep2 podman network connect rac_pub1_nw --ip 10.0.20.171 racnodep2 -podman network connect rac_priv1_nw --ip 192.168.17.171 racnodep2 -podman network connect rac_priv2_nw --ip 192.168.18.171 racnodep2 +podman network connect rac_priv1_nw --ip 192.168.17.171 racnodep2 +podman network connect rac_priv2_nw --ip 192.168.18.171 racnodep2 ``` ## Section 4: Start the containers -You need to start the container. Execute the following command: +You need to start the containers. Execute the following command: ```bash podman start racnodep1 podman start racnodep2 ``` -It can take at least 20 minutes or longer to create and setup 2 node RAC primary and standby setup. To check the logs, use the following command from another terminal session: +It can take approximately 20 minutes or longer to create and set up a two-node Oracle RAC Database on Containers. To check the logs, use the following command from another terminal session: ```bash -podman exec racnodep1 /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec racnodep1 /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` -You should see the database creation success message at the end: +When the database configuration is complete, you should see a message, similar to the following, on the installing node i.e. `racnodep1` in this case: + ```bash #################################### ORACLE RAC DATABASE IS READY TO USE! @@ -535,153 +540,179 @@ ORACLE RAC DATABASE IS READY TO USE! Note: - If you see any error related to files mounted on a container volume not detected in the podman logs, then make sure they are labeled correctly with the `container_file_t` context. You can use `ls -lZ ` to see the security context set on files. - For example- - ```bash - semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_21c.rsp - restorecon -vF /scratch/common_scripts/podman/rac/dbca_21c.rsp - ls -lZ /scratch/common_scripts/podman/rac/dbca_21c.rsp -` ``` + + For example: + ```bash + semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp + restorecon -vF /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp + ls -lZ /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp + ``` ## Section 5: Validating Oracle RAC Environment You can validate if the environment is healthy by running the below command- ```bash podman ps -a -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -f1345fd4047b localhost/oracle/rac-dnsserver:latest /bin/sh -c exec $... 8 hours ago Up 8 hours (healthy) rac-dnsserver -2f42e49758d1 localhost/oracle/database-rac:21c-slim 46 minutes ago Up 37 minutes (healthy) racnodep1 -a27fceea9fe6 localhost/oracle/database-rac:21c-slim 46 minutes ago Up 37 minutes (healthy) racnodep2 +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +f1345fd4047b localhost/oracle/rac-dnsserver:latest /bin/sh -c exec $... 8 hours ago Up 8 hours (healthy) rac-dnsserver +2f42e49758d1 localhost/oracle/database-rac:23.26ai-slim 46 minutes ago Up 37 minutes (healthy) racnodep1 +a27fceea9fe6 localhost/oracle/database-rac:23.26ai-slim 46 minutes ago Up 37 minutes (healthy) racnodep2 ``` + Note: - Look for `(healthy)` next to container names under the `STATUS` section. ## Section 6: Connecting to Oracle RAC Environment -**IMPORTANT:** This section assumes that you have successfully created an Oracle RAC cluster using the preceding sections. -Refer to [README](./docs/CONNECTING.md) for instructions on how to connect to Oracle RAC Database. +**IMPORTANT:** Before you connnect to the environment, you must first successfully create an Oracle RAC Database as described in the preceding sections. +See [Connecting to an Oracle RAC Database](../../CONNECTING.md) for instructions on how to connect to the Oracle RAC Database. -## Section 7: Sample of Addition of Nodes to Oracle RAC Containers based on Slim Image +## Section 7: Sample of Addition of Nodes to Oracle RAC Containers based on Slim Image and using Block Devices ### Section 7.1: Sample of Addition of Nodes to Oracle RAC Containers based on Slim Image Without Response File -Below is the example of adding 1 more node to the existing Oracle RAC 2 node cluster using Slim image and without user-defined files - -- Create envfile [envfile_racnodep3](withoutresponsefiles/blockdevices/envfile_racnodep3) for additional node and keep it here `/scratch/common_scripts/podman/rac/envfile_racnodep3` +Below is the example of adding one more node to the existing Oracle RAC Database with 2 node deployed using Oracle RAC Database Container Slim image and without user-defined response files. + +Create envfile [envfile_racnodep3](withoutresponsefiles/blockdevices/envfile_racnodep3) for additional node and copy it here `/scratch/common_scripts/podman/rac/envfile_racnodep3` **Note**: Before creating the containers, you need to make sure you have edited the file `/scratch/common_scripts/podman/rac/envfile_racnodep3` and set the variables based on your enviornment. -- Prepare Folder for additional node- - ```bash - mkdir -p /scratch/rac/cluster01/node3 - rm -rf /scratch/rac/cluster01/node3/* - ``` -- Create additional Oracle RAC Container- - ```bash - podman create -t -i \ - --hostname racnodep3 \ - --dns-search "example.info" \ - --dns 10.0.20.25 \ - --shm-size 4G \ - --secret pwdsecret \ - --secret keysecret \ - --volume /scratch/rac/cluster01/node3:/u01 \ - --volume /scratch/common_scripts/podman/rac/envfile_racnodep3:/etc/rac_env_vars/envfile \ - --health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ - --volume /scratch:/scratch \ - --cpuset-cpus 0-1 \ - --memory 16G \ - --memory-swap 32G \ - --sysctl kernel.shmall=2097152 \ - --sysctl "kernel.sem=250 32000 100 128" \ - --sysctl kernel.shmmax=8589934592 \ - --sysctl kernel.shmmni=4096 \ - --sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ - --sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ - --cap-add=SYS_RESOURCE \ - --cap-add=NET_ADMIN \ - --cap-add=SYS_NICE \ - --cap-add=AUDIT_WRITE \ - --cap-add=AUDIT_CONTROL \ - --cap-add=NET_RAW \ - --device=/dev/oracleoci/oraclevdd:/dev/asm-disk1 \ - --device=/dev/oracleoci/oraclevde:/dev/asm-disk2 \ - --restart=always \ - --ulimit rtprio=99 \ - --systemd=always \ - --name racnodep3 \ - localhost/oracle/database-rac:21c-slim - - podman network disconnect podman racnodep3 - podman network connect rac_pub1_nw --ip 10.0.20.172 racnodep3 - podman network connect rac_priv1_nw --ip 192.168.17.172 racnodep3 - podman network connect rac_priv2_nw --ip 192.168.18.172 racnodep3 - podman start racnodep3 - podman exec racnodep3 /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" - ``` - Successful message for addition of nodes- - ```bash - ======================================================== - Oracle Database ORCLCDB3 is up and running on racnodep3. - ======================================================== - ``` +Prepare the directory for additional node: +```bash +mkdir -p /scratch/rac/cluster01/node3 +rm -rf /scratch/rac/cluster01/node3/* +``` + +Create additional container for the new Oracle RAC Database Node. In this example, we create the container with hostname `racnodep3`: +```bash +podman create -t -i \ +--hostname racnodep3 \ +--dns-search "example.info" \ +--dns 10.0.20.25 \ +--shm-size 4G \ +--volume /scratch/rac/cluster01/node3:/u01 \ +--volume /scratch/common_scripts/podman/rac/envfile_racnodep3:/etc/rac_env_vars/envfile \ +--volume /scratch:/scratch \ +--cpuset-cpus 0-1 \ +--memory 16G \ +--memory-swap 32G \ +--sysctl kernel.shmall=2097152 \ +--sysctl "kernel.sem=250 32000 100 128" \ +--sysctl kernel.shmmax=8589934592 \ +--sysctl kernel.shmmni=4096 \ +--sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ +--sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ +--cap-add=SYS_RESOURCE \ +--cap-add=NET_ADMIN \ +--cap-add=SYS_NICE \ +--cap-add=AUDIT_WRITE \ +--cap-add=AUDIT_CONTROL \ +--cap-add=NET_RAW \ +--secret pwdsecret \ +--secret keysecret \ +--health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ +--device=/dev/oracleoci/oraclevdd:/dev/asm-disk1 \ +--device=/dev/oracleoci/oraclevde:/dev/asm-disk2 \ +--restart=always \ +--ulimit rtprio=99 \ +--systemd=always \ +--name racnodep3 \ +localhost/oracle/database-rac:23.26ai-slim +``` + +Attach the networks to the new container and start the container: +```bash +podman network disconnect podman racnodep3 +podman network connect rac_pub1_nw --ip 10.0.20.172 racnodep3 +podman network connect rac_priv1_nw --ip 192.168.17.172 racnodep3 +podman network connect rac_priv2_nw --ip 192.168.18.172 racnodep3 +podman start racnodep3 +``` + +Monitor the new container logs using below command: +```bash +podman exec racnodep3 /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" +``` + +When the Oracle RAC container has completed being set up, you should see a message similar to the following: +```bash +======================================================== +Oracle Database ORCLCDB3 is up and running on racnodep3. +======================================================== +``` ## Section 8: Sample of Addition of Nodes to Oracle RAC Containers based on Oracle RAC Slim Image with NFS Storage Devices ### Section 8.1: Sample of Addition of Nodes to Oracle RAC Containers based on Oracle RAC Image Without Response File -Below is an example of adding one more node to the existing Oracle RAC 2 node cluster using the Oracle RAC image and without user-defined files. +In the following example, we add an additional node to the existing Oracle RAC two-node cluster using the Oracle RAC Database Container Slim Image without user-defined response files. + +Create envfile [envfile_racnodep3](withoutresponsefiles/nfsdevices/envfile_racnodep3) for additional node and copy it here `/scratch/common_scripts/podman/rac/envfile_racnodep3` + **Note**: Before creating the containers, you need to make sure you have edited the file `/scratch/common_scripts/podman/rac/envfile_racnodep3` and set the variables based on your enviornment. -- Prepare directory for additional node- - ```bash - mkdir -p /scratch/rac/cluster01/node3 - rm -rf /scratch/rac/cluster01/node3/* - ``` -- Create additional Oracle RAC Container - - ```bash - podman create -t -i \ - --hostname racnodep3 \ - --dns-search "example.info" \ - --dns 10.0.20.25 \ - --shm-size 4G \ - --secret pwdsecret \ - --secret keysecret \ - --volume /scratch/rac/cluster01/node3:/u01 \ - --volume /scratch/common_scripts/podman/rac/envfile_racnodep3:/etc/rac_env_vars/envfile \ - --health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ - --volume /scratch:/scratch \ - --cpuset-cpus 0-1 \ - --memory 16G \ - --memory-swap 32G \ - --sysctl kernel.shmall=2097152 \ - --sysctl "kernel.sem=250 32000 100 128" \ - --sysctl kernel.shmmax=8589934592 \ - --sysctl kernel.shmmni=4096 \ - --sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ - --sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ - --cap-add=SYS_RESOURCE \ - --cap-add=NET_ADMIN \ - --cap-add=SYS_NICE \ - --cap-add=AUDIT_WRITE \ - --cap-add=AUDIT_CONTROL \ - --cap-add=NET_RAW \ - --volume racstorage:/oradata \ - --restart=always \ - --ulimit rtprio=99 \ - --systemd=always \ - --name racnodep3 \ - localhost/oracle/database-rac:21c-slim - - podman network disconnect podman racnodep3 - podman network connect rac_pub1_nw --ip 10.0.20.172 racnodep3 - podman network connect rac_priv1_nw --ip 192.168.17.172 racnodep3 - podman network connect rac_priv2_nw --ip 192.168.18.172 racnodep3 - podman start racnodep3 - podman exec racnodep3 /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" - - ======================================================== - Oracle Database ORCLCDB3 is up and running on racnodep3. - ======================================================== - ``` +Prepare directory for additional node: +```bash +mkdir -p /scratch/rac/cluster01/node3 +rm -rf /scratch/rac/cluster01/node3/* +``` + +Create additional container for the new Oracle RAC Database Node. In this example, we create the container with hostname `racnodep3`: +```bash +podman create -t -i \ +--hostname racnodep3 \ +--dns-search "example.info" \ +--dns 10.0.20.25 \ +--shm-size 4G \ +--volume /scratch/rac/cluster01/node3:/u01 \ +--volume /scratch/common_scripts/podman/rac/envfile_racnodep3:/etc/rac_env_vars/envfile \ +--volume /scratch:/scratch \ +--cpuset-cpus 0-1 \ +--memory 16G \ +--memory-swap 32G \ +--sysctl kernel.shmall=2097152 \ +--sysctl "kernel.sem=250 32000 100 128" \ +--sysctl kernel.shmmax=8589934592 \ +--sysctl kernel.shmmni=4096 \ +--sysctl 'net.ipv4.conf.eth1.rp_filter=2' \ +--sysctl 'net.ipv4.conf.eth2.rp_filter=2' \ +--cap-add=SYS_RESOURCE \ +--cap-add=NET_ADMIN \ +--cap-add=SYS_NICE \ +--cap-add=AUDIT_WRITE \ +--cap-add=AUDIT_CONTROL \ +--cap-add=NET_RAW \ +--secret pwdsecret \ +--secret keysecret \ +--health-cmd "/bin/python3 /opt/scripts/startup/scripts/main.py --checkracstatus" \ +--volume racstorage:/oradata \ +--restart=always \ +--ulimit rtprio=99 \ +--systemd=always \ +--name racnodep3 \ +localhost/oracle/database-rac:23.26ai-slim +``` + +Attach the networks to the new container and start the container: +```bash +podman network disconnect podman racnodep3 +podman network connect rac_pub1_nw --ip 10.0.20.172 racnodep3 +podman network connect rac_priv1_nw --ip 192.168.17.172 racnodep3 +podman network connect rac_priv2_nw --ip 192.168.18.172 racnodep3 +podman start racnodep3 +``` + +Monitor the new container logs using below command: +```bash +podman exec racnodep3 /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" +``` + +When the Oracle RAC container has completed being set up, you should see a message similar to the following: +```bash +======================================================== +Oracle Database ORCLCDB3 is up and running on racnodep3. +======================================================== +``` ## Section 9: Environment Variables for Oracle RAC on Containers -Refer to [Environment Variables Explained for Oracle RAC on Podman Compose](../../../docs/ENVIRONMENTVARIABLES.md) for the explanation of all the environment variables related to Oracle RAC on Podman Compose. Change or Set these environment variables as per your environment. +For an explanation of all of the environment variables used with Oracle RAC on Podman, see [Environment Variables Explained for Oracle RAC on Podman](../../../docs/ENVIRONMENTVARIABLES.md). Change or set these environment variables as required for configurations info your environment. ## Cleanup Refer to [README](../../../docs/CLEANUP.md) for instructions on how to connect to a cleanup Oracle RAC Database Container Environment. @@ -698,4 +729,4 @@ All scripts and files hosted in this repository that are required to build the c ## Copyright -Copyright (c) 2014-2025 Oracle and/or its affiliates. \ No newline at end of file +Copyright (c) 2014-2025 Oracle and/or its affiliates. diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/blockdevices/envfile_racnodep1 b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/blockdevices/envfile_racnodep1 index 9c9e217aed..ce4c9b84db 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/blockdevices/envfile_racnodep1 +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/blockdevices/envfile_racnodep1 @@ -2,14 +2,14 @@ DNS_SERVERS=10.0.20.25 CRS_PRIVATE_IP1=192.168.17.170 CRS_PRIVATE_IP2=192.168.18.170 CRS_NODES=pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip -GRID_HOME=/u01/app/21c/grid +GRID_HOME=/u01/app/26ai/grid GRID_BASE=/u01/app/grid -DB_HOME=/u01/app/oracle/product/21c/dbhome_1 +DB_HOME=/u01/app/oracle/product/26ai/dbhome_1 DB_BASE=/u01/app/oracle INVENTORY=/u01/app/oraInventory -STAGING_SOFTWARE_LOC=/scratch/software/21c/goldimages -GRID_SW_ZIP_FILE=LINUX.X64_213000_grid_home.zip -DB_SW_ZIP_FILE=LINUX.X64_213000_db_home.zip +STAGING_SOFTWARE_LOC=/scratch/software/23.26ai/goldimages +GRID_SW_ZIP_FILE=LINUX.X64_260000_grid_home.zip +DB_SW_ZIP_FILE=LINUX.X64_260000_db_home.zip SCAN_NAME=racnodepc1-scan INIT_SGA_SIZE=3G INIT_PGA_SIZE=2G diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/blockdevices/envfile_racnodep2 b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/blockdevices/envfile_racnodep2 index d13fea7e4a..9bb8f5c4cd 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/blockdevices/envfile_racnodep2 +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/blockdevices/envfile_racnodep2 @@ -2,14 +2,14 @@ DNS_SERVERS=10.0.20.25 CRS_PRIVATE_IP1=192.168.17.171 CRS_PRIVATE_IP2=192.168.18.171 CRS_NODES=pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip -GRID_HOME=/u01/app/21c/grid +GRID_HOME=/u01/app/26ai/grid GRID_BASE=/u01/app/grid -DB_HOME=/u01/app/oracle/product/21c/dbhome_1 +DB_HOME=/u01/app/oracle/product/26ai/dbhome_1 DB_BASE=/u01/app/oracle INVENTORY=/u01/app/oraInventory -STAGING_SOFTWARE_LOC=/scratch/software/21c/goldimages -GRID_SW_ZIP_FILE=LINUX.X64_213000_grid_home.zip -DB_SW_ZIP_FILE=LINUX.X64_213000_db_home.zip +STAGING_SOFTWARE_LOC=/scratch/software/23.26ai/goldimages +GRID_SW_ZIP_FILE=LINUX.X64_260000_grid_home.zip +DB_SW_ZIP_FILE=LINUX.X64_260000_db_home.zip SCAN_NAME=racnodepc1-scan INIT_SGA_SIZE=3G INIT_PGA_SIZE=2G diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/blockdevices/envfile_racnodep3 b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/blockdevices/envfile_racnodep3 index 7b2d518ed6..cd16e26a48 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/blockdevices/envfile_racnodep3 +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/blockdevices/envfile_racnodep3 @@ -2,14 +2,14 @@ DNS_SERVERS=10.0.20.25 CRS_PRIVATE_IP1=192.168.17.172 CRS_PRIVATE_IP2=192.168.18.172 CRS_NODES=pubhost:racnodep3,viphost:racnodep3-vip -GRID_HOME=/u01/app/21c/grid +GRID_HOME=/u01/app/26ai/grid GRID_BASE=/u01/app/grid -DB_HOME=/u01/app/oracle/product/21c/dbhome_1 +DB_HOME=/u01/app/oracle/product/26ai/dbhome_1 DB_BASE=/u01/app/oracle INVENTORY=/u01/app/oraInventory -STAGING_SOFTWARE_LOC=/scratch/software/21c/goldimages -GRID_SW_ZIP_FILE=LINUX.X64_213000_grid_home.zip -DB_SW_ZIP_FILE=LINUX.X64_213000_db_home.zip +STAGING_SOFTWARE_LOC=/scratch/software/23.26ai/goldimages +GRID_SW_ZIP_FILE=LINUX.X64_260000_grid_home.zip +DB_SW_ZIP_FILE=LINUX.X64_260000_db_home.zip SCAN_NAME=racnodepc1-scan INIT_SGA_SIZE=3G INIT_PGA_SIZE=2G diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/nfsdevices/envfile_racnodep1 b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/nfsdevices/envfile_racnodep1 index fac508e931..0ee46bede5 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/nfsdevices/envfile_racnodep1 +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/nfsdevices/envfile_racnodep1 @@ -2,14 +2,14 @@ DNS_SERVERS=10.0.20.25 CRS_PRIVATE_IP1=192.168.17.170 CRS_PRIVATE_IP2=192.168.18.170 CRS_NODES=pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip -GRID_HOME=/u01/app/21c/grid +GRID_HOME=/u01/app/26ai/grid GRID_BASE=/u01/app/grid -DB_HOME=/u01/app/oracle/product/21c/dbhome_1 +DB_HOME=/u01/app/oracle/product/26ai/dbhome_1 DB_BASE=/u01/app/oracle INVENTORY=/u01/app/oraInventory -STAGING_SOFTWARE_LOC=/scratch/software/21c/goldimages -GRID_SW_ZIP_FILE=LINUX.X64_213000_grid_home.zip -DB_SW_ZIP_FILE=LINUX.X64_213000_db_home.zip +STAGING_SOFTWARE_LOC=/scratch/software/23.26ai/goldimages +GRID_SW_ZIP_FILE=LINUX.X64_260000_grid_home.zip +DB_SW_ZIP_FILE=LINUX.X64_260000_db_home.zip SCAN_NAME=racnodepc1-scan INIT_SGA_SIZE=3G INIT_PGA_SIZE=2G diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/nfsdevices/envfile_racnodep2 b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/nfsdevices/envfile_racnodep2 index 75682d1365..f74b509563 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/nfsdevices/envfile_racnodep2 +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/nfsdevices/envfile_racnodep2 @@ -2,14 +2,14 @@ DNS_SERVERS=10.0.20.25 CRS_PRIVATE_IP1=192.168.17.171 CRS_PRIVATE_IP2=192.168.18.171 CRS_NODES=pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip -GRID_HOME=/u01/app/21c/grid +GRID_HOME=/u01/app/26ai/grid GRID_BASE=/u01/app/grid -DB_HOME=/u01/app/oracle/product/21c/dbhome_1 +DB_HOME=/u01/app/oracle/product/26ai/dbhome_1 DB_BASE=/u01/app/oracle INVENTORY=/u01/app/oraInventory -STAGING_SOFTWARE_LOC=/scratch/software/21c/goldimages -GRID_SW_ZIP_FILE=LINUX.X64_213000_grid_home.zip -DB_SW_ZIP_FILE=LINUX.X64_213000_db_home.zip +STAGING_SOFTWARE_LOC=/scratch/software/23.26ai/goldimages +GRID_SW_ZIP_FILE=LINUX.X64_260000_grid_home.zip +DB_SW_ZIP_FILE=LINUX.X64_260000_db_home.zip SCAN_NAME=racnodepc1-scan INIT_SGA_SIZE=3G INIT_PGA_SIZE=2G diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/nfsdevices/envfile_racnodep3 b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/nfsdevices/envfile_racnodep3 index 4f79c0edb2..fc125f582d 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/nfsdevices/envfile_racnodep3 +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withoutresponsefiles/nfsdevices/envfile_racnodep3 @@ -2,14 +2,14 @@ DNS_SERVERS=10.0.20.25 CRS_PRIVATE_IP1=192.168.17.172 CRS_PRIVATE_IP2=192.168.18.172 CRS_NODES=pubhost:racnodep3,viphost:racnodep3-vip -GRID_HOME=/u01/app/21c/grid +GRID_HOME=/u01/app/26ai/grid GRID_BASE=/u01/app/grid -DB_HOME=/u01/app/oracle/product/21c/dbhome_1 +DB_HOME=/u01/app/oracle/product/26ai/dbhome_1 DB_BASE=/u01/app/oracle INVENTORY=/u01/app/oraInventory -STAGING_SOFTWARE_LOC=/scratch/software/21c/goldimages -GRID_SW_ZIP_FILE=LINUX.X64_213000_grid_home.zip -DB_SW_ZIP_FILE=LINUX.X64_213000_db_home.zip +STAGING_SOFTWARE_LOC=/scratch/software/23.26ai/goldimages +GRID_SW_ZIP_FILE=LINUX.X64_260000_grid_home.zip +DB_SW_ZIP_FILE=LINUX.X64_260000_db_home.zip SCAN_NAME=racnodepc1-scan INIT_SGA_SIZE=3G INIT_PGA_SIZE=2G diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/dbca_21c.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/dbca_23.26ai.rsp similarity index 86% rename from OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/dbca_21c.rsp rename to OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/dbca_23.26ai.rsp index c8b0e201e2..a0fe704acc 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/dbca_21c.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/dbca_23.26ai.rsp @@ -1,4 +1,4 @@ -responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v21.0.0 +responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v23.0.0 gdbName=ORCLCDB sid=ORCLCDB databaseConfigType=RAC @@ -15,15 +15,15 @@ createAsContainerDatabase=true numberOfPDBs=1 pdbName=ORCLPDB useLocalUndoForPDBs=true -pdbAdminPassword=ORacle__21c +pdbAdminPassword=<< YOUR PASSWORD HERE >> nodelist=racnodep3 templateName={ORACLE_HOME}/assistants/dbca/templates/General_Purpose.dbc -sysPassword=ORacle__21c -systemPassword=ORacle__21c +sysPassword=<< YOUR PASSWORD HERE >> +systemPassword=<< YOUR PASSWORD HERE >> oracleHomeUserPassword= emConfiguration= runCVUChecks=true -dbsnmpPassword=ORacle__21c +dbsnmpPassword=<< YOUR PASSWORD HERE >> omsHost= omsPort= emUser= @@ -49,10 +49,10 @@ dirServicePassword= walletPassword= listeners=LISTENER variablesFile= -variables=DB_UNIQUE_NAME=ORCLCDB,ORACLE_BASE=/u01/app/oracle,PDB_NAME=ORCLPDB,DB_NAME=ORCLCDB,ORACLE_HOME=/u01/app/oracle/product/21.3.0/dbhome_1,SID=ORCLCDB +variables=DB_UNIQUE_NAME=ORCLCDB,ORACLE_BASE=/u01/app/oracle,PDB_NAME=ORCLPDB,DB_NAME=ORCLCDB,ORACLE_HOME=/u01/app/oracle/product/26ai/dbhome_1,SID=ORCLCDB initParams=audit_trail=none,audit_sys_operations=false,remote_login_passwordfile=exclusive sampleSchema=false memoryPercentage=40 databaseType=MULTIPURPOSE automaticMemoryManagement=false -totalMemory=5000 \ No newline at end of file +totalMemory=5000 diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/envfile_racnodep3 b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/envfile_racnodep3 index 06d095a250..56a4dfe405 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/envfile_racnodep3 +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/envfile_racnodep3 @@ -1,15 +1,16 @@ +DNS_SERVERS=10.0.20.25 CRS_PRIVATE_IP1=192.168.17.172 CRS_PRIVATE_IP2=192.168.18.172 -GRID_HOME=/u01/app/21c/grid -DEFAULT_GATEWAY=172.20.1.1 +GRID_HOME=/u01/app/26ai/grid +DEFAULT_GATEWAY=10.0.20.1 COPY_GRID_SOFTWARE=true -STAGING_SOFTWARE_LOC=/scratch/software/21c/goldimages -GRID_SW_ZIP_FILE=LINUX.X64_213000_grid_home.zip +STAGING_SOFTWARE_LOC=/scratch/software/23.26ai/goldimages +GRID_SW_ZIP_FILE=LINUX.X64_260000_grid_home.zip COPY_DB_SOFTWARE=true -DB_SW_ZIP_FILE=LINUX.X64_213000_db_home.zip +DB_SW_ZIP_FILE=LINUX.X64_260000_db_home.zip OP_TYPE=setuprac -GRID_RESPONSE_FILE=/tmp/grid_21c.rsp -DBCA_RESPONSE_FILE=/tmp/dbca_21c.rsp +GRID_RESPONSE_FILE=/tmp/grid_23.26ai.rsp +DBCA_RESPONSE_FILE=/tmp/dbca_23.26ai.rsp OP_TYPE=racaddnode DB_NAME=ORCLCDB EXISTING_CLS_NODE=racnodep1,racnodep2 diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/grid_setup_21c.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/grid_setup_new_23.26ai.rsp similarity index 75% rename from OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/grid_setup_21c.rsp rename to OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/grid_setup_new_23.26ai.rsp index 7165f956ef..150317f4cf 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/grid_setup_21c.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/grid_setup_new_23.26ai.rsp @@ -1,4 +1,4 @@ -oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v21.0.0 +oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v23.0.0 INVENTORY_LOCATION=/u01/app/oraInventory installOption=CRS_CONFIG ORACLE_BASE=/u01/app/grid @@ -8,20 +8,20 @@ skipDriverUpdate= OSDBA=asmdba OSOPER=asmoper OSASM=asmadmin -scanType= +scanType=LOCAL_SCAN scanClientDataFile= scanName=racnodepc1-scan scanPort=1521 -configureAsExtendedCluster= -clusterName=racnode-c +configureAsExtendedCluster=false +clusterName=rac01cluster configureGNS= configureDHCPAssignedVIPs= gnsSubDomain= gnsVIPAddress= sites= clusterNodes=racnodep3:racnodep3-vip:HUB -networkInterfaceList=eth0:172.20.1.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 -storageOption= +networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 +storageOption=FLEX_ASM_STORAGE votingFilesLocations= ocrLocations= clientDataFile= @@ -29,17 +29,16 @@ useIPMI= bmcBinpath= bmcUsername= bmcPassword= -sysasmPassword=ORacle__21c +sysasmPassword=<< YOUR PASSWORD HERE >> diskGroupName=DATA redundancy=EXTERNAL -auSize= +auSize=4 failureGroups= disksWithFailureGroupNames=/dev/asm-disk1,,/dev/asm-disk2, diskList=/dev/asm-disk1,/dev/asm-disk2 quorumFailureGroupNames= diskString=/dev/asm* -asmsnmpPassword=ORacle__21c -configureAFD=false +asmsnmpPassword=<< YOUR PASSWORD HERE >> ignoreDownNodes=false configureBackupDG= backupDGName= @@ -49,7 +48,7 @@ backupDGFailureGroups= backupDGDisksWithFailureGroupNames= backupDGDiskList= backupDGQuorumFailureGroups= -managementOption= +managementOption=NONE omsHost= omsPort= emAdminUser= @@ -60,4 +59,4 @@ sudoPath= sudoUserName= batchInfo= nodesToDelete= -enableAutoFixup= \ No newline at end of file +enableAutoFixup= diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/podman-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/podman-compose.yml index 399fba7b78..5132e562e4 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/podman-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/addition/podman-compose.yml @@ -30,20 +30,20 @@ services: volumes: - /scratch/rac/cluster01/node3:/u01 - /scratch:/scratch - - ${DB_RESPONSE_FILE}:/tmp/dbca_21c.rsp - - ${GRID_RESPONSE_FILE}:/tmp/grid_21c.rsp + - ${DB_RESPONSE_FILE}:/tmp/dbca_23.26ai.rsp + - ${GRID_RESPONSE_FILE}:/tmp/grid_23.26ai.rsp environment: PRIVATE_IP1_LIST: ${RACNODE3_PRIVATE_IP1_LIST} PRIVATE_IP2_LIST: ${RACNODE3_PRIVATE_IP2_LIST} DEFAULT_GATEWAY: ${DEFAULT_GATEWAY} - GRID_HOME: /u01/app/21c/grid + GRID_HOME: /u01/app/26ai/grid COPY_GRID_SOFTWARE: true STAGING_SOFTWARE_LOC: ${STAGING_SOFTWARE_LOC} - GRID_SW_ZIP_FILE: LINUX.X64_213000_grid_home.zip + GRID_SW_ZIP_FILE: LINUX.X64_260000_grid_home.zip COPY_DB_SOFTWARE: true - DB_SW_ZIP_FILE: LINUX.X64_213000_db_home.zip - GRID_RESPONSE_FILE: /tmp/grid_21c.rsp - DBCA_RESPONSE_FILE: /tmp/dbca_21c.rsp + DB_SW_ZIP_FILE: LINUX.X64_260000_db_home.zip + GRID_RESPONSE_FILE: /tmp/grid_23.26ai.rsp + DBCA_RESPONSE_FILE: /tmp/dbca_23.26ai.rsp OP_TYPE: racaddnode EXISTING_CLS_NODE: ${EXISTING_CLS_NODE} DB_PWD_FILE: pwdsecret @@ -71,7 +71,7 @@ services: - rac_priv1_nw - rac_priv2_nw healthcheck: - test: ["CMD-SHELL", "if [ `cat /tmp/orod/oracle_rac_setup.log | grep -c 'ORACLE RAC DATABASE IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + test: ["CMD-SHELL", "if [ `cat /tmp/orod/oracle_db_setup.log | grep -c 'ORACLE RAC DATABASE IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] interval: ${HEALTHCHECK_INTERVAL} timeout: ${HEALTHCHECK_TIMEOUT} retries: ${HEALTHCHECK_RETRIES} \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/dbca_21c.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/dbca_23.26ai.rsp similarity index 86% rename from OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/dbca_21c.rsp rename to OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/dbca_23.26ai.rsp index e36b5e55d7..fe21b49dfa 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/dbca_21c.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/dbca_23.26ai.rsp @@ -1,4 +1,4 @@ -responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v21.0.0 +responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v23.0.0 gdbName=ORCLCDB sid=ORCLCDB databaseConfigType=RAC @@ -15,15 +15,15 @@ createAsContainerDatabase=true numberOfPDBs=1 pdbName=ORCLPDB useLocalUndoForPDBs=true -pdbAdminPassword=ORacle__21c +pdbAdminPassword=<< YOUR PASSWORD HERE >> nodelist=racnodep1,racnodep2 templateName={ORACLE_HOME}/assistants/dbca/templates/General_Purpose.dbc -sysPassword=ORacle__21c -systemPassword=ORacle__21c +sysPassword=<< YOUR PASSWORD HERE >> +systemPassword=<< YOUR PASSWORD HERE >> oracleHomeUserPassword= emConfiguration= runCVUChecks=true -dbsnmpPassword=ORacle__21c +dbsnmpPassword=<< YOUR PASSWORD HERE >> omsHost= omsPort= emUser= @@ -49,10 +49,10 @@ dirServicePassword= walletPassword= listeners=LISTENER variablesFile= -variables=DB_UNIQUE_NAME=ORCLCDB,ORACLE_BASE=/u01/app/oracle,PDB_NAME=ORCLPDB,DB_NAME=ORCLCDB,ORACLE_HOME=/u01/app/oracle/product/21c/dbhome_1,SID=ORCLCDB +variables=DB_UNIQUE_NAME=ORCLCDB,ORACLE_BASE=/u01/app/oracle,PDB_NAME=ORCLPDB,DB_NAME=ORCLCDB,ORACLE_HOME=/u01/app/oracle/product/26ai/dbhome_1,SID=ORCLCDB initParams=audit_trail=none,audit_sys_operations=false,remote_login_passwordfile=exclusive sampleSchema=false memoryPercentage=40 databaseType=MULTIPURPOSE automaticMemoryManagement=false -totalMemory=5000 \ No newline at end of file +totalMemory=5000 diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/envfile_racnodep1 b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/envfile_racnodep1 index 8ac6f400f8..fe267d2372 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/envfile_racnodep1 +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/envfile_racnodep1 @@ -1,15 +1,15 @@ DNS_SERVERS=10.0.20.25 CRS_PRIVATE_IP1=192.168.17.170 CRS_PRIVATE_IP2=192.168.18.170 -GRID_HOME=/u01/app/21c/grid -STAGING_SOFTWARE_LOC=/scratch/software/21c/goldimages -GRID_SW_ZIP_FILE=LINUX.X64_213000_grid_home.zip -DB_SW_ZIP_FILE=LINUX.X64_213000_db_home.zip +GRID_HOME=/u01/app/26ai/grid +STAGING_SOFTWARE_LOC=/scratch/software/23.26ai/goldimages +GRID_SW_ZIP_FILE=LINUX.X64_260000_grid_home.zip +DB_SW_ZIP_FILE=LINUX.X64_260000_db_home.zip OP_TYPE=setuprac SCAN_NAME=racnodepc1-scan INSTALL_NODE=racnodep1 -GRID_RESPONSE_FILE=/tmp/grid_21c.rsp -DBCA_RESPONSE_FILE=/tmp/dbca_21c.rsp +GRID_RESPONSE_FILE=/tmp/grid_23.26ai.rsp +DBCA_RESPONSE_FILE=/tmp/dbca_23.26ai.rsp DB_PWD_FILE=pwdsecret PWD_KEY=keysecret DB_SERVICE=service:soepdb \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/envfile_racnodep2 b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/envfile_racnodep2 index 7a9e3e570b..99d7aa59f4 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/envfile_racnodep2 +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/envfile_racnodep2 @@ -1,15 +1,15 @@ DNS_SERVERS=10.0.20.25 CRS_PRIVATE_IP1=192.168.17.171 CRS_PRIVATE_IP2=192.168.18.171 -GRID_HOME=/u01/app/21c/grid -STAGING_SOFTWARE_LOC=/scratch/software/21c/goldimages -GRID_SW_ZIP_FILE=LINUX.X64_213000_grid_home.zip -DB_SW_ZIP_FILE=LINUX.X64_213000_db_home.zip +GRID_HOME=/u01/app/26ai/grid +STAGING_SOFTWARE_LOC=/scratch/software/23.26ai/goldimages +GRID_SW_ZIP_FILE=LINUX.X64_260000_grid_home.zip +DB_SW_ZIP_FILE=LINUX.X64_260000_db_home.zip OP_TYPE=setuprac SCAN_NAME=racnodepc1-scan INSTALL_NODE=racnodep1 -GRID_RESPONSE_FILE=/tmp/grid_21c.rsp -DBCA_RESPONSE_FILE=/tmp/dbca_21c.rsp +GRID_RESPONSE_FILE=/tmp/grid_23.26ai.rsp +DBCA_RESPONSE_FILE=/tmp/dbca_23.26ai.rsp DB_PWD_FILE=pwdsecret PWD_KEY=keysecret DB_SERVICE=service:soepdb \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/grid_setup_21c.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/grid_setup_21c.rsp deleted file mode 100644 index c7ffe19d4a..0000000000 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/grid_setup_21c.rsp +++ /dev/null @@ -1,64 +0,0 @@ -oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v21.0.0 -INVENTORY_LOCATION=/u01/app/oraInventory -oracle.install.option=CRS_CONFIG -ORACLE_BASE=/u01/app/grid -oracle.install.asm.OSDBA=dba -oracle.install.asm.OSOPER= -oracle.install.asm.OSASM=asmadmin -oracle.install.crs.config.scanType=LOCAL_SCAN -oracle.install.crs.config.SCANClientDataFile= -oracle.install.crs.config.gpnp.scanName=racnodepc1-scan -oracle.install.crs.config.gpnp.scanPort=1521 -oracle.install.crs.config.ClusterConfiguration=STANDALONE -oracle.install.crs.config.configureAsExtendedCluster=false -oracle.install.crs.config.memberClusterManifestFile= -oracle.install.crs.config.clusterName=rac01cluster -oracle.install.crs.config.gpnp.configureGNS= -oracle.install.crs.config.autoConfigureClusterNodeVIP=false -oracle.install.crs.config.gpnp.gnsOption= -oracle.install.crs.config.gpnp.gnsClientDataFile= -oracle.install.crs.config.gpnp.gnsSubDomain= -oracle.install.crs.config.gpnp.gnsVIPAddress= -oracle.install.crs.config.sites= -oracle.install.crs.config.clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB -oracle.install.crs.config.networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 -oracle.install.asm.configureGIMRDataDG=false -oracle.install.crs.config.storageOption= -oracle.install.crs.config.useIPMI=false -oracle.install.crs.config.ipmi.bmcUsername= -oracle.install.crs.config.ipmi.bmcPassword= -oracle.install.asm.storageOption=ASM -oracle.install.asmOnNAS.ocrLocation= -oracle.install.asmOnNAS.configureGIMRDataDG=false -oracle.install.asmOnNAS.gimrLocation= -oracle.install.asm.SYSASMPassword=ORacle__21c -oracle.install.asm.diskGroup.name=DATA -oracle.install.asm.diskGroup.redundancy=EXTERNAL -oracle.install.asm.diskGroup.AUSize=4 -oracle.install.asm.diskGroup.FailureGroups= -oracle.install.asm.diskGroup.disksWithFailureGroupNames=/dev/asm-disk1,,/dev/asm-disk2, -oracle.install.asm.diskGroup.disks=/dev/asm-disk1,/dev/asm-disk2 -oracle.install.asm.diskGroup.quorumFailureGroupNames= -oracle.install.asm.diskGroup.diskDiscoveryString=/dev/asm* -oracle.install.asm.monitorPassword=ORacle__21c -oracle.install.asm.gimrDG.name= -oracle.install.asm.gimrDG.redundancy= -oracle.install.asm.gimrDG.AUSize=1 -oracle.install.asm.gimrDG.FailureGroups= -oracle.install.asm.gimrDG.disksWithFailureGroupNames= -oracle.install.asm.gimrDG.disks= -oracle.install.asm.gimrDG.quorumFailureGroupNames= -oracle.install.asm.configureAFD=false -oracle.install.crs.configureRHPS=false -oracle.install.crs.config.ignoreDownNodes=false -oracle.install.config.managementOption=NONE -oracle.install.config.omsHost= -oracle.install.config.omsPort=0 -oracle.install.config.emAdminUser= -oracle.install.config.emAdminPassword= -oracle.install.crs.rootconfig.executeRootScript=false -oracle.install.crs.rootconfig.configMethod=ROOT -oracle.install.crs.rootconfig.sudoPath= -oracle.install.crs.rootconfig.sudoUserName= -oracle.install.crs.config.batchinfo= -oracle.install.crs.deleteNode.nodes= \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/grid_setup_23.26ai.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/grid_setup_23.26ai.rsp new file mode 100644 index 0000000000..5c15376174 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/blockdevices/grid_setup_23.26ai.rsp @@ -0,0 +1,62 @@ +oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v23.0.0 +INVENTORY_LOCATION=/u01/app/oraInventory +installOption=CRS_CONFIG +ORACLE_BASE=/u01/app/grid +clusterUsage= +zeroDowntimeGIPatching= +skipDriverUpdate= +OSDBA=asmdba +OSOPER=asmoper +OSASM=asmadmin +scanType=LOCAL_SCAN +scanClientDataFile= +scanName=racnodepc1-scan +scanPort=1521 +configureAsExtendedCluster=false +clusterName=rac01cluster +configureGNS= +configureDHCPAssignedVIPs= +gnsSubDomain= +gnsVIPAddress= +sites= +clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB +networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 +storageOption=FLEX_ASM_STORAGE +votingFilesLocations= +ocrLocations= +clientDataFile= +useIPMI=false +bmcBinpath= +bmcUsername= +bmcPassword= +sysasmPassword=<< YOUR PASSWORD HERE >> +diskGroupName=DATA +redundancy=EXTERNAL +auSize=4 +failureGroups= +disksWithFailureGroupNames=/dev/asm-disk1,,/dev/asm-disk2, +diskList=/dev/asm-disk1,/dev/asm-disk2 +quorumFailureGroupNames= +diskString=/dev/asm* +asmsnmpPassword=<< YOUR PASSWORD HERE >> +ignoreDownNodes=false +configureBackupDG= +backupDGName= +backupDGRedundancy= +backupDGAUSize= +backupDGFailureGroups= +backupDGDisksWithFailureGroupNames= +backupDGDiskList= +backupDGQuorumFailureGroups= +managementOption=NONE +omsHost= +omsPort= +emAdminUser= +emAdminPassword= +executeRootScript=false +configMethod=ROOT +sudoPath= +sudoUserName= +batchInfo= +nodesToDelete= +enableAutoFixup= diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/dbca_23.26ai.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/dbca_23.26ai.rsp new file mode 100644 index 0000000000..fe21b49dfa --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/dbca_23.26ai.rsp @@ -0,0 +1,58 @@ +responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v23.0.0 +gdbName=ORCLCDB +sid=ORCLCDB +databaseConfigType=RAC +RACOneNodeServiceName= +policyManaged=false +managementPolicy= +createServerPool=false +serverPoolName= +cardinality= +force=false +pqPoolName= +pqCardinality= +createAsContainerDatabase=true +numberOfPDBs=1 +pdbName=ORCLPDB +useLocalUndoForPDBs=true +pdbAdminPassword=<< YOUR PASSWORD HERE >> +nodelist=racnodep1,racnodep2 +templateName={ORACLE_HOME}/assistants/dbca/templates/General_Purpose.dbc +sysPassword=<< YOUR PASSWORD HERE >> +systemPassword=<< YOUR PASSWORD HERE >> +oracleHomeUserPassword= +emConfiguration= +runCVUChecks=true +dbsnmpPassword=<< YOUR PASSWORD HERE >> +omsHost= +omsPort= +emUser= +emPassword= +dvConfiguration=false +dvUserName= +dvUserPassword= +dvAccountManagerName= +dvAccountManagerPassword= +olsConfiguration=false +datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates/ +datafileDestination=+DATA/{DB_UNIQUE_NAME}/ +recoveryAreaDestination= +storageType=ASM +diskGroupName=+DATA/{DB_UNIQUE_NAME}/ +asmsnmpPassword= +recoveryGroupName= +characterSet=AL32UTF8 +nationalCharacterSet=AL16UTF16 +registerWithDirService= +dirServiceUserName= +dirServicePassword= +walletPassword= +listeners=LISTENER +variablesFile= +variables=DB_UNIQUE_NAME=ORCLCDB,ORACLE_BASE=/u01/app/oracle,PDB_NAME=ORCLPDB,DB_NAME=ORCLCDB,ORACLE_HOME=/u01/app/oracle/product/26ai/dbhome_1,SID=ORCLCDB +initParams=audit_trail=none,audit_sys_operations=false,remote_login_passwordfile=exclusive +sampleSchema=false +memoryPercentage=40 +databaseType=MULTIPURPOSE +automaticMemoryManagement=false +totalMemory=5000 diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/envfile_racnodep1 b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/envfile_racnodep1 index 69944faa5e..35661b7b56 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/envfile_racnodep1 +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/envfile_racnodep1 @@ -1,16 +1,16 @@ DNS_SERVERS=10.0.20.25 CRS_PRIVATE_IP1=192.168.17.170 CRS_PRIVATE_IP2=192.168.18.170 -GRID_HOME=/u01/app/21c/grid +GRID_HOME=/u01/app/26ai/grid DEFAULT_GATEWAY=10.0.20.1 -STAGING_SOFTWARE_LOC=/scratch/software/21c/goldimages -GRID_SW_ZIP_FILE=LINUX.X64_213000_grid_home.zip -DB_SW_ZIP_FILE=LINUX.X64_213000_db_home.zip +STAGING_SOFTWARE_LOC=/scratch/software/23.26ai/goldimages +GRID_SW_ZIP_FILE=LINUX.X64_260000_grid_home.zip +DB_SW_ZIP_FILE=LINUX.X64_260000_db_home.zip OP_TYPE=setuprac SCAN_NAME=racnodepc1-scan INSTALL_NODE=racnodep1 -GRID_RESPONSE_FILE=/tmp/grid_21c.rsp -DBCA_RESPONSE_FILE=/tmp/dbca_21c.rsp +GRID_RESPONSE_FILE=/tmp/grid_23.26ai.rsp +DBCA_RESPONSE_FILE=/tmp/dbca_23.26ai.rsp ASM_ON_NAS=True DB_PWD_FILE=pwdsecret PWD_KEY=keysecret diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/envfile_racnodep2 b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/envfile_racnodep2 index 360aefdede..ce0662585a 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/envfile_racnodep2 +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/envfile_racnodep2 @@ -1,16 +1,16 @@ DNS_SERVERS=10.0.20.25 CRS_PRIVATE_IP1=192.168.17.171 CRS_PRIVATE_IP2=192.168.18.171 -GRID_HOME=/u01/app/21c/grid +GRID_HOME=/u01/app/26ai/grid DEFAULT_GATEWAY=10.0.20.1 -STAGING_SOFTWARE_LOC=/scratch/software/21c/goldimages -GRID_SW_ZIP_FILE=LINUX.X64_213000_grid_home.zip -DB_SW_ZIP_FILE=LINUX.X64_213000_db_home.zip +STAGING_SOFTWARE_LOC=/scratch/software/23.26ai/goldimages +GRID_SW_ZIP_FILE=LINUX.X64_260000_grid_home.zip +DB_SW_ZIP_FILE=LINUX.X64_260000_db_home.zip OP_TYPE=setuprac SCAN_NAME=racnodepc1-scan INSTALL_NODE=racnodep1 -GRID_RESPONSE_FILE=/tmp/grid_21c.rsp -DBCA_RESPONSE_FILE=/tmp/dbca_21c.rsp +GRID_RESPONSE_FILE=/tmp/grid_23.26ai.rsp +DBCA_RESPONSE_FILE=/tmp/dbca_23.26ai.rsp ASM_ON_NAS=True DB_PWD_FILE=pwdsecret PWD_KEY=keysecret diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/grid_setup_21c.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/grid_setup_21c.rsp deleted file mode 100644 index 6ecd64dc55..0000000000 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/grid_setup_21c.rsp +++ /dev/null @@ -1,64 +0,0 @@ -oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v21.0.0 -INVENTORY_LOCATION=/u01/app/oraInventory -oracle.install.option=CRS_CONFIG -ORACLE_BASE=/u01/app/grid -oracle.install.asm.OSDBA=dba -oracle.install.asm.OSOPER= -oracle.install.asm.OSASM=asmadmin -oracle.install.crs.config.scanType=LOCAL_SCAN -oracle.install.crs.config.SCANClientDataFile= -oracle.install.crs.config.gpnp.scanName=racnodepc1-scan -oracle.install.crs.config.gpnp.scanPort=1521 -oracle.install.crs.config.ClusterConfiguration=STANDALONE -oracle.install.crs.config.configureAsExtendedCluster=false -oracle.install.crs.config.memberClusterManifestFile= -oracle.install.crs.config.clusterName=rac01cluster -oracle.install.crs.config.gpnp.configureGNS= -oracle.install.crs.config.autoConfigureClusterNodeVIP=false -oracle.install.crs.config.gpnp.gnsOption= -oracle.install.crs.config.gpnp.gnsClientDataFile= -oracle.install.crs.config.gpnp.gnsSubDomain= -oracle.install.crs.config.gpnp.gnsVIPAddress= -oracle.install.crs.config.sites= -oracle.install.crs.config.clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB -oracle.install.crs.config.networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 -oracle.install.asm.configureGIMRDataDG=false -oracle.install.crs.config.storageOption= -oracle.install.crs.config.useIPMI=false -oracle.install.crs.config.ipmi.bmcUsername= -oracle.install.crs.config.ipmi.bmcPassword= -oracle.install.asm.storageOption=ASM -oracle.install.asmOnNAS.ocrLocation= -oracle.install.asmOnNAS.configureGIMRDataDG=false -oracle.install.asmOnNAS.gimrLocation= -oracle.install.asm.SYSASMPassword=ORacle__21c -oracle.install.asm.diskGroup.name=DATA -oracle.install.asm.diskGroup.redundancy=EXTERNAL -oracle.install.asm.diskGroup.AUSize=4 -oracle.install.asm.diskGroup.FailureGroups= -oracle.install.asm.diskGroup.disksWithFailureGroupNames=/oradata/asm_disk01.img,,/oradata/asm_disk02.img,,/oradata/asm_disk03.img,,/oradata/asm_disk04.img,,/oradata/asm_disk05.img -oracle.install.asm.diskGroup.disks=/oradata/asm_disk01.img,/oradata/asm_disk02.img,/oradata/asm_disk03.img,/oradata/asm_disk04.img,/oradata/asm_disk05.img -oracle.install.asm.diskGroup.quorumFailureGroupNames= -oracle.install.asm.diskGroup.diskDiscoveryString=/oradata/asm_disk* -oracle.install.asm.monitorPassword=ORacle__21c -oracle.install.asm.gimrDG.name= -oracle.install.asm.gimrDG.redundancy= -oracle.install.asm.gimrDG.AUSize=1 -oracle.install.asm.gimrDG.FailureGroups= -oracle.install.asm.gimrDG.disksWithFailureGroupNames= -oracle.install.asm.gimrDG.disks= -oracle.install.asm.gimrDG.quorumFailureGroupNames= -oracle.install.asm.configureAFD=false -oracle.install.crs.configureRHPS=false -oracle.install.crs.config.ignoreDownNodes=false -oracle.install.config.managementOption=NONE -oracle.install.config.omsHost= -oracle.install.config.omsPort=0 -oracle.install.config.emAdminUser= -oracle.install.config.emAdminPassword= -oracle.install.crs.rootconfig.executeRootScript=false -oracle.install.crs.rootconfig.configMethod=ROOT -oracle.install.crs.rootconfig.sudoPath= -oracle.install.crs.rootconfig.sudoUserName= -oracle.install.crs.config.batchinfo= -oracle.install.crs.deleteNode.nodes= \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/grid_setup_23.26ai.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/grid_setup_23.26ai.rsp new file mode 100644 index 0000000000..b3a93a947a --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/docs/rac-container/racslimimage/withresponsefiles/nfsdevices/grid_setup_23.26ai.rsp @@ -0,0 +1,62 @@ +oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v23.0.0 +INVENTORY_LOCATION=/u01/app/oraInventory +installOption=CRS_CONFIG +ORACLE_BASE=/u01/app/grid +clusterUsage= +zeroDowntimeGIPatching= +skipDriverUpdate= +OSDBA=asmdba +OSOPER=asmoper +OSASM=asmadmin +scanType=LOCAL_SCAN +scanClientDataFile= +scanName=racnodepc1-scan +scanPort=1521 +configureAsExtendedCluster=false +clusterName=rac01cluster +configureGNS= +configureDHCPAssignedVIPs= +gnsSubDomain= +gnsVIPAddress= +sites= +clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB +networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 +storageOption=FLEX_ASM_STORAGE +votingFilesLocations= +ocrLocations= +clientDataFile= +useIPMI= +bmcBinpath= +bmcUsername= +bmcPassword= +sysasmPassword=<< YOUR PASSWORD HERE >> +diskGroupName=DATA +redundancy=EXTERNAL +auSize=4 +failureGroups= +disksWithFailureGroupNames=/oradata/asm_disk01.img,,/oradata/asm_disk02.img,,/oradata/asm_disk03.img,,/oradata/asm_disk04.img,,/oradata/asm_disk05.img, +diskList=/oradata/asm_disk01.img,/oradata/asm_disk02.img,/oradata/asm_disk03.img,/oradata/asm_disk04.img,/oradata/asm_disk05.img +quorumFailureGroupNames= +diskString=/oradata/asm_disk* +asmsnmpPassword=<< YOUR PASSWORD HERE >> +ignoreDownNodes=false +configureBackupDG= +backupDGName= +backupDGRedundancy= +backupDGAUSize= +backupDGFailureGroups= +backupDGDisksWithFailureGroupNames= +backupDGDiskList= +backupDGQuorumFailureGroups= +managementOption=NONE +omsHost= +omsPort= +emAdminUser= +emAdminPassword= +executeRootScript=false +configMethod=ROOT +sudoPath= +sudoUserName= +batchInfo= +nodesToDelete= +enableAutoFixup= diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/README.md b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/README.md index fbdd415ade..e3167eaea2 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/README.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/README.md @@ -1,25 +1,25 @@ -Examples of how to extend the Oracle Database Docker Image -======================================================= +# Examples of how to extend the Oracle Database Container Image +================================ -applypatch ----------- -Example of how to apply a custom patch or Release Update (RU) to the image. You can apply RU or a custom patch on Oracle Grid Infrastructure Home or on Oracle RAC DB Home. For details, please refer to [README.MD of applypatch](./applypatch/README.md). +## applypatch -customracdb ------------ -Example of how to create a 2-node RAC based on sample response files provided under customracdb/ folder. You can create a multi-node RAC using response files based on your environment. For details, please refer to [README.MD of customracdb](./customracdb/README.md). +Example of how to apply a custom patch or Release Update (RU) to the image. You can apply RU or custom patch on Oracle Grid Infrastructure Home or on Oracle RAC DB Home. For details, refer [README.MD of applypatch](./applypatch/README.md). -racdockercompose ----------------- -Example of how to create a 2-node RAC based on Docker Compose. You can create a single-node RAC using Docker Compose based on your environment. For details, please refer to [README.MD of racdockercompose](./racdockercompose_1/README.md). +## customracdb -racpodmancompose ----------------- -Example of how to create 2 node Oracle RAC Setup on **Podman Compose** using Oracle RAC image or RAC slim image, with or without User Defined Response files. You can also create multinode rac using responsefiles based on your environment. +Example of how to create 2 node RAC based on sample responsefiles provided under customracdb/ folder. You can create multinode rac using responsefiles based on your environment. For details, refer [README.MD of customracdb](./customracdb/README.md). -Refer [Podman Compose using Oracle RAC container image](./rac-compose/racimage/README.md) for details in order to setup 2 node Oracle RAC Setup on Podman Compose using Oracle RAC Container Image. +## rac-compose + +Example of how to create 2 node Oracle RAC Setup on **Podman Compose** using Oracle RAC image or RAC slim image, with or without User Defined Response files. You can also create multinode rac using responsefiles based on your environment. + +Refer [Podman Compose using Oracle RAC container image](./rac-compose/racimage/README.md) for details in order to setup 2 node Oracle RAC Setup on Podman Compose using Oracle RAC Container Image. Refer [Podman Compose using Oracle RAC slim image](./rac-compose/racslimimage/README.md) for details in order to setup 2 node Oracle RAC Setup on Podman Compose using Oracle RAC Slim Image. -Copyright ---------- -Copyright (c) 2014-2025 Oracle and/or its affiliates. All rights reserved. \ No newline at end of file +## License + +All scripts and files hosted in this repository which are required to build the container images are, unless otherwise noted, released under UPL 1.0 license. + +## Copyright + +Copyright (c) 2014-2025 Oracle and/or its affiliates. \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/applypatch/README.md b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/applypatch/README.md index 111a59b5f3..8ffc611b37 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/applypatch/README.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/applypatch/README.md @@ -81,4 +81,4 @@ podman tag localhost/oracle/database-rac:21.3.0-21.16.0 localhost/oracle/databas ## Copyright -Copyright (c) 2014-2025 Oracle and/or its affiliates. All rights reserved. \ No newline at end of file +Copyright (c) 2014-2025 Oracle and/or its affiliates. All rights reserved. diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/12.2.0.1/dbca_sample.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/12.2.0.1/dbca_sample.rsp index 3c7fb45800..1ea9a8aab6 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/12.2.0.1/dbca_sample.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/12.2.0.1/dbca_sample.rsp @@ -200,7 +200,7 @@ useLocalUndoForPDBs=true # Mandatory : No #----------------------------------------------------------------------------- -pdbAdminPassword=Oracle_19c +pdbAdminPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : nodelist @@ -230,7 +230,7 @@ templateName={ORACLE_HOME}/assistants/dbca/templates/General_Purpose.dbc # Default value : None # Mandatory : Yes #----------------------------------------------------------------------------- -sysPassword=Oracle_19c +sysPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : systemPassword @@ -240,7 +240,7 @@ sysPassword=Oracle_19c # Default value : None # Mandatory : Yes #----------------------------------------------------------------------------- -systemPassword=Oracle_19c +systemPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : serviceUserPassword diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/12.2.0.1/grid_sample.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/12.2.0.1/grid_sample.rsp index 99e50055bb..471b014c61 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/12.2.0.1/grid_sample.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/12.2.0.1/grid_sample.rsp @@ -338,7 +338,7 @@ oracle.install.asmOnNAS.gimrLocation= #------------------------------------------------------------------------------- # Password for SYS user of Oracle ASM #------------------------------------------------------------------------------- -oracle.install.asm.SYSASMPassword=Oracle_19c +oracle.install.asm.SYSASMPassword=<< YOUR PASSWORD HERE >> #------------------------------------------------------------------------------- # The ASM DiskGroup @@ -432,7 +432,7 @@ oracle.install.asm.diskGroup.diskDiscoveryString=/dev/oracleoci/* # Password for ASMSNMP account # ASMSNMP account is used by Oracle Enterprise Manager to monitor Oracle ASM instances #------------------------------------------------------------------------------- -oracle.install.asm.monitorPassword=Oracle_19c +oracle.install.asm.monitorPassword=<< YOUR PASSWORD HERE >> #------------------------------------------------------------------------------- # GIMR Storage data ASM DiskGroup diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/18.3.0/dbca_sample.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/18.3.0/dbca_sample.rsp index c1a70919ec..7621067057 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/18.3.0/dbca_sample.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/18.3.0/dbca_sample.rsp @@ -199,7 +199,7 @@ useLocalUndoForPDBs=true # Mandatory : No #----------------------------------------------------------------------------- -pdbAdminPassword=Oracle_19c +pdbAdminPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : nodelist @@ -229,7 +229,7 @@ templateName={ORACLE_HOME}/assistants/dbca/templates/General_Purpose.dbc # Default value : None # Mandatory : Yes #----------------------------------------------------------------------------- -sysPassword=Oracle_19c +sysPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : systemPassword @@ -239,7 +239,7 @@ sysPassword=Oracle_19c # Default value : None # Mandatory : Yes #----------------------------------------------------------------------------- -systemPassword=Oracle_19c +systemPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : serviceUserPassword @@ -291,7 +291,7 @@ runCVUChecks=true # Mandatory : Yes, if emConfiguration is specified or # the value of runCVUChecks is TRUE #----------------------------------------------------------------------------- -dbsnmpPassword=Oracle_19c +dbsnmpPassword=<< YOUR PASSWORD HERE >> #----------------------------------------------------------------------------- # Name : omsHost diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/18.3.0/grid_sample.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/18.3.0/grid_sample.rsp index 875aa8a9b0..7df16fb3f9 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/18.3.0/grid_sample.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/18.3.0/grid_sample.rsp @@ -355,7 +355,7 @@ oracle.install.asmOnNAS.gimrLocation= #------------------------------------------------------------------------------- # Password for SYS user of Oracle ASM #------------------------------------------------------------------------------- -oracle.install.asm.SYSASMPassword=Oracle_19c +oracle.install.asm.SYSASMPassword=<< YOUR PASSWORD HERE >> #------------------------------------------------------------------------------- # The ASM DiskGroup @@ -451,7 +451,7 @@ oracle.install.asm.diskGroup.diskDiscoveryString=/dev/oracleoci/* # Password for ASMSNMP account # ASMSNMP account is used by Oracle Enterprise Manager to monitor Oracle ASM instances #------------------------------------------------------------------------------- -oracle.install.asm.monitorPassword=Oracle_19c +oracle.install.asm.monitorPassword=<< YOUR PASSWORD HERE >> #------------------------------------------------------------------------------- # GIMR Storage data ASM DiskGroup diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/19.3.0/dbca_sample.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/19.3.0/dbca_sample.rsp index 87d73f1cde..f8b4dcd97f 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/19.3.0/dbca_sample.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/19.3.0/dbca_sample.rsp @@ -14,16 +14,16 @@ createAsContainerDatabase=true numberOfPDBs=1 pdbName=ORCLPDB useLocalUndoForPDBs=true -pdbAdminPassword=Oracle_19c +pdbAdminPassword=<< YOUR PASSWORD HERE >> nodelist=racnode1,racnode2 templateName={ORACLE_HOME}/assistants/dbca/templates/General_Purpose.dbc -sysPassword=Oracle_19c -systemPassword=Oracle_19c +sysPassword=<< YOUR PASSWORD HERE >> +systemPassword=<< YOUR PASSWORD HERE >> oracleHomeUserPassword= emConfiguration=DBEXPRESS emExpressPort=5500 runCVUChecks=true -dbsnmpPassword=Oracle_19c +dbsnmpPassword=<< YOUR PASSWORD HERE >> omsHost= omsPort= emUser= diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/19.3.0/grid_sample.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/19.3.0/grid_sample.rsp index 31b0475dce..adc7213989 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/19.3.0/grid_sample.rsp +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/19.3.0/grid_sample.rsp @@ -29,7 +29,7 @@ oracle.install.crs.config.sharedFileSystemStorage.ocrLocations= oracle.install.crs.config.useIPMI= oracle.install.crs.config.ipmi.bmcUsername= oracle.install.crs.config.ipmi.bmcPassword= -oracle.install.asm.SYSASMPassword=Oracle_19c +oracle.install.asm.SYSASMPassword=<< YOUR PASSWORD HERE >> oracle.install.asm.diskGroup.name=DATA oracle.install.asm.diskGroup.redundancy=EXTERNAL oracle.install.asm.diskGroup.AUSize=4 @@ -38,7 +38,7 @@ oracle.install.asm.diskGroup.disksWithFailureGroupNames=/dev/oracleoci/oraclevdf oracle.install.asm.diskGroup.disks=/dev/oracleoci/oraclevdf,/dev/oracleoci/oraclevde oracle.install.asm.diskGroup.quorumFailureGroupNames= oracle.install.asm.diskGroup.diskDiscoveryString=/dev/oracleoci/* -oracle.install.asm.monitorPassword=Oracle_19c +oracle.install.asm.monitorPassword=<< YOUR PASSWORD HERE >> oracle.install.asm.gimrDG.name= oracle.install.asm.gimrDG.redundancy= oracle.install.asm.gimrDG.AUSize=1 diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/README.md b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/README.md index 1d85419f89..5e3c945ee7 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/README.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/customracdb/README.md @@ -8,18 +8,18 @@ Once you have built your Oracle RAC container image you can create a Oracle RAC - [Section 3 : Creating the RAC Container](#section-3--creating-the-rac-container) - [Network and Password Management](#network-and-password-management) - [Section 4: Oracle RAC on Docker](#section-4-oracle-rac-on-docker) - - [Create Racnoded1 with Block Devices](#create-racnoded1-with-block-devices) - - [Create Racnoded2 with Block Devices](#create-racnoded2-with-block-devices) + - [Create racnoded1 with Block Devices](#create-racnoded1-with-block-devices) + - [Create racnoded2 with Block Devices](#create-racnoded2-with-block-devices) - [Deploying RAC on Docker with NFS Volume](#deploying-rac-on-docker-with-nfs-volume) - - [Create Racnoded1 with NFS Volume](#create-racnoded1-with-nfs-volume) - - [Create Racnoded2 with NFS Volume](#create-racnoded2-with-nfs-volume) + - [Create racnoded1 with NFS Volume](#create-racnoded1-with-nfs-volume) + - [Create racnoded2 with NFS Volume](#create-racnoded2-with-nfs-volume) - [Attach the network to containers](#attach-the-network-to-containers) - - [Attach the network to Racnoded1](#attach-the-network-to-racnoded1) - - [Attach the network to Racnoded2](#attach-the-network-to-racnoded2) + - [Attach the network to racnoded1](#attach-the-network-to-racnoded1) + - [Attach the network to racnoded2](#attach-the-network-to-racnoded2) - [Start the containers](#start-the-containers) - - [Start Racnoded2](#start-racnoded2) + - [Start racnoded2](#start-racnoded2) - [Reset the password](#reset-the-password) - - [Start Racnoded1](#start-racnoded1) + - [Start racnoded1](#start-racnoded1) - [Connect to the RAC container](#connect-to-the-rac-container) - [Section 5: Oracle RAC on Podman](#section-5-oracle-rac-on-podman) - [Deploying RAC on Podman With Block Devices](#deploying-rac-on-podman-with-block-devices) @@ -120,11 +120,11 @@ Repeat for each shared block device. In the example above, `/dev/xvde` is a shar Now create the Docker container using the image. For the details of environment variables, please refer to section 5. You can use following example to create a container: -### Create Racnoded1 with Block Devices +### Create racnoded1 with Block Devices ```bash docker create -t -i \ ---hostname Racnoded1 \ +--hostname racnoded1 \ --volume /boot:/boot:ro \ --volume /dev/shm \ --volume /opt/.secrets:/run/secrets \ @@ -138,11 +138,11 @@ docker create -t -i \ --cap-add=SYS_RESOURCE \ --cap-add=NET_ADMIN \ -e NODE_VIP=172.16.1.160 \ --e VIP_HOSTNAME=Racnoded1-vip \ +-e VIP_HOSTNAME=racnoded1-vip \ -e PRIV_IP=192.168.17.150 \ --e PRIV_HOSTNAME=Racnoded1-priv \ +-e PRIV_HOSTNAME=racnoded1-priv \ -e PUBLIC_IP=172.16.1.150 \ --e PUBLIC_HOSTNAME=Racnoded1 \ +-e PUBLIC_HOSTNAME=racnoded1 \ -e SCAN_NAME="racnode-scan" \ -e SCAN_IP=172.16.1.70 \ -e COMMON_OS_PWD_FILE=common_os_pwdfile.enc \ @@ -150,7 +150,7 @@ docker create -t -i \ -e DEFAULT_GATEWAY=172.16.1.1 \ -e ASM_DEVICE_LIST=/dev/asm_disk1 \ -e ASM_DISCOVERY_DIR=/dev \ --e CRS_NODES="Racnoded1,Racnoded2" \ +-e CRS_NODES="racnoded1,racnoded2" \ -e GRID_RESPONSE_FILE="grid_sample.rsp" \ -e DBCA_RESPONSE_FILE="dbca_sample.rsp" \ -e OP_TYPE="INSTALL" \ @@ -158,14 +158,14 @@ docker create -t -i \ --tmpfs=/run -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ --cpu-rt-runtime=95000 \ --ulimit rtprio=99 \ ---name Racnoded1 oracle/database-rac:19.3.0 +--name racnoded1 oracle/database-rac:19.3.0 ``` -#### Create Racnoded2 with Block Devices +#### Create racnoded2 with Block Devices ```bash docker create -t -i \ ---hostname Racnoded2 \ +--hostname racnoded2 \ --volume /boot:/boot:ro \ --volume /dev/shm \ --volume /opt/.secrets:/run/secrets \ @@ -179,11 +179,11 @@ docker create -t -i \ --cap-add=SYS_RESOURCE \ --cap-add=NET_ADMIN \ -e NODE_VIP=172.16.1.161 \ --e VIP_HOSTNAME=Racnoded2-vip \ +-e VIP_HOSTNAME=racnoded2-vip \ -e PRIV_IP=192.168.17.151 \ --e PRIV_HOSTNAME=Racnoded2-priv \ +-e PRIV_HOSTNAME=racnoded2-priv \ -e PUBLIC_IP=172.16.1.151 \ --e PUBLIC_HOSTNAME=Racnoded2 \ +-e PUBLIC_HOSTNAME=racnoded2 \ -e SCAN_NAME="racnode-scan" \ -e SCAN_IP=172.16.1.70 \ -e COMMON_OS_PWD_FILE=common_os_pwdfile.enc \ @@ -191,14 +191,14 @@ docker create -t -i \ -e DEFAULT_GATEWAY=172.16.1.1 \ -e ASM_DEVICE_LIST=/dev/asm_disk1 \ -e ASM_DISCOVERY_DIR=/dev \ --e CRS_NODES="Racnoded1,Racnoded2" \ +-e CRS_NODES="racnoded1,racnoded2" \ -e GRID_RESPONSE_FILE="grid_sample.rsp" \ -e DBCA_RESPONSE_FILE="dbca_sample.rsp" \ --restart=always \ --tmpfs=/run -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ --cpu-rt-runtime=95000 \ --ulimit rtprio=99 \ ---name Racnoded2 oracle/database-rac:19.3.0 +--name racnoded2 oracle/database-rac:19.3.0 ``` **Note:** Change environment variable such as IPs, ASM_DEVICE_LIST, PWD_FILE and PWD_KEY based on your env. Also, change the devices based on your env. @@ -207,11 +207,11 @@ docker create -t -i \ Create RAC containers and utilize RAC storage containers for ASM devices: -#### Create Racnoded1 with NFS Volume +#### Create racnoded1 with NFS Volume ```bash docker create -t -i \ ---hostname Racnoded1 \ +--hostname racnoded1 \ --volume /boot:/boot:ro \ --volume /dev/shm \ --volume /opt/.secrets:/run/secrets \ @@ -225,11 +225,11 @@ docker create -t -i \ --cap-add=SYS_RESOURCE \ --cap-add=NET_ADMIN \ -e NODE_VIP=172.16.1.160 \ --e VIP_HOSTNAME=Racnoded1-vip \ +-e VIP_HOSTNAME=racnoded1-vip \ -e PRIV_IP=192.168.17.150 \ --e PRIV_HOSTNAME=Racnoded1-priv \ +-e PRIV_HOSTNAME=racnoded1-priv \ -e PUBLIC_IP=172.16.1.150 \ --e PUBLIC_HOSTNAME=Racnoded1 \ +-e PUBLIC_HOSTNAME=racnoded1 \ -e SCAN_NAME="racnode-scan" \ -e SCAN_IP=172.16.1.70 \ -e COMMON_OS_PWD_FILE=common_os_pwdfile.enc \ @@ -237,7 +237,7 @@ docker create -t -i \ -e DEFAULT_GATEWAY=172.16.1.1 \ -e ASM_DEVICE_LIST=/oradata/asm_disk01.img,/oradata/asm_disk02.img,/oradata/asm_disk03.img,/oradata/asm_disk04.img,/oradata/asm_disk05.img \ -e ASM_DISCOVERY_DIR=/oradata \ --e CRS_NODES="Racnoded1,Racnoded2" \ +-e CRS_NODES="racnoded1,racnoded2" \ -e GRID_RESPONSE_FILE="grid_sample.rsp" \ -e DBCA_RESPONSE_FILE="dbca_sample.rsp" \ -e OP_TYPE="INSTALL" \ @@ -245,14 +245,14 @@ docker create -t -i \ --tmpfs=/run -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ --cpu-rt-runtime=95000 \ --ulimit rtprio=99 \ ---name Racnoded1 oracle/database-rac:19.3.0 +--name racnoded1 oracle/database-rac:19.3.0 ``` -#### Create Racnoded2 with NFS Volume +#### Create racnoded2 with NFS Volume ```bash docker create -t -i \ ---hostname Racnoded2 \ +--hostname racnoded2 \ --volume /boot:/boot:ro \ --volume /dev/shm \ --volume /opt/.secrets:/run/secrets \ @@ -266,11 +266,11 @@ docker create -t -i \ --cap-add=SYS_RESOURCE \ --cap-add=NET_ADMIN \ -e NODE_VIP=172.16.1.161 \ --e VIP_HOSTNAME=Racnoded2-vip \ +-e VIP_HOSTNAME=racnoded2-vip \ -e PRIV_IP=192.168.17.151 \ --e PRIV_HOSTNAME=Racnoded2-priv \ +-e PRIV_HOSTNAME=racnoded2-priv \ -e PUBLIC_IP=172.16.1.151 \ --e PUBLIC_HOSTNAME=Racnoded2 \ +-e PUBLIC_HOSTNAME=racnoded2 \ -e SCAN_NAME="racnode-scan" \ -e SCAN_IP=172.16.1.70 \ -e COMMON_OS_PWD_FILE=common_os_pwdfile.enc \ @@ -278,14 +278,14 @@ docker create -t -i \ -e DEFAULT_GATEWAY=172.16.1.1 \ -e ASM_DEVICE_LIST=/oradata/asm_disk01.img,/oradata/asm_disk02.img,/oradata/asm_disk03.img,/oradata/asm_disk04.img,/oradata/asm_disk05.img \ -e ASM_DISCOVERY_DIR=/oradata \ --e CRS_NODES="Racnoded1,Racnoded2" \ +-e CRS_NODES="racnoded1,racnoded2" \ -e GRID_RESPONSE_FILE="grid_sample.rsp" \ -e DBCA_RESPONSE_FILE="dbca_sample.rsp" \ --restart=always \ --tmpfs=/run -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ --cpu-rt-runtime=95000 \ --ulimit rtprio=99 \ ---name Racnoded2 oracle/database-rac:19.3.0 +--name racnoded2 oracle/database-rac:19.3.0 ``` **Notes:** @@ -297,52 +297,52 @@ docker create -t -i \ You need to assign the Docker networks created in [section 1 of README.md](../../../OracleRealApplicationClusters/README.md) to containers. Please execute following commands: -#### Attach the network to Racnoded1 +#### Attach the network to racnoded1 ```bash -# docker network disconnect bridge Racnoded1 -# docker network connect rac_pub1_nw --ip 172.16.1.150 Racnoded1 -# docker network connect rac_priv1_nw --ip 192.168.17.150 Racnoded1 +# docker network disconnect bridge racnoded1 +# docker network connect rac_pub1_nw --ip 172.16.1.150 racnoded1 +# docker network connect rac_priv1_nw --ip 192.168.17.150 racnoded1 ``` -#### Attach the network to Racnoded2 +#### Attach the network to racnoded2 You need to assign the Docker networks created in section 1 to containers. Please execute following commands: ```bash -# docker network disconnect bridge Racnoded2 -# docker network connect rac_pub1_nw --ip 172.16.1.151 Racnoded2 -# docker network connect rac_priv1_nw --ip 192.168.17.151 Racnoded2 +# docker network disconnect bridge racnoded2 +# docker network connect rac_pub1_nw --ip 172.16.1.151 racnoded2 +# docker network connect rac_priv1_nw --ip 192.168.17.151 racnoded2 ``` ### Start the containers You need to start the container. Please execute following command: -#### Start Racnoded2 +#### Start racnoded2 ```bash -# docker start Racnoded2 +# docker start racnoded2 ``` #### Reset the password -Execute this step only on Racnoded2. +Execute this step only on racnoded2. ```bash -docker exec Racnoded2 /bin/bash -c "sudo /opt/scripts/startup/resetOSPassword.sh --op_type reset_grid_oracle --pwd_file common_os_pwdfile.enc --pwd_key_file pwd.key" +docker exec racnoded2 /bin/bash -c "sudo /opt/scripts/startup/resetOSPassword.sh --op_type reset_grid_oracle --pwd_file common_os_pwdfile.enc --pwd_key_file pwd.key" ``` -#### Start Racnoded1 +#### Start racnoded1 ```bash -# docker start Racnoded1 +# docker start racnoded1 ``` It can take at least 40 minutes or longer to create and setup 2 node RAC cluster. To check the logs, use following command from another terminal session: ```bash -# docker logs -f Racnoded1 +# docker logs -f racnoded1 ``` You should see database creation success message at the end: @@ -358,7 +358,7 @@ ORACLE RAC DATABASE IS READY TO USE! To connect to the container execute following command: ```bash -# docker exec -i -t Racnoded1 /bin/bash +# docker exec -i -t racnoded1 /bin/bash ``` If the install fails for any reason, log in to container using the above command and check `/tmp/orod.log`. You can also review the Grid Infrastructure logs located at `$GRID_BASE/diag/crs` and check for failure logs. If the failure occurred during the database creation then check the database logs. diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/README.md b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/README.md index a2593a8afb..c5204bbb94 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/README.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/README.md @@ -36,7 +36,7 @@ You can deploy multi node Oracle RAC Setup using Oracle RAC Image either on Bloc * Ensure the Oracle RAC Image is present. You can either pull ru image from the Oracle Container Registry by following [Building Oracle RAC Database Container Images](../../../README.md#getting-oracle-rac-database-container-images), or you can create the Oracle RAC Container Patched image by following [Building Oracle RAC Database Container Images](../../../README.md#building-a-patched-oracle-rac-container-image) ```bash # podman images|grep database-rac -localhost/oracle/database-rac 21c 41239091d2ac 16 minutes ago 20.2 GB +localhost/oracle/database-rac 23.26ai c717efbe4111 16 minutes ago 10 GB ``` * Execute the [Network](../../../README.md#network-management). * Execute the [Password Management](../../../README.md#password-management). @@ -61,7 +61,7 @@ export RACNODE1_PUBLIC_IP=10.0.20.170 export RACNODE1_CRS_PRIVATE_IP1=192.168.17.170 export RACNODE1_CRS_PRIVATE_IP2=192.168.18.170 export INSTALL_NODE=racnodep1 -export RAC_IMAGE_NAME=localhost/oracle/database-rac:21c +export RAC_IMAGE_NAME=localhost/oracle/database-rac:23.26ai export DEFAULT_GATEWAY="10.0.20.1" export CRS_NODES="\"pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip\"" export SCAN_NAME=racnodepc1-scan @@ -91,10 +91,10 @@ export DNS_PUBLIC_IP=10.0.20.25 export DNS_PRIVATE1_IP=192.168.17.25 export DNS_PRIVATE2_IP=192.168.18.25 export CMAN_CONTAINER_NAME=racnodepc1-cman -export CMAN_HOST_NAME=racnodepc1-cman +export CMAN_HOST_NAME=racnodepc1-cman1 export CMAN_IMAGE_NAME="localhost/oracle/client-cman:23.5.0" export CMAN_PUBLIC_IP=10.0.20.166 -export CMAN_PUBLIC_HOSTNAME="racnodepc1-cman" +export CMAN_PUBLIC_HOSTNAME="racnodepc1-cman1" export DB_HOSTDETAILS="HOST=racnodepc1-scan:RULE_ACT=accept,HOST=racnodep1:IP=10.0.20.170" export DB_SERVICE=service:soepdb ``` @@ -147,7 +147,7 @@ podman network connect ${PRIVATE2_NETWORK_NAME} --ip ${RACNODE2_CRS_PRIVATE_IP2} podman-compose start ${RACNODE1_CONTAINER_NAME} podman-compose start ${RACNODE2_CONTAINER_NAME} -podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` Successful Message when RAC container is setup properly- @@ -169,14 +169,14 @@ podman-compose logs -f ${CMAN_CONTAINER_NAME} #### Section 2.1.2: Setup Using User Defined Response files Make sure you completed pre-requisites step to install Podman Compose on required Podman Host Machines. -On the shared folder between both RAC nodes, copy file named [grid_setup_new_21c.rsp](withresponsefiles/nfsdevices/grid_setup_new_21c.rsp) to shared location e.g `/scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp`. You can skip this step if you are planing to not to use **User Defined Response Files for RAC**. +On the shared folder between both RAC nodes, copy file named [grid_setup_new_23.26ai.rsp](withresponsefiles/nfsdevices/grid_setup_new_23.26ai.rsp) to shared location e.g `/scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp`. You can skip this step if you are planing to not to use **User Defined Response Files for RAC**. If SELinux host is enable on machine then execute the following as well - ```bash -semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp -restorecon -v /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp -semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_21c.rsp -restorecon -v /scratch/common_scripts/podman/rac/dbca_21c.rsp +semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp +restorecon -v /scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp +semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp +restorecon -v /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp ``` Now, Export the required environment variables required by `podman-compose.yml` file - ```bash @@ -189,7 +189,7 @@ export RACNODE1_PUBLIC_IP=10.0.20.170 export RACNODE1_CRS_PRIVATE_IP1=192.168.17.170 export RACNODE1_CRS_PRIVATE_IP2=192.168.18.170 export INSTALL_NODE=racnodep1 -export RAC_IMAGE_NAME=localhost/oracle/database-rac:21c +export RAC_IMAGE_NAME=localhost/oracle/database-rac:23.26ai export DEFAULT_GATEWAY="10.0.20.1" export CRS_NODES="\"pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip\"" export SCAN_NAME=racnodepc1-scan @@ -223,7 +223,7 @@ export CMAN_IMAGE_NAME="localhost/oracle/client-cman:23.5.0" export CMAN_PUBLIC_IP=10.0.20.166 export CMAN_PUBLIC_HOSTNAME="racnodepc1-cman" export DB_HOSTDETAILS="HOST=racnodepc1-scan:RULE_ACT=accept,HOST=racnodep1:IP=10.0.20.170" -export GRID_RESPONSE_FILE="/scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp" +export GRID_RESPONSE_FILE="/scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp" export DB_SERVICE=service:soepdb ``` Create podman networks- @@ -278,7 +278,7 @@ podman network connect ${PRIVATE2_NETWORK_NAME} --ip ${RACNODE2_CRS_PRIVATE_IP2} podman-compose start ${RACNODE1_CONTAINER_NAME} podman-compose start ${RACNODE2_CONTAINER_NAME} -podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` Successful Message when RAC container is setup properly- @@ -322,7 +322,7 @@ export RACNODE1_PUBLIC_IP=10.0.20.170 export RACNODE1_CRS_PRIVATE_IP1=192.168.17.170 export RACNODE1_CRS_PRIVATE_IP2=192.168.18.170 export INSTALL_NODE=racnodep1 -export RAC_IMAGE_NAME=localhost/oracle/database-rac:21c +export RAC_IMAGE_NAME=localhost/oracle/database-rac:23.26ai export DEFAULT_GATEWAY="10.0.20.1" export CRS_NODES="\"pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip\"" export SCAN_NAME=racnodepc1-scan @@ -348,10 +348,10 @@ export DNS_PUBLIC_IP=10.0.20.25 export DNS_PRIVATE1_IP=192.168.17.25 export DNS_PRIVATE2_IP=192.168.18.25 export CMAN_CONTAINER_NAME=racnodepc1-cman -export CMAN_HOST_NAME=racnodepc1-cman +export CMAN_HOST_NAME=racnodepc1-cman1 export CMAN_IMAGE_NAME="localhost/oracle/client-cman:23.5.0" export CMAN_PUBLIC_IP=10.0.20.166 -export CMAN_PUBLIC_HOSTNAME="racnodepc1-cman" +export CMAN_PUBLIC_HOSTNAME="racnodepc1-cman1" export DB_HOSTDETAILS="HOST=racnodepc1-scan:RULE_ACT=accept,HOST=racnodep1:IP=10.0.20.170" export STORAGE_CONTAINER_NAME="racnode-storage" export STORAGE_HOST_NAME="racnode-storage" @@ -431,7 +431,7 @@ podman network connect ${PRIVATE2_NETWORK_NAME} --ip ${RACNODE2_CRS_PRIVATE_IP2} podman-compose start ${RACNODE1_CONTAINER_NAME} podman-compose start ${RACNODE2_CONTAINER_NAME} -podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` Successful Message when RAC container is setup properly- @@ -455,10 +455,10 @@ Make sure you completed pre-requisites step to install Podman Compose on require If SELinux is enabled in your host machine then execute the following as well - ```bash -semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp -restorecon -v /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp -semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_21c.rsp -restorecon -v /scratch/common_scripts/podman/rac/dbca_21c.rsp +semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp +restorecon -v /scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp +semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp +restorecon -v /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp ``` Create placeholder for NFS storage and make sure it is empty - @@ -468,13 +468,13 @@ mkdir -p /scratch/stage/rac-storage/$ORACLE_DBNAME rm -rf /scratch/stage/rac-storage/ORCLCDB/asm_disk0* ``` -On the shared folder between both RAC nodes, copy file name [grid_setup_new_21c.rsp](withresponsefiles/nfsdevices/grid_setup_new_21c.rsp) to shared location e.g `/scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp`. You can skip this step if you are planing to not to use **User Defined Response Files for RAC**. +On the shared folder between both RAC nodes, copy file name [grid_setup_new_23.26ai.rsp](withresponsefiles/nfsdevices/grid_setup_new_23.26ai.rsp) to shared location e.g `/scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp`. You can skip this step if you are planing to not to use **User Defined Response Files for RAC**. If SELinux host is enable on machine then execute the following as well - ```bash -semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp -restorecon -v /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp -semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_21c.rsp -restorecon -v /scratch/common_scripts/podman/rac/dbca_21c.rsp +semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp +restorecon -v /scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp +semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp +restorecon -v /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp ``` Now, Export the required environment variables required by `podman-compose.yml` file - ```bash @@ -487,7 +487,7 @@ export RACNODE1_PUBLIC_IP=10.0.20.170 export RACNODE1_CRS_PRIVATE_IP1=192.168.17.170 export RACNODE1_CRS_PRIVATE_IP2=192.168.18.170 export INSTALL_NODE=racnodep1 -export RAC_IMAGE_NAME=localhost/oracle/database-rac:21c +export RAC_IMAGE_NAME=localhost/oracle/database-rac:23.26ai export DEFAULT_GATEWAY="10.0.20.1" export CRS_NODES="\"pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip\"" export SCAN_NAME=racnodepc1-scan @@ -513,10 +513,10 @@ export DNS_PUBLIC_IP=10.0.20.25 export DNS_PRIVATE1_IP=192.168.17.25 export DNS_PRIVATE2_IP=192.168.18.25 export CMAN_CONTAINER_NAME=racnodepc1-cman -export CMAN_HOST_NAME=racnodepc1-cman +export CMAN_HOST_NAME=racnodepc1-cman1 export CMAN_IMAGE_NAME="localhost/oracle/client-cman:23.5.0" export CMAN_PUBLIC_IP=10.0.20.166 -export CMAN_PUBLIC_HOSTNAME="racnodepc1-cman" +export CMAN_PUBLIC_HOSTNAME="racnodepc1-cman1" export DB_HOSTDETAILS="HOST=racnodepc1-scan:RULE_ACT=accept,HOST=racnodep1:IP=10.0.20.170" export STORAGE_CONTAINER_NAME="racnode-storage" export STORAGE_HOST_NAME="racnode-storage" @@ -524,7 +524,7 @@ export STORAGE_IMAGE_NAME="localhost/oracle/rac-storage-server:latest" export ORACLE_DBNAME="ORCLCDB" export STORAGE_PUBLIC_IP=10.0.20.80 export NFS_STORAGE_VOLUME="/scratch/stage/rac-storage/$ORACLE_DBNAME" -export GRID_RESPONSE_FILE="/scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp" +export GRID_RESPONSE_FILE="/scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp" export DB_SERVICE=service:soepdb ``` @@ -600,7 +600,7 @@ podman network connect ${PRIVATE2_NETWORK_NAME} --ip ${RACNODE2_CRS_PRIVATE_IP2} podman-compose start ${RACNODE1_CONTAINER_NAME} podman-compose start ${RACNODE2_CONTAINER_NAME} -podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` Successful Message when RAC container is setup properly- @@ -637,7 +637,7 @@ export RACNODE3_PUBLIC_IP=10.0.20.172 export RACNODE3_CRS_PRIVATE_IP1=192.168.17.172 export RACNODE3_CRS_PRIVATE_IP2=192.168.18.172 export INSTALL_NODE=racnodep3 -export RAC_IMAGE_NAME=localhost/oracle/database-rac:21c +export RAC_IMAGE_NAME=localhost/oracle/database-rac:23.26ai export DEFAULT_GATEWAY="10.0.20.1" export CRS_NODES="\"pubhost:racnodep3,viphost:racnodep3-vip\"" export EXISTING_CLS_NODE="racnodep1,racnodep2" @@ -676,7 +676,7 @@ podman network connect ${PRIVATE1_NETWORK_NAME} --ip ${RACNODE3_CRS_PRIVATE_IP1} podman network connect ${PRIVATE2_NETWORK_NAME} --ip ${RACNODE3_CRS_PRIVATE_IP2} ${RACNODE3_CONTAINER_NAME} podman-compose start ${RACNODE3_CONTAINER_NAME} -podman exec ${RACNODE3_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec ${RACNODE3_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` Successful Message when RAC container is setup properly- @@ -703,7 +703,7 @@ export RACNODE3_PUBLIC_IP=10.0.20.172 export RACNODE3_CRS_PRIVATE_IP1=192.168.17.172 export RACNODE3_CRS_PRIVATE_IP2=192.168.18.172 export INSTALL_NODE=racnodep3 -export RAC_IMAGE_NAME=localhost/oracle/database-rac:21c +export RAC_IMAGE_NAME=localhost/oracle/database-rac:23.26ai export DEFAULT_GATEWAY="10.0.20.1" export CRS_NODES="\"pubhost:racnodep3,viphost:racnodep3-vip\"" export EXISTING_CLS_NODE="racnodep1,racnodep2" @@ -742,7 +742,7 @@ podman network connect ${PRIVATE1_NETWORK_NAME} --ip ${RACNODE3_CRS_PRIVATE_IP1} podman network connect ${PRIVATE2_NETWORK_NAME} --ip ${RACNODE3_CRS_PRIVATE_IP2} ${RACNODE3_CONTAINER_NAME} podman-compose start ${RACNODE3_CONTAINER_NAME} -podman exec ${RACNODE3_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec ${RACNODE3_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` Successful Message when RAC container is setup properly- @@ -760,8 +760,8 @@ You can validate if Oracle Container environment is healthy by running below com podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f1345fd4047b localhost/oracle/rac-dnsserver:latest /bin/sh -c exec $... 8 hours ago Up 8 hours (healthy) rac-dnsserver -2f42e49758d1 localhost/oracle/database-rac:21c 46 minutes ago Up 37 minutes (healthy) racnodep1 -a27fceea9fe6 localhost/oracle/database-rac:21c 46 minutes ago Up 37 minutes (healthy) racnodep2 +2f42e49758d1 localhost/oracle/database-rac:23.26ai 46 minutes ago Up 37 minutes (healthy) racnodep1 +a27fceea9fe6 localhost/oracle/database-rac:23.26ai 46 minutes ago Up 37 minutes (healthy) racnodep2 ``` Note: - Look for `(healthy)` next to container names under `STATUS` section. diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withoutresponsefiles/blockdevices/podman-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withoutresponsefiles/blockdevices/podman-compose.yml index 2d8646edb6..45a6d6a41c 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withoutresponsefiles/blockdevices/podman-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withoutresponsefiles/blockdevices/podman-compose.yml @@ -151,7 +151,7 @@ services: image: ${CMAN_IMAGE_NAME} dns_search: ${DNS_DOMAIN} dns: ${DNS_PUBLIC_IP} - environment: + environment: DOMAIN: ${DNS_DOMAIN} DNS_SERVER: ${DNS_PUBLIC_IP} PUBLIC_IP: ${CMAN_PUBLIC_IP} diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/blockdevices/grid_setup_new_21c.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/blockdevices/grid_setup_new_21c.rsp deleted file mode 100644 index c7ffe19d4a..0000000000 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/blockdevices/grid_setup_new_21c.rsp +++ /dev/null @@ -1,64 +0,0 @@ -oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v21.0.0 -INVENTORY_LOCATION=/u01/app/oraInventory -oracle.install.option=CRS_CONFIG -ORACLE_BASE=/u01/app/grid -oracle.install.asm.OSDBA=dba -oracle.install.asm.OSOPER= -oracle.install.asm.OSASM=asmadmin -oracle.install.crs.config.scanType=LOCAL_SCAN -oracle.install.crs.config.SCANClientDataFile= -oracle.install.crs.config.gpnp.scanName=racnodepc1-scan -oracle.install.crs.config.gpnp.scanPort=1521 -oracle.install.crs.config.ClusterConfiguration=STANDALONE -oracle.install.crs.config.configureAsExtendedCluster=false -oracle.install.crs.config.memberClusterManifestFile= -oracle.install.crs.config.clusterName=rac01cluster -oracle.install.crs.config.gpnp.configureGNS= -oracle.install.crs.config.autoConfigureClusterNodeVIP=false -oracle.install.crs.config.gpnp.gnsOption= -oracle.install.crs.config.gpnp.gnsClientDataFile= -oracle.install.crs.config.gpnp.gnsSubDomain= -oracle.install.crs.config.gpnp.gnsVIPAddress= -oracle.install.crs.config.sites= -oracle.install.crs.config.clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB -oracle.install.crs.config.networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 -oracle.install.asm.configureGIMRDataDG=false -oracle.install.crs.config.storageOption= -oracle.install.crs.config.useIPMI=false -oracle.install.crs.config.ipmi.bmcUsername= -oracle.install.crs.config.ipmi.bmcPassword= -oracle.install.asm.storageOption=ASM -oracle.install.asmOnNAS.ocrLocation= -oracle.install.asmOnNAS.configureGIMRDataDG=false -oracle.install.asmOnNAS.gimrLocation= -oracle.install.asm.SYSASMPassword=ORacle__21c -oracle.install.asm.diskGroup.name=DATA -oracle.install.asm.diskGroup.redundancy=EXTERNAL -oracle.install.asm.diskGroup.AUSize=4 -oracle.install.asm.diskGroup.FailureGroups= -oracle.install.asm.diskGroup.disksWithFailureGroupNames=/dev/asm-disk1,,/dev/asm-disk2, -oracle.install.asm.diskGroup.disks=/dev/asm-disk1,/dev/asm-disk2 -oracle.install.asm.diskGroup.quorumFailureGroupNames= -oracle.install.asm.diskGroup.diskDiscoveryString=/dev/asm* -oracle.install.asm.monitorPassword=ORacle__21c -oracle.install.asm.gimrDG.name= -oracle.install.asm.gimrDG.redundancy= -oracle.install.asm.gimrDG.AUSize=1 -oracle.install.asm.gimrDG.FailureGroups= -oracle.install.asm.gimrDG.disksWithFailureGroupNames= -oracle.install.asm.gimrDG.disks= -oracle.install.asm.gimrDG.quorumFailureGroupNames= -oracle.install.asm.configureAFD=false -oracle.install.crs.configureRHPS=false -oracle.install.crs.config.ignoreDownNodes=false -oracle.install.config.managementOption=NONE -oracle.install.config.omsHost= -oracle.install.config.omsPort=0 -oracle.install.config.emAdminUser= -oracle.install.config.emAdminPassword= -oracle.install.crs.rootconfig.executeRootScript=false -oracle.install.crs.rootconfig.configMethod=ROOT -oracle.install.crs.rootconfig.sudoPath= -oracle.install.crs.rootconfig.sudoUserName= -oracle.install.crs.config.batchinfo= -oracle.install.crs.deleteNode.nodes= \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/blockdevices/grid_setup_new_23.26ai.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/blockdevices/grid_setup_new_23.26ai.rsp new file mode 100644 index 0000000000..5c15376174 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/blockdevices/grid_setup_new_23.26ai.rsp @@ -0,0 +1,62 @@ +oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v23.0.0 +INVENTORY_LOCATION=/u01/app/oraInventory +installOption=CRS_CONFIG +ORACLE_BASE=/u01/app/grid +clusterUsage= +zeroDowntimeGIPatching= +skipDriverUpdate= +OSDBA=asmdba +OSOPER=asmoper +OSASM=asmadmin +scanType=LOCAL_SCAN +scanClientDataFile= +scanName=racnodepc1-scan +scanPort=1521 +configureAsExtendedCluster=false +clusterName=rac01cluster +configureGNS= +configureDHCPAssignedVIPs= +gnsSubDomain= +gnsVIPAddress= +sites= +clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB +networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 +storageOption=FLEX_ASM_STORAGE +votingFilesLocations= +ocrLocations= +clientDataFile= +useIPMI=false +bmcBinpath= +bmcUsername= +bmcPassword= +sysasmPassword=<< YOUR PASSWORD HERE >> +diskGroupName=DATA +redundancy=EXTERNAL +auSize=4 +failureGroups= +disksWithFailureGroupNames=/dev/asm-disk1,,/dev/asm-disk2, +diskList=/dev/asm-disk1,/dev/asm-disk2 +quorumFailureGroupNames= +diskString=/dev/asm* +asmsnmpPassword=<< YOUR PASSWORD HERE >> +ignoreDownNodes=false +configureBackupDG= +backupDGName= +backupDGRedundancy= +backupDGAUSize= +backupDGFailureGroups= +backupDGDisksWithFailureGroupNames= +backupDGDiskList= +backupDGQuorumFailureGroups= +managementOption=NONE +omsHost= +omsPort= +emAdminUser= +emAdminPassword= +executeRootScript=false +configMethod=ROOT +sudoPath= +sudoUserName= +batchInfo= +nodesToDelete= +enableAutoFixup= diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/blockdevices/podman-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/blockdevices/podman-compose.yml index c5492c7eff..124169b0b3 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/blockdevices/podman-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/blockdevices/podman-compose.yml @@ -47,7 +47,7 @@ services: - pwdsecret - keysecret volumes: - - ${GRID_RESPONSE_FILE}:/tmp/grid_21c.rsp + - ${GRID_RESPONSE_FILE}:/tmp/grid_23.26ai.rsp environment: DNS_SERVERS: ${DNS_PUBLIC_IP} CRS_PRIVATE_IP1: ${RACNODE1_CRS_PRIVATE_IP1} @@ -61,7 +61,7 @@ services: INIT_PGA_SIZE: 2G DB_PWD_FILE: pwdsecret PWD_KEY: keysecret - GRID_RESPONSE_FILE: /tmp/grid_21c.rsp + GRID_RESPONSE_FILE: /tmp/grid_23.26ai.rsp CMAN_HOST: ${CMAN_HOST_NAME} CMAN_PORT: 1521 DB_SERVICE: ${DB_SERVICE} @@ -105,7 +105,7 @@ services: - pwdsecret - keysecret volumes: - - ${GRID_RESPONSE_FILE}:/tmp/grid_21c.rsp + - ${GRID_RESPONSE_FILE}:/tmp/grid_23.26ai.rsp environment: DNS_SERVERS: ${DNS_PUBLIC_IP} CRS_PRIVATE_IP1: ${RACNODE2_CRS_PRIVATE_IP1} @@ -118,7 +118,7 @@ services: INIT_PGA_SIZE: 2G DB_PWD_FILE: pwdsecret PWD_KEY: keysecret - GRID_RESPONSE_FILE: /tmp/grid_21c.rsp + GRID_RESPONSE_FILE: /tmp/grid_23.26ai.rsp CMAN_HOST: ${CMAN_HOST_NAME} CMAN_PORT: 1521 DB_SERVICE: ${DB_SERVICE} @@ -157,8 +157,7 @@ services: dns_search: ${DNS_DOMAIN} dns: ${DNS_PUBLIC_IP} environment: - DOMAIN: ${DNS_DOMAIN} - DNS_SERVER: ${DNS_PUBLIC_IP} + DOMAIN_NAME: ${DNS_DOMAIN} PUBLIC_IP: ${CMAN_PUBLIC_IP} PUBLIC_HOSTNAME: ${CMAN_PUBLIC_HOSTNAME} DB_HOSTDETAILS: ${DB_HOSTDETAILS} diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/nfsdevices/grid_setup_new_21c.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/nfsdevices/grid_setup_new_21c.rsp deleted file mode 100644 index 16062dd6cb..0000000000 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/nfsdevices/grid_setup_new_21c.rsp +++ /dev/null @@ -1,64 +0,0 @@ -oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v21.0.0 -INVENTORY_LOCATION=/u01/app/oraInventory -oracle.install.option=CRS_CONFIG -ORACLE_BASE=/u01/app/grid -oracle.install.asm.OSDBA=dba -oracle.install.asm.OSOPER= -oracle.install.asm.OSASM=asmadmin -oracle.install.crs.config.scanType=LOCAL_SCAN -oracle.install.crs.config.SCANClientDataFile= -oracle.install.crs.config.gpnp.scanName=racnodepc1-scan -oracle.install.crs.config.gpnp.scanPort=1521 -oracle.install.crs.config.ClusterConfiguration=STANDALONE -oracle.install.crs.config.configureAsExtendedCluster=false -oracle.install.crs.config.memberClusterManifestFile= -oracle.install.crs.config.clusterName=rac01cluster -oracle.install.crs.config.gpnp.configureGNS= -oracle.install.crs.config.autoConfigureClusterNodeVIP=false -oracle.install.crs.config.gpnp.gnsOption= -oracle.install.crs.config.gpnp.gnsClientDataFile= -oracle.install.crs.config.gpnp.gnsSubDomain= -oracle.install.crs.config.gpnp.gnsVIPAddress= -oracle.install.crs.config.sites= -oracle.install.crs.config.clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB -oracle.install.crs.config.networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 -oracle.install.asm.configureGIMRDataDG=false -oracle.install.crs.config.storageOption= -oracle.install.crs.config.useIPMI=false -oracle.install.crs.config.ipmi.bmcUsername= -oracle.install.crs.config.ipmi.bmcPassword= -oracle.install.asm.storageOption=ASM -oracle.install.asmOnNAS.ocrLocation= -oracle.install.asmOnNAS.configureGIMRDataDG=false -oracle.install.asmOnNAS.gimrLocation= -oracle.install.asm.SYSASMPassword=ORacle__21c -oracle.install.asm.diskGroup.name=DATA -oracle.install.asm.diskGroup.redundancy=EXTERNAL -oracle.install.asm.diskGroup.AUSize=4 -oracle.install.asm.diskGroup.FailureGroups= -oracle.install.asm.diskGroup.disksWithFailureGroupNames=/oradata/asm_disk01.img,,/oradata/asm_disk02.img,,/oradata/asm_disk03.img,,/oradata/asm_disk04.img,,/oradata/asm_disk05.im -oracle.install.asm.diskGroup.disks=/oradata/asm_disk01.img,/oradata/asm_disk02.img,/oradata/asm_disk03.img,/oradata/asm_disk04.img,/oradata/asm_disk05.img -oracle.install.asm.diskGroup.quorumFailureGroupNames= -oracle.install.asm.diskGroup.diskDiscoveryString=/oradata/asm_disk* -oracle.install.asm.monitorPassword=ORacle__21c -oracle.install.asm.gimrDG.name= -oracle.install.asm.gimrDG.redundancy= -oracle.install.asm.gimrDG.AUSize=1 -oracle.install.asm.gimrDG.FailureGroups= -oracle.install.asm.gimrDG.disksWithFailureGroupNames= -oracle.install.asm.gimrDG.disks= -oracle.install.asm.gimrDG.quorumFailureGroupNames= -oracle.install.asm.configureAFD=false -oracle.install.crs.configureRHPS=false -oracle.install.crs.config.ignoreDownNodes=false -oracle.install.config.managementOption=NONE -oracle.install.config.omsHost= -oracle.install.config.omsPort=0 -oracle.install.config.emAdminUser= -oracle.install.config.emAdminPassword= -oracle.install.crs.rootconfig.executeRootScript=false -oracle.install.crs.rootconfig.configMethod=ROOT -oracle.install.crs.rootconfig.sudoPath= -oracle.install.crs.rootconfig.sudoUserName= -oracle.install.crs.config.batchinfo= -oracle.install.crs.deleteNode.nodes= \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/nfsdevices/grid_setup_new_23.26ai.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/nfsdevices/grid_setup_new_23.26ai.rsp new file mode 100644 index 0000000000..b3a93a947a --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/nfsdevices/grid_setup_new_23.26ai.rsp @@ -0,0 +1,62 @@ +oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v23.0.0 +INVENTORY_LOCATION=/u01/app/oraInventory +installOption=CRS_CONFIG +ORACLE_BASE=/u01/app/grid +clusterUsage= +zeroDowntimeGIPatching= +skipDriverUpdate= +OSDBA=asmdba +OSOPER=asmoper +OSASM=asmadmin +scanType=LOCAL_SCAN +scanClientDataFile= +scanName=racnodepc1-scan +scanPort=1521 +configureAsExtendedCluster=false +clusterName=rac01cluster +configureGNS= +configureDHCPAssignedVIPs= +gnsSubDomain= +gnsVIPAddress= +sites= +clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB +networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 +storageOption=FLEX_ASM_STORAGE +votingFilesLocations= +ocrLocations= +clientDataFile= +useIPMI= +bmcBinpath= +bmcUsername= +bmcPassword= +sysasmPassword=<< YOUR PASSWORD HERE >> +diskGroupName=DATA +redundancy=EXTERNAL +auSize=4 +failureGroups= +disksWithFailureGroupNames=/oradata/asm_disk01.img,,/oradata/asm_disk02.img,,/oradata/asm_disk03.img,,/oradata/asm_disk04.img,,/oradata/asm_disk05.img, +diskList=/oradata/asm_disk01.img,/oradata/asm_disk02.img,/oradata/asm_disk03.img,/oradata/asm_disk04.img,/oradata/asm_disk05.img +quorumFailureGroupNames= +diskString=/oradata/asm_disk* +asmsnmpPassword=<< YOUR PASSWORD HERE >> +ignoreDownNodes=false +configureBackupDG= +backupDGName= +backupDGRedundancy= +backupDGAUSize= +backupDGFailureGroups= +backupDGDisksWithFailureGroupNames= +backupDGDiskList= +backupDGQuorumFailureGroups= +managementOption=NONE +omsHost= +omsPort= +emAdminUser= +emAdminPassword= +executeRootScript=false +configMethod=ROOT +sudoPath= +sudoUserName= +batchInfo= +nodesToDelete= +enableAutoFixup= diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/nfsdevices/podman-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/nfsdevices/podman-compose.yml index c79d11e4ca..073ffb8544 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/nfsdevices/podman-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racimage/withresponsefiles/nfsdevices/podman-compose.yml @@ -73,7 +73,7 @@ services: - keysecret volumes: - racstorage:/oradata - - ${GRID_RESPONSE_FILE}:/tmp/grid_21c.rsp + - ${GRID_RESPONSE_FILE}:/tmp/grid_23.26ai.rsp environment: DNS_SERVERS: ${DNS_PUBLIC_IP} CRS_PRIVATE_IP1: ${RACNODE1_CRS_PRIVATE_IP1} @@ -130,7 +130,7 @@ services: - keysecret volumes: - racstorage:${CRS_ASM_DISCOVERY_STRING} - - ${GRID_RESPONSE_FILE}:/tmp/grid_21c.rsp + - ${GRID_RESPONSE_FILE}:/tmp/grid_23.26ai.rsp environment: DNS_SERVERS: ${DNS_PUBLIC_IP} CRS_PRIVATE_IP1: ${RACNODE2_CRS_PRIVATE_IP1} @@ -198,4 +198,4 @@ services: test: ["CMD-SHELL", "pgrep -f 'cmadmin'"] interval: ${HEALTHCHECK_INTERVAL} timeout: ${HEALTHCHECK_TIMEOUT} - retries: ${HEALTHCHECK_RETRIES} \ No newline at end of file + retries: ${HEALTHCHECK_RETRIES} diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/README.md b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/README.md index 390c45a2b4..41629c3506 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/README.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/README.md @@ -34,13 +34,8 @@ You can deploy multi node Oracle RAC Setup using Slim Image either on Block Devi * Make sure Oracle RAC Slim Image is present as shown below. If you have not created the Oracle RAC Container image, execute the [Section 2.1: Building Oracle RAC Database Slim Image](../../../README.md). ```bash # podman images|grep database-rac - localhost/oracle/database-rac 21.3.0-slim bf6ae21ccd5a 8 hours ago 517 MB + localhost/oracle/database-rac 23.26ai-slim 8280809e82c8 8 hours ago 518 MB ``` -Retag it as below as we are going to refer image as `localhost/oracle/database-rac:21c-slim` everywhere- -```bash -podman tag localhost/oracle/database-rac:21.3.0-slim localhost/oracle/database-rac:21c-slim -``` - * Execute the [Network](../../../README.md#network-management). * Execute the [Password Management](../../../README.md#password-management). * `podman-compose` is part of [ol8_developer_EPEL](https://yum.oracle.com/repo/OracleLinux/ol8/developer/EPEL/x86_64/index.html). Enable `ol8_developer_EPEL` repository and install `podman-compose` as below- @@ -57,10 +52,10 @@ podman tag localhost/oracle/database-rac:21.3.0-slim localhost/oracle/database-r rm -rf /scratch/rac/cluster01/node2/* ``` -* Make sure downloaded Oracle RAC software location is staged, & available for both RAC nodes. In below example, we have staged Oracle RAC software at location `/scratch/software/21c/goldimages` +* Make sure downloaded Oracle RAC software location is staged, & available for both RAC nodes. In below example, we have staged Oracle RAC software at location `/scratch/software/23.26ai/goldimages` ```bash - ls /scratch/software/21c/goldimages - LINUX.X64_213000_db_home.zip LINUX.X64_213000_grid_home.zip + ls /scratch/software/23.26ai/goldimages + LINUX.X64_260000_db_home.zip LINUX.X64_260000_grid_home.zip ``` * If SELinux is enabled on the host machine then execute the following as well - ```bash @@ -68,10 +63,10 @@ podman tag localhost/oracle/database-rac:21.3.0-slim localhost/oracle/database-r restorecon -v /scratch/rac/cluster01/node1 semanage fcontext -a -t container_file_t /scratch/rac/cluster01/node2 restorecon -v /scratch/rac/cluster01/node2 - semanage fcontext -a -t container_file_t /scratch/software/21c/goldimages/LINUX.X64_213000_grid_home.zip - restorecon -v /scratch/software/21c/goldimages/LINUX.X64_213000_grid_home.zip - semanage fcontext -a -t container_file_t /scratch/software/21c/goldimages/LINUX.X64_213000_db_home.zip - restorecon -v /scratch/software/21c/goldimages/LINUX.X64_213000_db_home.zip + semanage fcontext -a -t container_file_t /scratch/software/23.26ai/goldimages/LINUX.X64_260000_grid_home.zip + restorecon -v /scratch/software/23.26ai/goldimages/LINUX.X64_260000_grid_home.zip + semanage fcontext -a -t container_file_t /scratch/software/23.26ai/goldimages/LINUX.X64_260000_db_home.zip + restorecon -v /scratch/software/23.26ai/goldimages/LINUX.X64_260000_db_home.zip ``` In order to setup 2 Node RAC containers using Podman compose, please make sure pre-requisites are completed before proceeding further - @@ -93,7 +88,7 @@ export RACNODE1_PUBLIC_IP=10.0.20.170 export RACNODE1_CRS_PRIVATE_IP1=192.168.17.170 export RACNODE1_CRS_PRIVATE_IP2=192.168.18.170 export INSTALL_NODE=racnodep1 -export RAC_IMAGE_NAME=localhost/oracle/database-rac:21c-slim +export RAC_IMAGE_NAME=localhost/oracle/database-rac:23.26ai-slim export DEFAULT_GATEWAY="10.0.20.1" export CRS_NODES="\"pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip\"" export SCAN_NAME=racnodepc1-scan @@ -103,7 +98,7 @@ export CRS_ASM_DEVICE_LIST="${ASM_DEVICE1},${ASM_DEVICE2}" export ASM_DISK1="/dev/oracleoci/oraclevdd" export ASM_DISK2="/dev/oracleoci/oraclevde" export CRS_ASM_DISCOVERY_STRING="/dev/asm*" -export STAGING_SOFTWARE_LOC="/scratch/software/21c/goldimages/" +export STAGING_SOFTWARE_LOC="/scratch/software/23.26ai/goldimages/" export RACNODE2_CONTAINER_NAME=racnodep2 export RACNODE2_HOST_NAME=racnodep2 export RACNODE2_PUBLIC_IP=10.0.20.171 @@ -183,7 +178,7 @@ podman network connect ${PRIVATE2_NETWORK_NAME} --ip ${RACNODE2_CRS_PRIVATE_IP2} podman-compose start ${RACNODE1_CONTAINER_NAME} podman-compose start ${RACNODE2_CONTAINER_NAME} -podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` Successful Message when RAC container is setup properly- @@ -205,14 +200,14 @@ CONNECTION MANAGER IS READY TO USE! ################################################ ``` #### Section 2.1.2: Setup Using User Defined Response files -* On the shared folder between both RAC nodes, create file name `grid_setup_new_21c.rsp` similar as below inside directory named `/scratch/common_scripts/podman/rac/`. Same is also saved in this [grid_setup_new_21c.rsp](withresponsefiles/blockdevices/grid_setup_new_21c.rsp) file. -* Also, prepare database response file similar to this [dbca_21c.rsp](./dbca_21c.rsp). +* On the shared folder between both RAC nodes, create file name `grid_setup_new_23.26ai.rsp` similar as below inside directory named `/scratch/common_scripts/podman/rac/`. Same is also saved in this [grid_setup_new_23.26ai.rsp](withresponsefiles/blockdevices/grid_setup_new_23.26ai.rsp) file. +* Also, prepare database response file similar to this [dbca_23.26ai.rsp](./dbca_23.26ai.rsp). * If SELinux host is enable on machine then execute the following as well - ```bash - semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp - restorecon -v /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp - semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_21c.rsp - restorecon -v /scratch/common_scripts/podman/rac/dbca_21c.rsp + semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp + restorecon -v /scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp + semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp + restorecon -v /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp ``` You can skip this step if you are planing to not to use **User Defined Response Files for RAC**. @@ -227,8 +222,8 @@ export RACNODE1_PUBLIC_IP=10.0.20.170 export RACNODE1_CRS_PRIVATE_IP1=192.168.17.170 export RACNODE1_CRS_PRIVATE_IP2=192.168.18.170 export INSTALL_NODE=racnodep1 -export RAC_IMAGE_NAME=localhost/oracle/database-rac:21c-slim -export STAGING_SOFTWARE_LOC="/scratch/software/21c/goldimages/" +export RAC_IMAGE_NAME=localhost/oracle/database-rac:23.26ai-slim +export STAGING_SOFTWARE_LOC="/scratch/software/23.26ai/goldimages/" export DEFAULT_GATEWAY="10.0.20.1" export ASM_DEVICE1="/dev/asm-disk1" export ASM_DEVICE2="/dev/asm-disk2" @@ -258,8 +253,8 @@ export CMAN_IMAGE_NAME="localhost/oracle/client-cman:23.5.0" export CMAN_PUBLIC_IP=10.0.20.166 export CMAN_PUBLIC_HOSTNAME="racnodepc1-cman" export DB_HOSTDETAILS="HOST=racnodepc1-scan:RULE_ACT=accept,HOST=racnodep1:IP=10.0.20.170" -export GRID_RESPONSE_FILE="/scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp" -export DB_RESPONSE_FILE="/scratch/common_scripts/podman/rac/dbca_21c.rsp" +export GRID_RESPONSE_FILE="/scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp" +export DB_RESPONSE_FILE="/scratch/common_scripts/podman/rac/dbca_23.26ai.rsp" export PWD_SECRET_FILE=/opt/.secrets/pwdfile.enc export KEY_SECRET_FILE=/opt/.secrets/key.pem export DB_SERVICE=service:soepdb @@ -311,7 +306,7 @@ podman network connect ${PRIVATE2_NETWORK_NAME} --ip ${RACNODE2_CRS_PRIVATE_IP2} podman-compose start ${RACNODE1_CONTAINER_NAME} podman-compose start ${RACNODE2_CONTAINER_NAME} -podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` Successful Message when RAC container is setup properly- @@ -354,8 +349,8 @@ export RACNODE1_PUBLIC_IP=10.0.20.170 export RACNODE1_CRS_PRIVATE_IP1=192.168.17.170 export RACNODE1_CRS_PRIVATE_IP2=192.168.18.170 export INSTALL_NODE=racnodep1 -export RAC_IMAGE_NAME=localhost/oracle/database-rac:21c-slim -export STAGING_SOFTWARE_LOC="/scratch/software/21c/goldimages/" +export RAC_IMAGE_NAME=localhost/oracle/database-rac:23.26ai-slim +export STAGING_SOFTWARE_LOC="/scratch/software/23.26ai/goldimages/" export DEFAULT_GATEWAY="10.0.20.1" export CRS_NODES="\"pubhost:racnodep1,viphost:racnodep1-vip;pubhost:racnodep2,viphost:racnodep2-vip\"" export SCAN_NAME=racnodepc1-scan @@ -462,7 +457,7 @@ podman network connect ${PRIVATE2_NETWORK_NAME} --ip ${RACNODE2_CRS_PRIVATE_IP2} podman-compose start ${RACNODE1_CONTAINER_NAME} podman-compose start ${RACNODE2_CONTAINER_NAME} -podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` Successful Message when RAC container is setup properly- @@ -490,14 +485,14 @@ podman-compose logs -f ${CMAN_CONTAINER_NAME} mkdir -p /scratch/stage/rac-storage/$ORACLE_DBNAME rm -rf /scratch/stage/rac-storage/ORCLCDB/asm_disk0* ``` -* On the shared folder e.g `scratch/common_scripts/podman/rac` between both RAC nodes, copy file named [grid_setup_new_21c.rsp](withresponsefiles/nfsdevices/grid_setup_new_21c.rsp) -* Also copy, [dbca_21c.rsp](./dbca_21c.rsp) in `scratch/common_scripts/podman/rac`. +* On the shared folder e.g `scratch/common_scripts/podman/rac` between both RAC nodes, copy file named [grid_setup_new_23.26ai.rsp](withresponsefiles/nfsdevices/grid_setup_new_23.26ai.rsp) +* Also copy, [dbca_23.26ai.rsp](./dbca_23.26ai.rsp) in `scratch/common_scripts/podman/rac`. * If SELinux host is enable on machine then execute the following as well - ```bash - semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp - restorecon -v /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp - semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_21c.rsp - restorecon -v /scratch/common_scripts/podman/rac/dbca_21c.rsp + semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp + restorecon -v /scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp + semanage fcontext -a -t container_file_t /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp + restorecon -v /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp ``` You can skip this step if you are planing to not to use **User Defined Response Files for RAC**. @@ -513,8 +508,8 @@ export RACNODE1_PUBLIC_IP=10.0.20.170 export RACNODE1_CRS_PRIVATE_IP1=192.168.17.170 export RACNODE1_CRS_PRIVATE_IP2=192.168.18.170 export INSTALL_NODE=racnodep1 -export RAC_IMAGE_NAME=localhost/oracle/database-rac:21c-slim -export STAGING_SOFTWARE_LOC="/scratch/software/21c/goldimages/" +export RAC_IMAGE_NAME=localhost/oracle/database-rac:23.26ai-slim +export STAGING_SOFTWARE_LOC="/scratch/software/23.26ai/goldimages/" export DEFAULT_GATEWAY="10.0.20.1" export SCAN_NAME=racnodepc1-scan export RACNODE2_CONTAINER_NAME=racnodep2 @@ -546,8 +541,8 @@ export STORAGE_IMAGE_NAME="localhost/oracle/rac-storage-server:latest" export ORACLE_DBNAME="ORCLCDB" export STORAGE_PUBLIC_IP=10.0.20.80 export NFS_STORAGE_VOLUME="/scratch/stage/rac-storage/$ORACLE_DBNAME" -export GRID_RESPONSE_FILE="/scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp" -export DB_RESPONSE_FILE="/scratch/common_scripts/podman/rac/dbca_21c.rsp" +export GRID_RESPONSE_FILE="/scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp" +export DB_RESPONSE_FILE="/scratch/common_scripts/podman/rac/dbca_23.26ai.rsp" export PWD_SECRET_FILE=/opt/.secrets/pwdfile.enc export KEY_SECRET_FILE=/opt/.secrets/key.pem export DB_SERVICE=service:soepdb @@ -629,7 +624,7 @@ podman network connect ${PRIVATE2_NETWORK_NAME} --ip ${RACNODE2_CRS_PRIVATE_IP2} podman-compose start ${RACNODE1_CONTAINER_NAME} podman-compose start ${RACNODE2_CONTAINER_NAME} -podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec ${RACNODE1_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` Successful Message when RAC container is setup properly- @@ -676,7 +671,7 @@ export RACNODE3_HOST_NAME=racnodep3 export RACNODE3_PUBLIC_IP=10.0.20.172 export RACNODE3_CRS_PRIVATE_IP1=192.168.17.172 export RACNODE3_CRS_PRIVATE_IP2=192.168.18.172 -export RAC_IMAGE_NAME=localhost/oracle/database-rac:21c-slim +export RAC_IMAGE_NAME=localhost/oracle/database-rac:23.26ai-slim export DEFAULT_GATEWAY="10.0.20.1" export CRS_NODES=pubhost:racnodep3,viphost:racnodep3-vip export SCAN_NAME=racnodepc1-scan @@ -685,7 +680,7 @@ export ASM_DEVICE2="/dev/asm-disk2" export CRS_ASM_DEVICE_LIST="${ASM_DEVICE1},${ASM_DEVICE2}" export ASM_DISK1="/dev/oracleoci/oraclevdd" export ASM_DISK2="/dev/oracleoci/oraclevde" -export STAGING_SOFTWARE_LOC="/scratch/software/21c/goldimages/" +export STAGING_SOFTWARE_LOC="/scratch/software/23.26ai/goldimages/" export DNS_DOMAIN=example.info export PUBLIC_NETWORK_NAME="rac_pub1_nw" export PRIVATE1_NETWORK_NAME="rac_priv1_nw" @@ -713,7 +708,7 @@ podman network connect ${PRIVATE1_NETWORK_NAME} --ip ${RACNODE3_CRS_PRIVATE_IP1} podman network connect ${PRIVATE2_NETWORK_NAME} --ip ${RACNODE3_CRS_PRIVATE_IP2} ${RACNODE3_CONTAINER_NAME} podman-compose start ${RACNODE3_CONTAINER_NAME} -podman exec ${RACNODE3_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec ${RACNODE3_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` Successful Message when RAC container is setup properly- @@ -740,7 +735,7 @@ export RACNODE3_PUBLIC_IP=10.0.20.172 export RACNODE3_CRS_PRIVATE_IP1=192.168.17.172 export RACNODE3_CRS_PRIVATE_IP2=192.168.18.172 export INSTALL_NODE=racnodep3 -export RAC_IMAGE_NAME=localhost/oracle/database-rac:21c-slim +export RAC_IMAGE_NAME=localhost/oracle/database-rac:23.26ai-slim export DEFAULT_GATEWAY="10.0.20.1" export CRS_NODES="\"pubhost:racnodep3,viphost:racnodep3-vip\"" export EXISTING_CLS_NODE="racnodep1,racnodep2" @@ -751,7 +746,7 @@ export DNS_CONTAINER_NAME=rac-dnsserver export DNS_HOST_NAME=racdns export DNS_IMAGE_NAME="oracle/rac-dnsserver:latest" export RAC_NODE_NAME_PREFIXP="racnodep" -export STAGING_SOFTWARE_LOC="/scratch/software/21c/goldimages/" +export STAGING_SOFTWARE_LOC="/scratch/software/23.26ai/goldimages/" export DNS_DOMAIN=example.info export PUBLIC_NETWORK_NAME="rac_pub1_nw" export PUBLIC_NETWORK_SUBNET="10.0.20.0/24" @@ -782,7 +777,7 @@ podman network connect ${PRIVATE1_NETWORK_NAME} --ip ${RACNODE3_CRS_PRIVATE_IP1} podman network connect ${PRIVATE2_NETWORK_NAME} --ip ${RACNODE3_CRS_PRIVATE_IP2} ${RACNODE3_CONTAINER_NAME} podman-compose start ${RACNODE3_CONTAINER_NAME} -podman exec ${RACNODE3_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_rac_setup.log" +podman exec ${RACNODE3_CONTAINER_NAME} /bin/bash -c "tail -f /tmp/orod/oracle_db_setup.log" ``` Successful Message when RAC container is setup properly- @@ -801,10 +796,10 @@ You can validate if environment is healthy by running below command- ```bash podman ps -a -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -f1345fd4047b localhost/oracle/rac-dnsserver:latest /bin/sh -c exec $... 8 hours ago Up 8 hours (healthy) rac-dnsserver -2f42e49758d1 localhost/oracle/database-rac:21c-slim 46 minutes ago Up 37 minutes (healthy) racnodep1 -a27fceea9fe6 localhost/oracle/database-rac:21c-slim 46 minutes ago Up 37 minutes (healthy) racnodep2 +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +f1345fd4047b localhost/oracle/rac-dnsserver:latest /bin/sh -c exec $... 8 hours ago Up 8 hours (healthy) rac-dnsserver +2f42e49758d1 localhost/oracle/database-rac:23.26ai-slim 46 minutes ago Up 37 minutes (healthy) racnodep1 +a27fceea9fe6 localhost/oracle/database-rac:23.26ai-slim 46 minutes ago Up 37 minutes (healthy) racnodep2 ``` Note: - Look for `(healthy)` next to container names under `STATUS` section. diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/dbca_23.26ai.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/dbca_23.26ai.rsp new file mode 100644 index 0000000000..fe21b49dfa --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/dbca_23.26ai.rsp @@ -0,0 +1,58 @@ +responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v23.0.0 +gdbName=ORCLCDB +sid=ORCLCDB +databaseConfigType=RAC +RACOneNodeServiceName= +policyManaged=false +managementPolicy= +createServerPool=false +serverPoolName= +cardinality= +force=false +pqPoolName= +pqCardinality= +createAsContainerDatabase=true +numberOfPDBs=1 +pdbName=ORCLPDB +useLocalUndoForPDBs=true +pdbAdminPassword=<< YOUR PASSWORD HERE >> +nodelist=racnodep1,racnodep2 +templateName={ORACLE_HOME}/assistants/dbca/templates/General_Purpose.dbc +sysPassword=<< YOUR PASSWORD HERE >> +systemPassword=<< YOUR PASSWORD HERE >> +oracleHomeUserPassword= +emConfiguration= +runCVUChecks=true +dbsnmpPassword=<< YOUR PASSWORD HERE >> +omsHost= +omsPort= +emUser= +emPassword= +dvConfiguration=false +dvUserName= +dvUserPassword= +dvAccountManagerName= +dvAccountManagerPassword= +olsConfiguration=false +datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates/ +datafileDestination=+DATA/{DB_UNIQUE_NAME}/ +recoveryAreaDestination= +storageType=ASM +diskGroupName=+DATA/{DB_UNIQUE_NAME}/ +asmsnmpPassword= +recoveryGroupName= +characterSet=AL32UTF8 +nationalCharacterSet=AL16UTF16 +registerWithDirService= +dirServiceUserName= +dirServicePassword= +walletPassword= +listeners=LISTENER +variablesFile= +variables=DB_UNIQUE_NAME=ORCLCDB,ORACLE_BASE=/u01/app/oracle,PDB_NAME=ORCLPDB,DB_NAME=ORCLCDB,ORACLE_HOME=/u01/app/oracle/product/26ai/dbhome_1,SID=ORCLCDB +initParams=audit_trail=none,audit_sys_operations=false,remote_login_passwordfile=exclusive +sampleSchema=false +memoryPercentage=40 +databaseType=MULTIPURPOSE +automaticMemoryManagement=false +totalMemory=5000 diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/blockdevices/addition/podman-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/blockdevices/addition/podman-compose.yml index 8af9e406f8..1e68b9700a 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/blockdevices/addition/podman-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/blockdevices/addition/podman-compose.yml @@ -45,14 +45,14 @@ services: CRS_ASM_DISCOVERY_DIR: ${CRS_ASM_DISCOVERY_DIR} INIT_SGA_SIZE: 3G INIT_PGA_SIZE: 2G - GRID_HOME: /u01/app/21c/grid + GRID_HOME: /u01/app/26ai/grid GRID_BASE: /u01/app/grid - DB_HOME: /u01/app/oracle/product/21c/dbhome_1 + DB_HOME: /u01/app/oracle/product/26ai/dbhome_1 DB_BASE: /u01/app/oracle INVENTORY: /u01/app/oraInventory STAGING_SOFTWARE_LOC: ${STAGING_SOFTWARE_LOC} - GRID_SW_ZIP_FILE: LINUX.X64_213000_grid_home.zip - DB_SW_ZIP_FILE: LINUX.X64_213000_db_home.zip + GRID_SW_ZIP_FILE: LINUX.X64_260000_grid_home.zip + DB_SW_ZIP_FILE: LINUX.X64_260000_db_home.zip DB_NAME: ORCLCDB CMAN_HOST: ${CMAN_HOST_NAME} CMAN_PORT: 1521 diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/blockdevices/podman-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/blockdevices/podman-compose.yml index 8f940ed41c..fe85d2204c 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/blockdevices/podman-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/blockdevices/podman-compose.yml @@ -60,14 +60,14 @@ services: CRS_ASM_DEVICE_LIST: ${CRS_ASM_DEVICE_LIST} INIT_SGA_SIZE: 3G INIT_PGA_SIZE: 2G - GRID_HOME: /u01/app/21c/grid + GRID_HOME: /u01/app/26ai/grid GRID_BASE: /u01/app/grid - DB_HOME: /u01/app/oracle/product/21c/dbhome_1 + DB_HOME: /u01/app/oracle/product/26ai/dbhome_1 DB_BASE: /u01/app/oracle INVENTORY: /u01/app/oraInventory STAGING_SOFTWARE_LOC: ${STAGING_SOFTWARE_LOC} - GRID_SW_ZIP_FILE: LINUX.X64_213000_grid_home.zip - DB_SW_ZIP_FILE: LINUX.X64_213000_db_home.zip + GRID_SW_ZIP_FILE: LINUX.X64_260000_grid_home.zip + DB_SW_ZIP_FILE: LINUX.X64_260000_db_home.zip DB_NAME: ORCLCDB DB_PWD_FILE: pwdsecret PWD_KEY: keysecret @@ -127,14 +127,14 @@ services: CRS_ASM_DEVICE_LIST: ${CRS_ASM_DEVICE_LIST} INIT_SGA_SIZE: 3G INIT_PGA_SIZE: 2G - GRID_HOME: /u01/app/21c/grid + GRID_HOME: /u01/app/26ai/grid GRID_BASE: /u01/app/grid - DB_HOME: /u01/app/oracle/product/21c/dbhome_1 + DB_HOME: /u01/app/oracle/product/26ai/dbhome_1 DB_BASE: /u01/app/oracle INVENTORY: /u01/app/oraInventory STAGING_SOFTWARE_LOC: ${STAGING_SOFTWARE_LOC} - GRID_SW_ZIP_FILE: LINUX.X64_213000_grid_home.zip - DB_SW_ZIP_FILE: LINUX.X64_213000_db_home.zip + GRID_SW_ZIP_FILE: LINUX.X64_260000_grid_home.zip + DB_SW_ZIP_FILE: LINUX.X64_260000_db_home.zip DB_NAME: ORCLCDB DB_PWD_FILE: pwdsecret PWD_KEY: keysecret @@ -176,7 +176,8 @@ services: dns_search: ${DNS_DOMAIN} dns: ${DNS_PUBLIC_IP} environment: - DOMAIN_NAME: ${DNS_DOMAIN} + DOMAIN: ${DNS_DOMAIN} + DNS_SERVER: ${DNS_PUBLIC_IP} PUBLIC_IP: ${CMAN_PUBLIC_IP} PUBLIC_HOSTNAME: ${CMAN_PUBLIC_HOSTNAME} DB_HOSTDETAILS: ${DB_HOSTDETAILS} diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/nfsdevices/addition/podman-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/nfsdevices/addition/podman-compose.yml index c6227aa8d3..f866c3466e 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/nfsdevices/addition/podman-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/nfsdevices/addition/podman-compose.yml @@ -49,14 +49,14 @@ services: CRS_ASM_DISCOVERY_DIR: ${CRS_ASM_DISCOVERY_DIR} INIT_SGA_SIZE: 3G INIT_PGA_SIZE: 2G - GRID_HOME: /u01/app/21c/grid + GRID_HOME: /u01/app/26ai/grid GRID_BASE: /u01/app/grid - DB_HOME: /u01/app/oracle/product/21c/dbhome_1 + DB_HOME: /u01/app/oracle/product/26ai/dbhome_1 DB_BASE: /u01/app/oracle INVENTORY: /u01/app/oraInventory STAGING_SOFTWARE_LOC: ${STAGING_SOFTWARE_LOC} - GRID_SW_ZIP_FILE: LINUX.X64_213000_grid_home.zip - DB_SW_ZIP_FILE: LINUX.X64_213000_db_home.zip + GRID_SW_ZIP_FILE: LINUX.X64_260000_grid_home.zip + DB_SW_ZIP_FILE: LINUX.X64_260000_db_home.zip DB_NAME: ORCLCDB CMAN_HOST: ${CMAN_HOST_NAME} CMAN_PORT: 1521 diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/nfsdevices/podman-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/nfsdevices/podman-compose.yml index 5950c162da..f248748ade 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/nfsdevices/podman-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withoutresponsefiles/nfsdevices/podman-compose.yml @@ -87,14 +87,14 @@ services: CRS_ASM_DISCOVERY_STRING: "/oradata" INIT_SGA_SIZE: 3G INIT_PGA_SIZE: 2G - GRID_HOME: /u01/app/21c/grid + GRID_HOME: /u01/app/26ai/grid GRID_BASE: /u01/app/grid - DB_HOME: /u01/app/oracle/product/21c/dbhome_1 + DB_HOME: /u01/app/oracle/product/26ai/dbhome_1 DB_BASE: /u01/app/oracle INVENTORY: /u01/app/oraInventory STAGING_SOFTWARE_LOC: ${STAGING_SOFTWARE_LOC} - GRID_SW_ZIP_FILE: LINUX.X64_213000_grid_home.zip - DB_SW_ZIP_FILE: LINUX.X64_213000_db_home.zip + GRID_SW_ZIP_FILE: LINUX.X64_260000_grid_home.zip + DB_SW_ZIP_FILE: LINUX.X64_260000_db_home.zip DB_NAME: ORCLCDB DB_PWD_FILE: pwdsecret PWD_KEY: keysecret @@ -154,14 +154,14 @@ services: CRS_ASM_DISCOVERY_STRING: "/oradata" INIT_SGA_SIZE: 3G INIT_PGA_SIZE: 2G - GRID_HOME: /u01/app/21c/grid + GRID_HOME: /u01/app/26ai/grid GRID_BASE: /u01/app/grid - DB_HOME: /u01/app/oracle/product/21c/dbhome_1 + DB_HOME: /u01/app/oracle/product/26ai/dbhome_1 DB_BASE: /u01/app/oracle INVENTORY: /u01/app/oraInventory STAGING_SOFTWARE_LOC: ${STAGING_SOFTWARE_LOC} - GRID_SW_ZIP_FILE: LINUX.X64_213000_grid_home.zip - DB_SW_ZIP_FILE: LINUX.X64_213000_db_home.zip + GRID_SW_ZIP_FILE: LINUX.X64_260000_grid_home.zip + DB_SW_ZIP_FILE: LINUX.X64_260000_db_home.zip DB_NAME: ORCLCDB DB_PWD_FILE: pwdsecret PWD_KEY: keysecret @@ -201,7 +201,8 @@ services: dns_search: ${DNS_DOMAIN} dns: ${DNS_PUBLIC_IP} environment: - DOMAIN_NAME: ${DNS_DOMAIN} + DOMAIN: ${DNS_DOMAIN} + DNS_SERVER: ${DNS_PUBLIC_IP} PUBLIC_IP: ${CMAN_PUBLIC_IP} PUBLIC_HOSTNAME: ${CMAN_PUBLIC_HOSTNAME} DB_HOSTDETAILS: ${DB_HOSTDETAILS} diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/blockdevices/grid_setup_new_21c.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/blockdevices/grid_setup_new_21c.rsp deleted file mode 100644 index c7ffe19d4a..0000000000 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/blockdevices/grid_setup_new_21c.rsp +++ /dev/null @@ -1,64 +0,0 @@ -oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v21.0.0 -INVENTORY_LOCATION=/u01/app/oraInventory -oracle.install.option=CRS_CONFIG -ORACLE_BASE=/u01/app/grid -oracle.install.asm.OSDBA=dba -oracle.install.asm.OSOPER= -oracle.install.asm.OSASM=asmadmin -oracle.install.crs.config.scanType=LOCAL_SCAN -oracle.install.crs.config.SCANClientDataFile= -oracle.install.crs.config.gpnp.scanName=racnodepc1-scan -oracle.install.crs.config.gpnp.scanPort=1521 -oracle.install.crs.config.ClusterConfiguration=STANDALONE -oracle.install.crs.config.configureAsExtendedCluster=false -oracle.install.crs.config.memberClusterManifestFile= -oracle.install.crs.config.clusterName=rac01cluster -oracle.install.crs.config.gpnp.configureGNS= -oracle.install.crs.config.autoConfigureClusterNodeVIP=false -oracle.install.crs.config.gpnp.gnsOption= -oracle.install.crs.config.gpnp.gnsClientDataFile= -oracle.install.crs.config.gpnp.gnsSubDomain= -oracle.install.crs.config.gpnp.gnsVIPAddress= -oracle.install.crs.config.sites= -oracle.install.crs.config.clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB -oracle.install.crs.config.networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 -oracle.install.asm.configureGIMRDataDG=false -oracle.install.crs.config.storageOption= -oracle.install.crs.config.useIPMI=false -oracle.install.crs.config.ipmi.bmcUsername= -oracle.install.crs.config.ipmi.bmcPassword= -oracle.install.asm.storageOption=ASM -oracle.install.asmOnNAS.ocrLocation= -oracle.install.asmOnNAS.configureGIMRDataDG=false -oracle.install.asmOnNAS.gimrLocation= -oracle.install.asm.SYSASMPassword=ORacle__21c -oracle.install.asm.diskGroup.name=DATA -oracle.install.asm.diskGroup.redundancy=EXTERNAL -oracle.install.asm.diskGroup.AUSize=4 -oracle.install.asm.diskGroup.FailureGroups= -oracle.install.asm.diskGroup.disksWithFailureGroupNames=/dev/asm-disk1,,/dev/asm-disk2, -oracle.install.asm.diskGroup.disks=/dev/asm-disk1,/dev/asm-disk2 -oracle.install.asm.diskGroup.quorumFailureGroupNames= -oracle.install.asm.diskGroup.diskDiscoveryString=/dev/asm* -oracle.install.asm.monitorPassword=ORacle__21c -oracle.install.asm.gimrDG.name= -oracle.install.asm.gimrDG.redundancy= -oracle.install.asm.gimrDG.AUSize=1 -oracle.install.asm.gimrDG.FailureGroups= -oracle.install.asm.gimrDG.disksWithFailureGroupNames= -oracle.install.asm.gimrDG.disks= -oracle.install.asm.gimrDG.quorumFailureGroupNames= -oracle.install.asm.configureAFD=false -oracle.install.crs.configureRHPS=false -oracle.install.crs.config.ignoreDownNodes=false -oracle.install.config.managementOption=NONE -oracle.install.config.omsHost= -oracle.install.config.omsPort=0 -oracle.install.config.emAdminUser= -oracle.install.config.emAdminPassword= -oracle.install.crs.rootconfig.executeRootScript=false -oracle.install.crs.rootconfig.configMethod=ROOT -oracle.install.crs.rootconfig.sudoPath= -oracle.install.crs.rootconfig.sudoUserName= -oracle.install.crs.config.batchinfo= -oracle.install.crs.deleteNode.nodes= \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/blockdevices/grid_setup_new_23.26ai.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/blockdevices/grid_setup_new_23.26ai.rsp new file mode 100644 index 0000000000..5c15376174 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/blockdevices/grid_setup_new_23.26ai.rsp @@ -0,0 +1,62 @@ +oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v23.0.0 +INVENTORY_LOCATION=/u01/app/oraInventory +installOption=CRS_CONFIG +ORACLE_BASE=/u01/app/grid +clusterUsage= +zeroDowntimeGIPatching= +skipDriverUpdate= +OSDBA=asmdba +OSOPER=asmoper +OSASM=asmadmin +scanType=LOCAL_SCAN +scanClientDataFile= +scanName=racnodepc1-scan +scanPort=1521 +configureAsExtendedCluster=false +clusterName=rac01cluster +configureGNS= +configureDHCPAssignedVIPs= +gnsSubDomain= +gnsVIPAddress= +sites= +clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB +networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 +storageOption=FLEX_ASM_STORAGE +votingFilesLocations= +ocrLocations= +clientDataFile= +useIPMI=false +bmcBinpath= +bmcUsername= +bmcPassword= +sysasmPassword=<< YOUR PASSWORD HERE >> +diskGroupName=DATA +redundancy=EXTERNAL +auSize=4 +failureGroups= +disksWithFailureGroupNames=/dev/asm-disk1,,/dev/asm-disk2, +diskList=/dev/asm-disk1,/dev/asm-disk2 +quorumFailureGroupNames= +diskString=/dev/asm* +asmsnmpPassword=<< YOUR PASSWORD HERE >> +ignoreDownNodes=false +configureBackupDG= +backupDGName= +backupDGRedundancy= +backupDGAUSize= +backupDGFailureGroups= +backupDGDisksWithFailureGroupNames= +backupDGDiskList= +backupDGQuorumFailureGroups= +managementOption=NONE +omsHost= +omsPort= +emAdminUser= +emAdminPassword= +executeRootScript=false +configMethod=ROOT +sudoPath= +sudoUserName= +batchInfo= +nodesToDelete= +enableAutoFixup= diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/blockdevices/podman-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/blockdevices/podman-compose.yml index faa789737e..dc4dd94d3b 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/blockdevices/podman-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/blockdevices/podman-compose.yml @@ -49,8 +49,8 @@ services: volumes: - /scratch/rac/cluster01/node1:/u01 - /scratch:/scratch - - /scratch/common_scripts/podman/rac/dbca_21c.rsp:/tmp/dbca_21c.rsp - - /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp:/tmp/grid_21c.rsp + - /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp:/tmp/dbca_23.26ai.rsp + - /scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp:/tmp/grid_23.26ai.rsp environment: DNS_SERVERS: ${DNS_PUBLIC_IP} CRS_PRIVATE_IP1: ${RACNODE1_CRS_PRIVATE_IP1} @@ -60,12 +60,12 @@ services: SCAN_NAME: ${SCAN_NAME} INIT_SGA_SIZE: 3G INIT_PGA_SIZE: 2G - GRID_HOME: /u01/app/21c/grid + GRID_HOME: /u01/app/26ai/grid STAGING_SOFTWARE_LOC: ${STAGING_SOFTWARE_LOC} - GRID_SW_ZIP_FILE: LINUX.X64_213000_grid_home.zip - DB_SW_ZIP_FILE: LINUX.X64_213000_db_home.zip - GRID_RESPONSE_FILE: /tmp/grid_21c.rsp - DBCA_RESPONSE_FILE: /tmp/dbca_21c.rsp + GRID_SW_ZIP_FILE: LINUX.X64_260000_grid_home.zip + DB_SW_ZIP_FILE: LINUX.X64_260000_db_home.zip + GRID_RESPONSE_FILE: /tmp/grid_23.26ai.rsp + DBCA_RESPONSE_FILE: /tmp/dbca_23.26ai.rsp DB_PWD_FILE: pwdsecret PWD_KEY: keysecret CMAN_HOST: ${CMAN_HOST_NAME} @@ -113,8 +113,8 @@ services: volumes: - /scratch/rac/cluster01/node2:/u01 - /scratch:/scratch - - /scratch/common_scripts/podman/rac/dbca_21c.rsp:/tmp/dbca_21c.rsp - - /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp:/tmp/grid_21c.rsp + - /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp:/tmp/dbca_23.26ai.rsp + - /scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp:/tmp/grid_23.26ai.rsp environment: DNS_SERVERS: ${DNS_PUBLIC_IP} CRS_PRIVATE_IP1: ${RACNODE2_CRS_PRIVATE_IP1} @@ -124,12 +124,12 @@ services: SCAN_NAME: ${SCAN_NAME} INIT_SGA_SIZE: 3G INIT_PGA_SIZE: 2G - GRID_HOME: /u01/app/21c/grid + GRID_HOME: /u01/app/26ai/grid STAGING_SOFTWARE_LOC: ${STAGING_SOFTWARE_LOC} - GRID_SW_ZIP_FILE: LINUX.X64_213000_grid_home.zip - DB_SW_ZIP_FILE: LINUX.X64_213000_db_home.zip - GRID_RESPONSE_FILE: /tmp/grid_21c.rsp - DBCA_RESPONSE_FILE: /tmp/dbca_21c.rsp + GRID_SW_ZIP_FILE: LINUX.X64_260000_grid_home.zip + DB_SW_ZIP_FILE: LINUX.X64_260000_db_home.zip + GRID_RESPONSE_FILE: /tmp/grid_23.26ai.rsp + DBCA_RESPONSE_FILE: /tmp/dbca_23.26ai.rsp DB_PWD_FILE: pwdsecret PWD_KEY: keysecret CMAN_HOST: ${CMAN_HOST_NAME} diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/nfsdevices/grid_setup_new_21c.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/nfsdevices/grid_setup_new_21c.rsp deleted file mode 100644 index 16062dd6cb..0000000000 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/nfsdevices/grid_setup_new_21c.rsp +++ /dev/null @@ -1,64 +0,0 @@ -oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v21.0.0 -INVENTORY_LOCATION=/u01/app/oraInventory -oracle.install.option=CRS_CONFIG -ORACLE_BASE=/u01/app/grid -oracle.install.asm.OSDBA=dba -oracle.install.asm.OSOPER= -oracle.install.asm.OSASM=asmadmin -oracle.install.crs.config.scanType=LOCAL_SCAN -oracle.install.crs.config.SCANClientDataFile= -oracle.install.crs.config.gpnp.scanName=racnodepc1-scan -oracle.install.crs.config.gpnp.scanPort=1521 -oracle.install.crs.config.ClusterConfiguration=STANDALONE -oracle.install.crs.config.configureAsExtendedCluster=false -oracle.install.crs.config.memberClusterManifestFile= -oracle.install.crs.config.clusterName=rac01cluster -oracle.install.crs.config.gpnp.configureGNS= -oracle.install.crs.config.autoConfigureClusterNodeVIP=false -oracle.install.crs.config.gpnp.gnsOption= -oracle.install.crs.config.gpnp.gnsClientDataFile= -oracle.install.crs.config.gpnp.gnsSubDomain= -oracle.install.crs.config.gpnp.gnsVIPAddress= -oracle.install.crs.config.sites= -oracle.install.crs.config.clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB -oracle.install.crs.config.networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 -oracle.install.asm.configureGIMRDataDG=false -oracle.install.crs.config.storageOption= -oracle.install.crs.config.useIPMI=false -oracle.install.crs.config.ipmi.bmcUsername= -oracle.install.crs.config.ipmi.bmcPassword= -oracle.install.asm.storageOption=ASM -oracle.install.asmOnNAS.ocrLocation= -oracle.install.asmOnNAS.configureGIMRDataDG=false -oracle.install.asmOnNAS.gimrLocation= -oracle.install.asm.SYSASMPassword=ORacle__21c -oracle.install.asm.diskGroup.name=DATA -oracle.install.asm.diskGroup.redundancy=EXTERNAL -oracle.install.asm.diskGroup.AUSize=4 -oracle.install.asm.diskGroup.FailureGroups= -oracle.install.asm.diskGroup.disksWithFailureGroupNames=/oradata/asm_disk01.img,,/oradata/asm_disk02.img,,/oradata/asm_disk03.img,,/oradata/asm_disk04.img,,/oradata/asm_disk05.im -oracle.install.asm.diskGroup.disks=/oradata/asm_disk01.img,/oradata/asm_disk02.img,/oradata/asm_disk03.img,/oradata/asm_disk04.img,/oradata/asm_disk05.img -oracle.install.asm.diskGroup.quorumFailureGroupNames= -oracle.install.asm.diskGroup.diskDiscoveryString=/oradata/asm_disk* -oracle.install.asm.monitorPassword=ORacle__21c -oracle.install.asm.gimrDG.name= -oracle.install.asm.gimrDG.redundancy= -oracle.install.asm.gimrDG.AUSize=1 -oracle.install.asm.gimrDG.FailureGroups= -oracle.install.asm.gimrDG.disksWithFailureGroupNames= -oracle.install.asm.gimrDG.disks= -oracle.install.asm.gimrDG.quorumFailureGroupNames= -oracle.install.asm.configureAFD=false -oracle.install.crs.configureRHPS=false -oracle.install.crs.config.ignoreDownNodes=false -oracle.install.config.managementOption=NONE -oracle.install.config.omsHost= -oracle.install.config.omsPort=0 -oracle.install.config.emAdminUser= -oracle.install.config.emAdminPassword= -oracle.install.crs.rootconfig.executeRootScript=false -oracle.install.crs.rootconfig.configMethod=ROOT -oracle.install.crs.rootconfig.sudoPath= -oracle.install.crs.rootconfig.sudoUserName= -oracle.install.crs.config.batchinfo= -oracle.install.crs.deleteNode.nodes= \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/nfsdevices/grid_setup_new_23.26ai.rsp b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/nfsdevices/grid_setup_new_23.26ai.rsp new file mode 100644 index 0000000000..7d1dbb45c4 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/nfsdevices/grid_setup_new_23.26ai.rsp @@ -0,0 +1,63 @@ +oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v23.0.0 +INVENTORY_LOCATION=/u01/app/oraInventory +installOption=CRS_CONFIG +ORACLE_BASE=/u01/app/grid +clusterUsage= +zeroDowntimeGIPatching= +skipDriverUpdate= +OSDBA=asmdba +OSOPER=asmoper +OSASM=asmadmin +scanType=LOCAL_SCAN +scanClientDataFile= +scanName=racnodepc1-scan +scanPort=1521 +configureAsExtendedCluster=false +clusterName=rac01cluster +configureGNS= +configureDHCPAssignedVIPs= +gnsSubDomain= +gnsVIPAddress= +sites= +clusterNodes=racnodep1:racnodep1-vip:HUB,racnodep2:racnodep2-vip:HUB +networkInterfaceList=eth0:10.0.20.0:1,eth1:192.168.17.0:5,eth2:192.168.18.0:5 +storageOption=FLEX_ASM_STORAGE +votingFilesLocations= +ocrLocations= +clientDataFile= +useIPMI=false +bmcBinpath= +bmcUsername= +bmcPassword= +sysasmPassword=<< YOUR PASSWORD HERE >> +diskGroupName=DATA +redundancy=EXTERNAL +auSize=4 +failureGroups= +disksWithFailureGroupNames=/oradata/asm_disk01.img,,/oradata/asm_disk02.img,,/oradata/asm_disk03.img,,/oradata/asm_disk04.img,,/oradata/asm_disk05.img, +diskList=/oradata/asm_disk01.img,,/oradata/asm_disk02.img,,/oradata/asm_disk03.img,,/oradata/asm_disk04.img,,/oradata/asm_disk05.img +oradata/asm_disk05.img +quorumFailureGroupNames= +diskString=/dev/asm* +asmsnmpPassword=<< YOUR PASSWORD HERE >> +ignoreDownNodes=false +configureBackupDG= +backupDGName= +backupDGRedundancy= +backupDGAUSize= +backupDGFailureGroups= +backupDGDisksWithFailureGroupNames= +backupDGDiskList= +backupDGQuorumFailureGroups= +managementOption=NONE +omsHost= +omsPort= +emAdminUser= +emAdminPassword= +executeRootScript=false +configMethod=ROOT +sudoPath= +sudoUserName= +batchInfo= +nodesToDelete= +enableAutoFixup= diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/nfsdevices/podman-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/nfsdevices/podman-compose.yml index 157cf266bf..3e35f4f735 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/nfsdevices/podman-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/rac-compose/racslimimage/withresponsefiles/nfsdevices/podman-compose.yml @@ -78,9 +78,9 @@ services: volumes: - /scratch/rac/cluster01/node1:/u01 - /scratch:/scratch - - /scratch/common_scripts/podman/rac/dbca_21c.rsp:/tmp/dbca_21c.rsp + - /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp:/tmp/dbca_23.26ai.rsp - racstorage:/oradata - - /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp:/tmp/grid_21c.rsp + - /scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp:/tmp/grid_23.26ai.rsp environment: DNS_SERVERS: ${DNS_PUBLIC_IP} CRS_PRIVATE_IP1: ${RACNODE1_CRS_PRIVATE_IP1} @@ -90,12 +90,12 @@ services: SCAN_NAME: ${SCAN_NAME} INIT_SGA_SIZE: 3G INIT_PGA_SIZE: 2G - GRID_HOME: /u01/app/21c/grid + GRID_HOME: /u01/app/26ai/grid STAGING_SOFTWARE_LOC: ${STAGING_SOFTWARE_LOC} - GRID_SW_ZIP_FILE: LINUX.X64_213000_grid_home.zip - DB_SW_ZIP_FILE: LINUX.X64_213000_db_home.zip - GRID_RESPONSE_FILE: /tmp/grid_21c.rsp - DBCA_RESPONSE_FILE: /tmp/dbca_21c.rsp + GRID_SW_ZIP_FILE: LINUX.X64_260000_grid_home.zip + DB_SW_ZIP_FILE: LINUX.X64_260000_db_home.zip + GRID_RESPONSE_FILE: /tmp/grid_23.26ai.rsp + DBCA_RESPONSE_FILE: /tmp/dbca_23.26ai.rsp DB_PWD_FILE: pwdsecret PWD_KEY: keysecret CMAN_HOST: ${CMAN_HOST_NAME} @@ -142,8 +142,8 @@ services: volumes: - /scratch/rac/cluster01/node2:/u01 - /scratch:/scratch - - /scratch/common_scripts/podman/rac/dbca_21c.rsp:/tmp/dbca_21c.rsp - - /scratch/common_scripts/podman/rac/grid_setup_new_21c.rsp:/tmp/grid_21c.rsp + - /scratch/common_scripts/podman/rac/dbca_23.26ai.rsp:/tmp/dbca_23.26ai.rsp + - /scratch/common_scripts/podman/rac/grid_setup_new_23.26ai.rsp:/tmp/grid_23.26ai.rsp - racstorage:/oradata environment: DNS_SERVERS: ${DNS_PUBLIC_IP} @@ -154,12 +154,12 @@ services: SCAN_NAME: ${SCAN_NAME} INIT_SGA_SIZE: 3G INIT_PGA_SIZE: 2G - GRID_HOME: /u01/app/21c/grid + GRID_HOME: /u01/app/26ai/grid STAGING_SOFTWARE_LOC: ${STAGING_SOFTWARE_LOC} - GRID_SW_ZIP_FILE: LINUX.X64_213000_grid_home.zip - DB_SW_ZIP_FILE: LINUX.X64_213000_db_home.zip - GRID_RESPONSE_FILE: /tmp/grid_21c.rsp - DBCA_RESPONSE_FILE: /tmp/dbca_21c.rsp + GRID_SW_ZIP_FILE: LINUX.X64_260000_grid_home.zip + DB_SW_ZIP_FILE: LINUX.X64_260000_db_home.zip + GRID_RESPONSE_FILE: /tmp/grid_23.26ai.rsp + DBCA_RESPONSE_FILE: /tmp/dbca_23.26ai.rsp DB_PWD_FILE: pwdsecret PWD_KEY: keysecret CMAN_HOST: ${CMAN_HOST_NAME}