From 2dd4a3318dde40f8a1f6764f4e092720ae29843e Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Sat, 24 Mar 2018 17:23:59 -0300 Subject: [PATCH 01/31] Docker scripts files for building 18.0.0.0 RDBMS image --- .../dockerfiles/18.0.0.0/Checksum.ee | 1 + .../dockerfiles/18.0.0.0/Dockerfile.ee | 92 ++++++++ .../dockerfiles/18.0.0.0/checkDBStatus.sh | 40 ++++ .../dockerfiles/18.0.0.0/checkSpace.sh | 23 ++ .../dockerfiles/18.0.0.0/createDB.sh | 85 ++++++++ .../dockerfiles/18.0.0.0/db_inst.rsp | 125 +++++++++++ .../dockerfiles/18.0.0.0/dbca.rsp.tmpl | 204 ++++++++++++++++++ .../dockerfiles/18.0.0.0/exadata_wrap.c | 4 + .../dockerfiles/18.0.0.0/installDBBinaries.sh | 74 +++++++ OracleDatabase/dockerfiles/18.0.0.0/ldflags | 1 + .../dockerfiles/18.0.0.0/libexadata_wrap.so | Bin 0 -> 7888 bytes .../dockerfiles/18.0.0.0/runOracle.sh | 197 +++++++++++++++++ .../dockerfiles/18.0.0.0/runUserScripts.sh | 39 ++++ .../dockerfiles/18.0.0.0/setPassword.sh | 26 +++ .../dockerfiles/18.0.0.0/setupLinuxEnv.sh | 25 +++ .../dockerfiles/18.0.0.0/startDB.sh | 28 +++ 16 files changed, 964 insertions(+) create mode 100644 OracleDatabase/dockerfiles/18.0.0.0/Checksum.ee create mode 100644 OracleDatabase/dockerfiles/18.0.0.0/Dockerfile.ee create mode 100755 OracleDatabase/dockerfiles/18.0.0.0/checkDBStatus.sh create mode 100755 OracleDatabase/dockerfiles/18.0.0.0/checkSpace.sh create mode 100755 OracleDatabase/dockerfiles/18.0.0.0/createDB.sh create mode 100644 OracleDatabase/dockerfiles/18.0.0.0/db_inst.rsp create mode 100644 OracleDatabase/dockerfiles/18.0.0.0/dbca.rsp.tmpl create mode 100644 OracleDatabase/dockerfiles/18.0.0.0/exadata_wrap.c create mode 100755 OracleDatabase/dockerfiles/18.0.0.0/installDBBinaries.sh create mode 100644 OracleDatabase/dockerfiles/18.0.0.0/ldflags create mode 100755 OracleDatabase/dockerfiles/18.0.0.0/libexadata_wrap.so create mode 100755 OracleDatabase/dockerfiles/18.0.0.0/runOracle.sh create mode 100755 OracleDatabase/dockerfiles/18.0.0.0/runUserScripts.sh create mode 100755 OracleDatabase/dockerfiles/18.0.0.0/setPassword.sh create mode 100755 OracleDatabase/dockerfiles/18.0.0.0/setupLinuxEnv.sh create mode 100755 OracleDatabase/dockerfiles/18.0.0.0/startDB.sh diff --git a/OracleDatabase/dockerfiles/18.0.0.0/Checksum.ee b/OracleDatabase/dockerfiles/18.0.0.0/Checksum.ee new file mode 100644 index 0000000000..70c55b5935 --- /dev/null +++ b/OracleDatabase/dockerfiles/18.0.0.0/Checksum.ee @@ -0,0 +1 @@ +d9bdce823cd73a220aea3bf4fed4ea16 V974953-01.zip diff --git a/OracleDatabase/dockerfiles/18.0.0.0/Dockerfile.ee b/OracleDatabase/dockerfiles/18.0.0.0/Dockerfile.ee new file mode 100644 index 0000000000..834fe1f38d --- /dev/null +++ b/OracleDatabase/dockerfiles/18.0.0.0/Dockerfile.ee @@ -0,0 +1,92 @@ +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2017 Oracle and/or its affiliates. All rights reserved. +# +# ORACLE DOCKERFILES PROJECT +# -------------------------- +# This is the Dockerfile for Oracle Database 12c Release 2 Enterprise Edition +# +# REQUIRED FILES TO BUILD THIS IMAGE +# ---------------------------------- +# (1) linuxx64_12201_database.zip +# Download Oracle Database 12c Release 12 Enterprise Edition for Linux x64 +# from http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html +# +# HOW TO BUILD THIS IMAGE +# ----------------------- +# Put all downloaded files in the same directory as this Dockerfile +# Run: +# $ docker build -t oracle/database:12.2.0.1-ee . +# +# Pull base image +# --------------- +FROM oraclelinux:7-slim + +# Maintainer +# ---------- +MAINTAINER Gerald Venzl + +# Environment variables required for this build (do NOT change) +# ------------------------------------------------------------- +ENV ORACLE_BASE=/scratch/app/user \ + ORACLE_HOME=/scratch/app/user/product/18.0.0/dbhome_1 \ + INSTALL_FILE_1="V974953-01.zip" \ + INSTALL_RSP="db_inst.rsp" \ + CONFIG_RSP="dbca.rsp.tmpl" \ + PWD_FILE="setPassword.sh" \ + RUN_FILE="runOracle.sh" \ + START_FILE="startDB.sh" \ + CREATE_DB_FILE="createDB.sh" \ + SETUP_LINUX_FILE="setupLinuxEnv.sh" \ + CHECK_SPACE_FILE="checkSpace.sh" \ + CHECK_DB_FILE="checkDBStatus.sh" \ + USER_SCRIPTS_FILE="runUserScripts.sh" \ + INSTALL_DB_BINARIES_FILE="installDBBinaries.sh" + +# Use second ENV so that variable get substituted +ENV INSTALL_DIR=$ORACLE_BASE/install \ + PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ + LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ + CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib + +# Copy binaries +# ------------- +COPY $INSTALL_FILE_1 $INSTALL_RSP $SETUP_LINUX_FILE $CHECK_SPACE_FILE $INSTALL_DB_BINARIES_FILE $INSTALL_DIR/ +COPY $RUN_FILE $START_FILE $CREATE_DB_FILE $CONFIG_RSP $PWD_FILE $CHECK_DB_FILE $USER_SCRIPTS_FILE $ORACLE_BASE/ + +RUN chmod ug+x $INSTALL_DIR/*.sh && \ + sync && \ + $INSTALL_DIR/$CHECK_SPACE_FILE && \ + $INSTALL_DIR/$SETUP_LINUX_FILE + +# Install DB software binaries +USER oracle +RUN $INSTALL_DIR/$INSTALL_DB_BINARIES_FILE EE + +USER root +RUN sed -i -e "s|ORACLE_OWNER=user|ORACLE_OWNER=oracle|g" $ORACLE_HOME/install/utl/rootmacro.sh && \ + sed -i -e "s|OSDBA_GROUP=svrtech|OSDBA_GROUP=dba|g" $ORACLE_HOME/install/utl/rootmacro.sh && \ + $ORACLE_HOME/root.sh && \ + rm -rf $INSTALL_DIR + +USER oracle +# install wrapper to avoid exadata check environment +COPY libexadata_wrap.so ldflags exadata_wrap.c $ORACLE_HOME/lib/ + +# fix lsnrctl and others binary files with size 0 and relink with wrapper function +RUN cd $ORACLE_HOME/network/lib && make -f ins_net_server.mk install && \ + cd $ORACLE_HOME/network/lib && make -f ins_net_client.mk install && \ + cd $ORACLE_HOME/plsql/lib && make -f ins_plsql.mk install && \ + cd $ORACLE_HOME/ctx/lib && make -f ins_ctx.mk install && \ + cd $ORACLE_HOME/rdbms/lib && make -f ins_rdbms.mk install && \ + make -f ins_rdbms.mk irman itkprof iplshprof iextproc idrdactl idrdalsnr idrdaproc idg4pwd idg4odbc + +WORKDIR /home/oracle + +VOLUME ["$ORACLE_BASE/oradata"] +EXPOSE 1521 5500 +HEALTHCHECK --interval=1m --start-period=5m \ + CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1 + +# Define default command to start Oracle Database. +CMD exec $ORACLE_BASE/$RUN_FILE diff --git a/OracleDatabase/dockerfiles/18.0.0.0/checkDBStatus.sh b/OracleDatabase/dockerfiles/18.0.0.0/checkDBStatus.sh new file mode 100755 index 0000000000..37f76010b5 --- /dev/null +++ b/OracleDatabase/dockerfiles/18.0.0.0/checkDBStatus.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2017 Oracle and/or its affiliates. All rights reserved. +# +# Since: May, 2017 +# Author: gerald.venzl@oracle.com +# Description: Checks the status of Oracle Database. +# Return codes: 0 = Database is open and ready to use +# 1 = Database is not open +# 2 = Sql Plus execution failed +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`" +ORACLE_PDB="`ls -dl $ORACLE_BASE/oradata/$ORACLE_SID/*/ | grep -v pdbseed | awk '{print $9}' | cut -d/ -f6`" +ORAENV_ASK=NO +source oraenv + +# Check Oracle DB status and store it in status +status=`sqlplus -s / as sysdba << EOF + set heading off; + set pagesize 0; + select status from v\\$instance; + exit; +EOF` + +# Store return code from SQL*Plus +ret=$? + +# SQL Plus execution was successful and database is open +if [ $ret -eq 0 ] && [ "$status" = "OPEN" ]; then + exit 0; +# Database is not open +elif [ "$status" != "OPEN" ]; then + exit 1; +# SQL Plus execution failed +else + exit 2; +fi; diff --git a/OracleDatabase/dockerfiles/18.0.0.0/checkSpace.sh b/OracleDatabase/dockerfiles/18.0.0.0/checkSpace.sh new file mode 100755 index 0000000000..4d5d5d4c67 --- /dev/null +++ b/OracleDatabase/dockerfiles/18.0.0.0/checkSpace.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2017 Oracle and/or its affiliates. All rights reserved. +# +# Since: January, 2017 +# Author: gerald.venzl@oracle.com +# Description: Checks the available space of the system. +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +REQUIRED_SPACE_GB=15 +AVAILABLE_SPACE_GB=`df -B 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 GB are available." + echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + exit 1; +fi; diff --git a/OracleDatabase/dockerfiles/18.0.0.0/createDB.sh b/OracleDatabase/dockerfiles/18.0.0.0/createDB.sh new file mode 100755 index 0000000000..291ef20e3e --- /dev/null +++ b/OracleDatabase/dockerfiles/18.0.0.0/createDB.sh @@ -0,0 +1,85 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2016 Oracle and/or its affiliates. All rights reserved. +# +# Since: November, 2016 +# Author: gerald.venzl@oracle.com +# Description: Creates an Oracle Database based on following parameters: +# $ORACLE_SID: The Oracle SID and CDB name +# $ORACLE_PDB: The PDB name +# $ORACLE_PWD: The Oracle password +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +set -e + +# Check whether ORACLE_SID is passed on +export ORACLE_SID=${1:-ORCLCDB} + +# Check whether ORACLE_PDB is passed on +export ORACLE_PDB=${2:-ORCLPDB1} + +# Auto generate ORACLE PWD if not passed on +export ORACLE_PWD=${3:-"`openssl rand -base64 8`1"} +echo "ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: $ORACLE_PWD"; + +# Replace place holders in response file +cp $ORACLE_BASE/$CONFIG_RSP $ORACLE_BASE/dbca.rsp +sed -i -e "s|###ORACLE_SID###|$ORACLE_SID|g" $ORACLE_BASE/dbca.rsp +sed -i -e "s|###ORACLE_PDB###|$ORACLE_PDB|g" $ORACLE_BASE/dbca.rsp +sed -i -e "s|###ORACLE_PWD###|$ORACLE_PWD|g" $ORACLE_BASE/dbca.rsp +sed -i -e "s|###ORACLE_CHARACTERSET###|$ORACLE_CHARACTERSET|g" $ORACLE_BASE/dbca.rsp + +# If there is greater than 8 CPUs default back to dbca memory calculations +# dbca will automatically pick 40% of available memory for Oracle DB +# The minimum of 2G is for small environments to guarantee that Oracle has enough memory to function +# However, bigger environment can and should use more of the available memory +# This is due to Github Issue #307 +if [ `nproc` -gt 8 ]; then + sed -i -e "s|totalMemory=2048||g" $ORACLE_BASE/dbca.rsp +fi; + +# Create network related config files (sqlnet.ora, tnsnames.ora, listener.ora) +mkdir -p $ORACLE_HOME/network/admin +echo "NAME.DIRECTORY_PATH= (TNSNAMES, EZCONNECT, HOSTNAME)" > $ORACLE_HOME/network/admin/sqlnet.ora + +# Listener.ora +echo "LISTENER = +(DESCRIPTION_LIST = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + ) +) + +DEDICATED_THROUGH_BROKER_LISTENER=ON +DIAG_ADR_ENABLED = off +" > $ORACLE_HOME/network/admin/listener.ora + +# Start LISTENER and run DBCA +lsnrctl start && +dbca -silent -createDatabase -responseFile $ORACLE_BASE/dbca.rsp || + cat /scratch/app/user/cfgtoollogs/dbca/$ORACLE_SID/$ORACLE_SID.log || + cat /scratch/app/user/cfgtoollogs/dbca/$ORACLE_SID.log + +echo "$ORACLE_SID=localhost:1521/$ORACLE_SID" > $ORACLE_HOME/network/admin/tnsnames.ora +echo "$ORACLE_PDB= +(DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = $ORACLE_PDB) + ) +)" >> $ORACLE_HOME/network/admin/tnsnames.ora + +# Remove second control file, make PDB auto open +sqlplus / as sysdba << EOF + ALTER SYSTEM SET control_files='$ORACLE_BASE/oradata/$ORACLE_SID/control01.ctl' scope=spfile; + ALTER PLUGGABLE DATABASE $ORACLE_PDB SAVE STATE; + exit; +EOF + +# Remove temporary response file +rm $ORACLE_BASE/dbca.rsp diff --git a/OracleDatabase/dockerfiles/18.0.0.0/db_inst.rsp b/OracleDatabase/dockerfiles/18.0.0.0/db_inst.rsp new file mode 100644 index 0000000000..e953790f6d --- /dev/null +++ b/OracleDatabase/dockerfiles/18.0.0.0/db_inst.rsp @@ -0,0 +1,125 @@ +#################################################################### +## Copyright(c) Oracle Corporation 1998,2017. 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. +#------------------------------------------------------------------------------- +oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0 + +#------------------------------------------------------------------------------- +# Specify the installation option. +# It can be one of the following: +# - INSTALL_DB_SWONLY +# - INSTALL_DB_AND_CONFIG +# - UPGRADE_DB +#------------------------------------------------------------------------------- +oracle.install.option=INSTALL_DB_SWONLY + +#------------------------------------------------------------------------------- +# Specify the Unix group to be set for the inventory directory. +#------------------------------------------------------------------------------- +UNIX_GROUP_NAME=dba + +#------------------------------------------------------------------------------- +# Specify the location which holds the inventory files. +# This is an optional parameter if installing on +# Windows based Operating System. +#------------------------------------------------------------------------------- +INVENTORY_LOCATION=###ORACLE_BASE###/oraInventory +#------------------------------------------------------------------------------- +# Specify the complete path of the Oracle Home. +#------------------------------------------------------------------------------- +ORACLE_HOME=###ORACLE_HOME### + +#------------------------------------------------------------------------------- +# Specify the complete path of the Oracle Base. +#------------------------------------------------------------------------------- +ORACLE_BASE=###ORACLE_BASE### + +#------------------------------------------------------------------------------- +# Specify the installation edition of the component. +# +# The value should contain only one of these choices. +# - EE : Enterprise Edition +# - SE2 : Standard Edition 2 +#------------------------------------------------------------------------------- +oracle.install.db.InstallEdition=###ORACLE_EDITION### + +############################################################################### +# # +# PRIVILEGED OPERATING SYSTEM GROUPS # +# ------------------------------------------ # +# Provide values for the OS groups to which SYSDBA and SYSOPER privileges # +# needs to be granted. If the install is being performed as a member of the # +# group "dba", then that will be used unless specified otherwise below. # +# # +# The value to be specified for OSDBA and OSOPER group is only for UNIX based # +# Operating System. # +# # +############################################################################### + +#------------------------------------------------------------------------------ +# The OSDBA_GROUP is the OS group which is to be granted SYSDBA privileges. +#------------------------------------------------------------------------------- +oracle.install.db.OSDBA_GROUP=dba + +#------------------------------------------------------------------------------ +# The OSOPER_GROUP is the OS group which is to be granted SYSOPER privileges. +# The value to be specified for OSOPER group is optional. +#------------------------------------------------------------------------------ +oracle.install.db.OSOPER_GROUP=dba + +#------------------------------------------------------------------------------ +# The OSBACKUPDBA_GROUP is the OS group which is to be granted SYSBACKUP privileges. +#------------------------------------------------------------------------------ +oracle.install.db.OSBACKUPDBA_GROUP=dba + +#------------------------------------------------------------------------------ +# The OSDGDBA_GROUP is the OS group which is to be granted SYSDG privileges. +#------------------------------------------------------------------------------ +oracle.install.db.OSDGDBA_GROUP=dba + +#------------------------------------------------------------------------------ +# The OSKMDBA_GROUP is the OS group which is to be granted SYSKM privileges. +#------------------------------------------------------------------------------ +oracle.install.db.OSKMDBA_GROUP=dba + +#------------------------------------------------------------------------------ +# The OSRACDBA_GROUP is the OS group which is to be granted SYSRAC privileges. +#------------------------------------------------------------------------------ +oracle.install.db.OSRACDBA_GROUP=dba + +#------------------------------------------------------------------------------ +# Specify whether to enable the user to set the password for +# My Oracle Support credentials. The value can be either true or false. +# If left blank it will be assumed to be false. +# +# Example : SECURITY_UPDATES_VIA_MYORACLESUPPORT=true +#------------------------------------------------------------------------------ +SECURITY_UPDATES_VIA_MYORACLESUPPORT=false + +#------------------------------------------------------------------------------ +# Specify whether user doesn't want to configure Security Updates. +# The value for this variable should be true if you don't want to configure +# Security Updates, false otherwise. +# +# The value can be either true or false. If left blank it will be assumed +# to be true. +# +# Example : DECLINE_SECURITY_UPDATES=false +#------------------------------------------------------------------------------ +DECLINE_SECURITY_UPDATES=true \ No newline at end of file diff --git a/OracleDatabase/dockerfiles/18.0.0.0/dbca.rsp.tmpl b/OracleDatabase/dockerfiles/18.0.0.0/dbca.rsp.tmpl new file mode 100644 index 0000000000..5a3eebc67d --- /dev/null +++ b/OracleDatabase/dockerfiles/18.0.0.0/dbca.rsp.tmpl @@ -0,0 +1,204 @@ +############################################################################## +## ## +## DBCA response file ## +## ------------------ ## +## Copyright(c) Oracle Corporation 1998,2017. 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_v12.2.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=###ORACLE_SID### + +#----------------------------------------------------------------------------- +# Name : sid +# Datatype : String +# Description : System identifier (SID) of the database +# Valid values : Check Oracle12c Administrator's Guide +# Default value : specified in GDBNAME +# Mandatory : No +#----------------------------------------------------------------------------- +sid=###ORACLE_SID### + +#----------------------------------------------------------------------------- +# Name : createAsContainerDatabase +# Datatype : boolean +# Description : flag to create database as container database +# Valid values : Check Oracle12c Administrator's Guide +# Default value : false +# Mandatory : No +#----------------------------------------------------------------------------- +createAsContainerDatabase=true + +#----------------------------------------------------------------------------- +# Name : numberOfPDBs +# Datatype : Number +# Description : Specify the number of pdb to be created +# Valid values : 0 to 4094 +# Default value : 0 +# Mandatory : No +#----------------------------------------------------------------------------- +numberOfPDBs=1 + +#----------------------------------------------------------------------------- +# Name : pdbName +# Datatype : String +# Description : Specify the pdbname/pdbanme prefix if one or more pdb need to be created +# Valid values : Check Oracle12c Administrator's Guide +# Default value : None +# Mandatory : No +#----------------------------------------------------------------------------- +pdbName=###ORACLE_PDB### + +#----------------------------------------------------------------------------- +# Name : pdbAdminPassword +# Datatype : String +# Description : PDB Administrator user password +# Valid values : Check Oracle12c Administrator's Guide +# Default value : None +# Mandatory : No +#----------------------------------------------------------------------------- +pdbAdminPassword=###ORACLE_PWD### + +#----------------------------------------------------------------------------- +# Name : templateName +# Datatype : String +# Description : Name of the template +# Valid values : Template file name +# Default value : None +# Mandatory : Yes +#----------------------------------------------------------------------------- +templateName=General_Purpose.dbc + +#----------------------------------------------------------------------------- +# Name : sysPassword +# Datatype : String +# Description : Password for SYS user +# Valid values : Check Oracle12c Administrator's Guide +# Default value : None +# Mandatory : Yes +#----------------------------------------------------------------------------- +sysPassword=###ORACLE_PWD### + +#----------------------------------------------------------------------------- +# Name : systemPassword +# Datatype : String +# Description : Password for SYSTEM user +# Valid values : Check Oracle12c Administrator's Guide +# Default value : None +# Mandatory : Yes +#----------------------------------------------------------------------------- +systemPassword=###ORACLE_PWD### + +#----------------------------------------------------------------------------- +# Name : emConfiguration +# Datatype : String +# Description : Enterprise Manager Configuration Type +# Valid values : CENTRAL|DBEXPRESS|BOTH|NONE +# Default value : NONE +# Mandatory : No +#----------------------------------------------------------------------------- +emConfiguration=DBEXPRESS + +#----------------------------------------------------------------------------- +# Name : emExpressPort +# Datatype : Number +# Description : Enterprise Manager Configuration Type +# Valid values : Check Oracle12c Administrator's Guide +# Default value : NONE +# Mandatory : No, will be picked up from DBEXPRESS_HTTPS_PORT env variable +# or auto generates a free port between 5500 and 5599 +#----------------------------------------------------------------------------- +emExpressPort=5500 + +#----------------------------------------------------------------------------- +# Name : dbsnmpPassword +# Datatype : String +# Description : Password for DBSNMP user +# Valid values : Check Oracle12c Administrator's Guide +# Default value : None +# Mandatory : Yes, if emConfiguration is specified or +# the value of runCVUChecks is TRUE +#----------------------------------------------------------------------------- +dbsnmpPassword=###ORACLE_PWD### + +#----------------------------------------------------------------------------- +# Name : characterSet +# Datatype : String +# Description : Character set of the database +# Valid values : Check Oracle12c National Language Support Guide +# Default value : "US7ASCII" +# Mandatory : NO +#----------------------------------------------------------------------------- +characterSet=###ORACLE_CHARACTERSET### + +#----------------------------------------------------------------------------- +# Name : nationalCharacterSet +# Datatype : String +# Description : National Character set of the database +# Valid values : "UTF8" or "AL16UTF16". For details, check Oracle12c National Language Support Guide +# Default value : "AL16UTF16" +# Mandatory : No +#----------------------------------------------------------------------------- +nationalCharacterSet=AL16UTF16 + +#----------------------------------------------------------------------------- +# Name : initParams +# Datatype : String +# Description : comma separated list of name=value pairs. Overrides initialization parameters defined in templates +# Default value : None +# Mandatory : NO +#----------------------------------------------------------------------------- +initParams=audit_trail=none,audit_sys_operations=false + +#----------------------------------------------------------------------------- +# 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=LISTENER + +#----------------------------------------------------------------------------- +# Name : automaticMemoryManagement +# Datatype : Boolean +# Description : flag to indicate Automatic Memory Management is used +# Valid values : TRUE/FALSE +# Default value : TRUE +# Mandatory : NO +#----------------------------------------------------------------------------- +automaticMemoryManagement=FALSE + +#----------------------------------------------------------------------------- +# Name : totalMemory +# Datatype : String +# Description : total memory in MB to allocate to Oracle +# Valid values : +# Default value : +# Mandatory : NO +#----------------------------------------------------------------------------- +totalMemory=2048 \ No newline at end of file diff --git a/OracleDatabase/dockerfiles/18.0.0.0/exadata_wrap.c b/OracleDatabase/dockerfiles/18.0.0.0/exadata_wrap.c new file mode 100644 index 0000000000..5b70a9d271 --- /dev/null +++ b/OracleDatabase/dockerfiles/18.0.0.0/exadata_wrap.c @@ -0,0 +1,4 @@ +long __wrap_ksz_exadata_feature_on(){ + return 1; +} + diff --git a/OracleDatabase/dockerfiles/18.0.0.0/installDBBinaries.sh b/OracleDatabase/dockerfiles/18.0.0.0/installDBBinaries.sh new file mode 100755 index 0000000000..34f7bae194 --- /dev/null +++ b/OracleDatabase/dockerfiles/18.0.0.0/installDBBinaries.sh @@ -0,0 +1,74 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2016 Oracle and/or its affiliates. All rights reserved. +# +# Since: December, 2016 +# Author: gerald.venzl@oracle.com +# Description: Sets up the unix environment for DB installation. +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +EDITION=$1 + +# 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" -a "$EDITION" != "SE2" ]; then + echo "ERROR: Wrong edition has been passed on!" + echo "Edition $EDITION is no a valid edition!" + exit 1; +fi; + +# Check whether ORACLE_BASE is set +if [ "$ORACLE_BASE" == "" ]; then + echo "ERROR: ORACLE_BASE has not been set!" + echo "You have to have the ORACLE_BASE environment variable set to a valid value!" + exit 1; +fi; + +# Check whether ORACLE_HOME is set +if [ "$ORACLE_HOME" == "" ]; then + echo "ERROR: ORACLE_HOME has not been set!" + echo "You have to have the ORACLE_HOME environment variable set to a valid value!" + exit 1; +fi; + + +# Replace place holders +# --------------------- +sed -i -e "s|###ORACLE_EDITION###|$EDITION|g" $INSTALL_DIR/$INSTALL_RSP && \ +sed -i -e "s|###ORACLE_BASE###|$ORACLE_BASE|g" $INSTALL_DIR/$INSTALL_RSP && \ +sed -i -e "s|###ORACLE_HOME###|$ORACLE_HOME|g" $INSTALL_DIR/$INSTALL_RSP + +# Install Oracle binaries +cd $INSTALL_DIR && \ +unzip -q $INSTALL_FILE_1 -d $ORACLE_HOME && \ +rm $INSTALL_FILE_1 && \ +cd $HOME + +# Remove not needed components +rm -rf $ORACLE_HOME/apex && \ +rm -rf $ORACLE_HOME/jdbc && \ +# ZDLRA installer files +rm -rf $ORACLE_HOME/lib/ra*.zip && \ +rm -rf $ORACLE_HOME/ords && \ +rm -rf $ORACLE_HOME/sqldeveloper && \ +rm -rf $ORACLE_HOME/ucp && \ +# OUI backup +rm -rf $ORACLE_HOME/inventory/backup/* && \ +# Network tools help +rm -rf $ORACLE_HOME/network/tools/help/mgr/help_* && \ +# Temp location +rm -rf /tmp/* && \ +# Database files directory +rm -rf $INSTALL_DIR/database + +# Link password reset file to home directory +ln -s $ORACLE_BASE/$PWD_FILE $HOME/ diff --git a/OracleDatabase/dockerfiles/18.0.0.0/ldflags b/OracleDatabase/dockerfiles/18.0.0.0/ldflags new file mode 100644 index 0000000000..65ce476db4 --- /dev/null +++ b/OracleDatabase/dockerfiles/18.0.0.0/ldflags @@ -0,0 +1 @@ +-ln18 -lncrypt18 -lnbeq18 -lntcp18 -lntcps18 -lnus18 -lntmq18 -lmql1 -lipc1 -lntwss18 -lnldap18 -lldapclnt18 -lnhost18 -lntns18 -lnoname18 -lngsmshd18 --wrap=ksz_exadata_feature_on -lexadata_wrap diff --git a/OracleDatabase/dockerfiles/18.0.0.0/libexadata_wrap.so b/OracleDatabase/dockerfiles/18.0.0.0/libexadata_wrap.so new file mode 100755 index 0000000000000000000000000000000000000000..64063b9655be8254b412736ab0d12014be025366 GIT binary patch literal 7888 zcmeHMU2Ggz6~61WI4IXiFj?KuPgg!P4t(0WzQ~GM&0WY(VshcKY2Z zI+d_rZ_f|L#|>edY0cuDW-A`-kUmrT_HHzvvk!g(j3F506JS1J8>QqtETf z;dT?euL(X*_$TOz()S6-h`U60#;B`$UE$kBPXvEO<5B$z;oHP!@w{Hl&DtBU*S47P zZddpgaUr_+Ql2Q3iqiA#vM;5Oxnj;2a+a8oM<$L*$1S@ja-Q#&Cyov0OGS6Wp3b{L zU3`t4nX}n}ozI;i#iOU>xb`rdw>{7Ggp{Yt_DT7qcSgE%wqyIG@7jK)?8;J6S4Ck6*_8==T@6q47)vhkUKWP##&Wb~I4=dI;w|4q6W3csIH3W(W^&+0_t^F0y{7 z-Y@)~g#8;KJgjdme2}u9Y5UqHLs(BO`EAReBtvWAXQ@lsY}#gD_2s3f1Rpc zXMdzW80g<0(!aQxv=)DAUHs!iR^p2F&T2&&-}SqVY{s3PMsAG?Ra3%{w{TV zu+AZRo+5vnS#L0%`BuyD)(xZNh~;%!pMmumSf7FQ8Caiz|AQGo{DpW6LqeRzUtcDU z>6rLlz=Zf-U)ySN?%hFk?H;#N%lLNg(6Z2R9e;0`Q2+N2t0k6i>V^@MWp%KH*b4W; zO{`3GF<=y-2ZU>CEk@Jv8Dd2h1CT1>1${jgAJ_KXx?$j19WS|@WSvgy_3$DyM zWCJPClydl_X1S#LVi$5V)P9M)(vPW{qN|cHXG(>FTlAxo7m<^6 zH$uK4T$Q9q7W=&(PYUewdc0NOeW=IV1ol-uzCmC=*5mC0`??-a3GDxRyzySo^+~Zw zoW+Y8GDyghXBWEv*v}*iB@r|x`qTLK6ewM zvHyJDw#3Y{sqyQPbs5xn^t^ve`CscN&Z}94H_qpI?FZiv5*2ZBDG{?SZxS9iu4dzX zOZiEQZXCeMyAbawym215I?n&^m44&;{#oIT>-$fIH|C3y)X_xD`rb{rK{iq9B|I+g z^dRBeV)p+~6F-kAKaF{+FK9fPrgY{(I z^Vg0kb4WY#V^oQ*s5#p8p=jtr9qW$B=Oc<)FUX#k4DBP1!~YAHxN}5UH}oI-Ac!;8>=Ex><4Gav4p{9M_Tay!n(+8*aiMPD zKiR)e_UsG&$9KM4+oK(HKo19^Sf&zVJvAgKzz#e)q9-Ke?e#Nyv!2ehyx)NzHB8q Date: Wed, 11 Apr 2018 20:40:03 -0300 Subject: [PATCH 02/31] fixed listener registration after stop/start container --- OracleDatabase/dockerfiles/18.0.0.0/createDB.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/OracleDatabase/dockerfiles/18.0.0.0/createDB.sh b/OracleDatabase/dockerfiles/18.0.0.0/createDB.sh index 291ef20e3e..a31ff646e2 100755 --- a/OracleDatabase/dockerfiles/18.0.0.0/createDB.sh +++ b/OracleDatabase/dockerfiles/18.0.0.0/createDB.sh @@ -77,6 +77,7 @@ echo "$ORACLE_PDB= # Remove second control file, make PDB auto open sqlplus / as sysdba << EOF ALTER SYSTEM SET control_files='$ORACLE_BASE/oradata/$ORACLE_SID/control01.ctl' scope=spfile; + ALTER SYSTEM SET local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))'; ALTER PLUGGABLE DATABASE $ORACLE_PDB SAVE STATE; exit; EOF From 935fee38c7beac3d8b84c456e7e2f248e69b05bd Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Mon, 22 Oct 2018 17:06:24 -0300 Subject: [PATCH 03/31] initial scripts for build 18c-xe docker image --- .../dockerfiles/18.4.0/Checksum.xe | 1 + .../dockerfiles/18.4.0/Dockerfile.xe | 79 +++++++ .../dockerfiles/18.4.0/checkDBStatus.sh | 38 +++ .../dockerfiles/18.4.0/oracle-xe-18c.conf | 18 ++ .../dockerfiles/18.4.0/runOracle.sh | 218 ++++++++++++++++++ .../dockerfiles/18.4.0/setPassword.sh | 10 + .../dockerfiles/buildDockerImage.sh | 3 + 7 files changed, 367 insertions(+) create mode 100644 OracleDatabase/SingleInstance/dockerfiles/18.4.0/Checksum.xe create mode 100644 OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe create mode 100755 OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh create mode 100755 OracleDatabase/SingleInstance/dockerfiles/18.4.0/oracle-xe-18c.conf create mode 100644 OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh create mode 100644 OracleDatabase/SingleInstance/dockerfiles/18.4.0/setPassword.sh diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Checksum.xe b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Checksum.xe new file mode 100644 index 0000000000..7513a3f437 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Checksum.xe @@ -0,0 +1 @@ +9ff73be7e89edb22e5c1f7a457978aca oracle-database-xe-18c-1.0-1.x86_64.rpm diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe new file mode 100644 index 0000000000..dd6bf98e1b --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe @@ -0,0 +1,79 @@ +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2016 Oracle and/or its affiliates. All rights reserved. +# +# ORACLE DOCKERFILES PROJECT +# -------------------------- +# This is the Dockerfile for Oracle Database 11g Release 2 Express Edition +# +# REQUIRED FILES TO BUILD THIS IMAGE +# ---------------------------------- +# (1) oracle-database-xe-18c-1.0-1.x86_64.rpm +# Download Oracle Database Express Edition (XE) Release 18.4.0.0.0 (18c) for Linux x64 +# from https://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html +# +# HOW TO BUILD THIS IMAGE +# ----------------------- +# Put the downloaded file in the same directory as this Dockerfile +# Run: +# $ docker build -t oracle/database:18.4.0-xe -f Dockerfile.xe . +# +# IMPORTANT +# --------- +# Oracle XE requires Docker 1.10.0 and above: +# Oracle XE uses shared memory for MEMORY_TARGET and needs at least 1 GB. +# Docker only supports --shm-size since Docker 1.10.0 +# +# Pull base image +# --------------- +FROM oraclelinux:7-slim + +# Maintainer +# ---------- +MAINTAINER Gerald Venzl + +# Environment variables required for this build (do NOT change) +# ------------------------------------------------------------- +ENV ORACLE_BASE=/opt/oracle \ + ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE \ + ORACLE_SID=XE \ + INSTALL_FILE_1="oracle-database-xe-18c-1.0-1.x86_64.rpm" \ + RUN_FILE="runOracle.sh" \ + PWD_FILE="setPassword.sh" \ + CONF_FILE="oracle-xe-18c.conf" \ + CHECK_DB_FILE="checkDBStatus.sh" \ + INSTALL_DIR="$HOME/install" \ + ORACLE_DOCKER_INSTALL="true" + +# Use second ENV so that variable get substituted +ENV PATH=$ORACLE_HOME/bin:$PATH + +# Copy binaries +# ------------- +COPY $INSTALL_FILE_1 $RUN_FILE $PWD_FILE $CHECK_DB_FILE $INSTALL_DIR/ +COPY $CONF_FILE /etc/sysconfig/ + +RUN cd $INSTALL_DIR && \ + yum -y install oracle-database-preinstall-18c file openssl $INSTALL_FILE_1 && \ + rm -rf /var/cache/yum && \ + mkdir -p $ORACLE_BASE/scripts/setup && \ + mkdir $ORACLE_BASE/scripts/startup && \ + ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d && \ + mkdir $ORACLE_BASE/oradata && \ + chown oracle:oinstall $ORACLE_BASE/oradata && \ + mv $INSTALL_DIR/$RUN_FILE $ORACLE_BASE/ && \ + mv $INSTALL_DIR/$PWD_FILE $ORACLE_BASE/ && \ + mv $INSTALL_DIR/$CHECK_DB_FILE $ORACLE_BASE/ && \ + ln -s $ORACLE_BASE/$PWD_FILE / && \ + cd $HOME && \ + rm -rf $INSTALL_DIR && \ + target_txt=$(cat /etc/security/limits.d/oracle-database-preinstall-18c.conf | grep -e 'oracle *hard *memlock*') && \ + sed -i "/^$target_txt/ c#$target_txt" /etc/security/limits.d/oracle-database-preinstall-18c.conf && \ + chmod ug+x $ORACLE_BASE/*.sh + +VOLUME ["$ORACLE_BASE/oradata"] +EXPOSE 1521 8080 5500 +HEALTHCHECK --interval=1m --start-period=5m \ + CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1 + +CMD exec $ORACLE_BASE/$RUN_FILE diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh new file mode 100755 index 0000000000..df473ab922 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2017 Oracle and/or its affiliates. All rights reserved. +# +# Since: May, 2017 +# Author: gerald.venzl@oracle.com +# Description: Checks the status of Oracle Database. +# Return codes: 0 = Database is open and ready to use +# 1 = Database is not open +# 2 = Sql Plus execution failed +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +POSITIVE_RETURN="OPEN" +ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`" + +# Check Oracle DB status and store it in status +status=`su -p oracle -c "sqlplus -s / as sysdba" << EOF + set heading off; + set pagesize 0; + select status from v\\$instance; + exit; +EOF` + +# Store return code from SQL*Plus +ret=$? + +# SQL Plus execution was successful and database is open +if [ $ret -eq 0 ] && [ "$status" = "$POSITIVE_RETURN" ]; then + exit 0; +# Database is not open +elif [ "$status" != "$POSITIVE_RETURN" ]; then + exit 1; +# SQL Plus execution failed +else + exit 2; +fi; diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/oracle-xe-18c.conf b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/oracle-xe-18c.conf new file mode 100755 index 0000000000..e7a36e2eaf --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/oracle-xe-18c.conf @@ -0,0 +1,18 @@ +#This is a configuration file to setup the Oracle Database. +#It is used when running '/etc/init.d/oracle-xe-18c configure'. + +# LISTENER PORT used Database listener, Leave empty for automatic port assignment +LISTENER_PORT= + +# EM_EXPRESS_PORT Oracle EM Express URL port +EM_EXPRESS_PORT=5500 + +# Character set of the database +CHARSET=AL32UTF8 + +# Database file directory +# If not specified, database files are stored under Oracle base/oradata +DBFILE_DEST= + +# SKIP Validations, memory, space +SKIP_VALIDATIONS=false diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh new file mode 100644 index 0000000000..b9106c2195 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh @@ -0,0 +1,218 @@ +#!/bin/bash + +############# Execute custom scripts ############## +function runUserScripts { + + SCRIPTS_ROOT="$1"; + + # Check whether parameter has been passed on + if [ -z "$SCRIPTS_ROOT" ]; then + echo "$0: No SCRIPTS_ROOT passed on, no scripts will be run"; + exit 1; + fi; + + # Execute custom provided files (only if directory exists and has files in it) + if [ -d "$SCRIPTS_ROOT" ] && [ -n "$(ls -A $SCRIPTS_ROOT)" ]; then + + echo ""; + echo "Executing user defined scripts" + + for f in $SCRIPTS_ROOT/*; do + case "$f" in + *.sh) echo "$0: running $f"; . "$f" ;; + *.sql) echo "$0: running $f"; echo "exit" | su -p oracle -c "$ORACLE_HOME/bin/sqlplus / as sysdba @$f"; echo ;; + *) echo "$0: ignoring $f" ;; + esac + echo ""; + done + + echo "DONE: Executing user defined scripts" + echo ""; + + fi; + +} + +########### Move DB files ############ +function moveFiles { + if [ ! -d $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID ]; then + su -p oracle -c "mkdir -p $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + fi; + + su -p oracle -c "mv $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + su -p oracle -c "mv $ORACLE_HOME/dbs/orapw$ORACLE_SID $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + su -p oracle -c "mv $ORACLE_HOME/network/admin/listener.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + su -p oracle -c "mv $ORACLE_HOME/network/admin/tnsnames.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + mv /etc/sysconfig/oracle-xe-18c.conf $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ + + cp /etc/oratab $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ + + symLinkFiles; +} + +########### Symbolic link DB files ############ +function symLinkFiles { + + if [ ! -L $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora ]; then + ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/spfile$ORACLE_SID.ora $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora + fi; + + if [ ! -L $ORACLE_HOME/dbs/orapw$ORACLE_SID ]; then + ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/orapw$ORACLE_SID $ORACLE_HOME/dbs/orapw$ORACLE_SID + fi; + + if [ ! -L $ORACLE_HOME/network/admin/listener.ora ]; then + ln -sf $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/listener.ora $ORACLE_HOME/network/admin/listener.ora + fi; + + if [ ! -L $ORACLE_HOME/network/admin/tnsnames.ora ]; then + ln -sf $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/tnsnames.ora $ORACLE_HOME/network/admin/tnsnames.ora + fi; + + if [ ! -L /etc/sysconfig/oracle-xe-18c.conf ]; then + ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/oracle-xe-18c.conf /etc/sysconfig/oracle-xe-18c.conf + fi; + + cp $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/oratab /etc/oratab +} + +########### SIGTERM handler ############ +function _term() { + echo "Stopping container." + echo "SIGTERM received, shutting down database!" + /etc/init.d/oracle-xe-18c stop +} + +########### SIGKILL handler ############ +function _kill() { + echo "SIGKILL received, shutting down database!" + /etc/init.d/oracle-xe-18c stop +} + +############# Create DB ################ +function createDB { + # Auto generate ORACLE PWD if not passed on + export ORACLE_PWD=${ORACLE_PWD:-"`openssl rand -hex 8`"} + echo "ORACLE PASSWORD FOR SYS AND SYSTEM: $ORACLE_PWD"; + + (echo "$ORACLE_PWD"; echo "$ORACLE_PWD";) | /etc/init.d/oracle-xe-18c configure + + # Listener + echo "# listener.ora Network Configuration File: + + SID_LIST_LISTENER = + (SID_LIST = + (SID_DESC = + (SID_NAME = PLSExtProc) + (ORACLE_HOME = $ORACLE_HOME) + (PROGRAM = extproc) + ) + ) + + LISTENER = + (DESCRIPTION_LIST = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + ) + ) + + DEFAULT_SERVICE_LISTENER = (XE)" > $ORACLE_HOME/network/admin/listener.ora + +# TNS Names.ora + echo "# tnsnames.ora Network Configuration File: + +XE = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = XE) + ) + ) + +LISTENER_XE = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + +XEPDB1 = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = XEPDB1) + ) + ) + +EXTPROC_CONNECTION_DATA = + (DESCRIPTION = + (ADDRESS_LIST = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) + ) + (CONNECT_DATA = + (SID = PLSExtProc) + (PRESENTATION = RO) + ) + ) +" > $ORACLE_HOME/network/admin/tnsnames.ora + + # Move database operational files to oradata + moveFiles; +} + +############# MAIN ################ + +# Set SIGTERM handler +trap _term SIGTERM + +# Set SIGKILL handler +trap _kill SIGKILL + +# Check whether database already exists +if [ -d $ORACLE_BASE/oradata/$ORACLE_SID ]; then + symLinkFiles; + # Make sure audit file destination exists + if [ ! -d $ORACLE_BASE/admin/$ORACLE_SID/adump ]; then + su -p oracle -c "mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump" + fi; +fi; + +/etc/init.d/oracle-xe-18c start | grep -qc "Oracle Database is not configured" +if [ "$?" == "0" ]; then + # Check whether container has enough memory + if [ `df -Pk /dev/shm | tail -n 1 | awk '{print $2}'` -lt 1048576 ]; then + echo "Error: The container doesn't have enough memory allocated." + echo "A database XE container needs at least 1 GB of shared memory (/dev/shm)." + echo "You currently only have $((`df -Pk /dev/shm | tail -n 1 | awk '{print $2}'`/1024)) MB allocated to the container." + exit 1; + fi; + + # Create database + createDB; + + # Execute custom provided setup scripts + runUserScripts $ORACLE_BASE/scripts/setup +fi; + +# Check whether database is up and running +$ORACLE_BASE/$CHECK_DB_FILE +if [ $? -eq 0 ]; then + echo "#########################" + echo "DATABASE IS READY TO USE!" + echo "#########################" + + # Execute custom provided startup scripts + runUserScripts $ORACLE_BASE/scripts/startup + +else + echo "#####################################" + echo "########### E R R O R ###############" + echo "DATABASE SETUP WAS NOT SUCCESSFUL!" + echo "Please check output for further info!" + echo "########### E R R O R ###############" + echo "#####################################" +fi; + +echo "The following output is now a tail of the alert.log:" +tail -f $ORACLE_BASE/diag/rdbms/*/*/trace/alert*.log & +childPID=$! +wait $childPID diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/setPassword.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/setPassword.sh new file mode 100644 index 0000000000..7fd6dae7b1 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/setPassword.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +ORACLE_PWD=$1 + +su -p oracle -c "sqlplus / as sysdba << EOF + ALTER USER SYS IDENTIFIED BY "$ORACLE_PWD"; + ALTER USER SYSTEM IDENTIFIED BY "$ORACLE_PWD"; + exit; +EOF" + diff --git a/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh b/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh index 49b940e803..c84a8613bc 100755 --- a/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh @@ -112,6 +112,9 @@ elif [ $EXPRESS -eq 1 ]; then elif [ "$VERSION" == "11.2.0.2" ]; then EDITION="xe" DOCKEROPS="--shm-size=1G $DOCKEROPS"; + elif [ "$VERSION" == "18.4.0" ]; then + EDITION="xe" + DOCKEROPS="--shm-size=1G $DOCKEROPS"; else echo "Version $VERSION does not have Express Edition available."; exit 1; From 50ba51e1b7dd5a2324a205a8df1a16e694ea3b8c Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Mon, 22 Oct 2018 18:18:09 -0300 Subject: [PATCH 04/31] removed previous build scripts using exadata binary download --- .../dockerfiles/18.0.0.0/Checksum.ee | 1 - .../dockerfiles/18.0.0.0/Dockerfile.ee | 92 -------- .../dockerfiles/18.0.0.0/checkDBStatus.sh | 40 ---- .../dockerfiles/18.0.0.0/checkSpace.sh | 23 -- .../dockerfiles/18.0.0.0/createDB.sh | 86 -------- .../dockerfiles/18.0.0.0/db_inst.rsp | 125 ----------- .../dockerfiles/18.0.0.0/dbca.rsp.tmpl | 204 ------------------ .../dockerfiles/18.0.0.0/exadata_wrap.c | 4 - .../dockerfiles/18.0.0.0/installDBBinaries.sh | 74 ------- OracleDatabase/dockerfiles/18.0.0.0/ldflags | 1 - .../dockerfiles/18.0.0.0/libexadata_wrap.so | Bin 7888 -> 0 bytes .../dockerfiles/18.0.0.0/runOracle.sh | 197 ----------------- .../dockerfiles/18.0.0.0/runUserScripts.sh | 39 ---- .../dockerfiles/18.0.0.0/setPassword.sh | 26 --- .../dockerfiles/18.0.0.0/setupLinuxEnv.sh | 25 --- .../dockerfiles/18.0.0.0/startDB.sh | 28 --- 16 files changed, 965 deletions(-) delete mode 100644 OracleDatabase/dockerfiles/18.0.0.0/Checksum.ee delete mode 100644 OracleDatabase/dockerfiles/18.0.0.0/Dockerfile.ee delete mode 100755 OracleDatabase/dockerfiles/18.0.0.0/checkDBStatus.sh delete mode 100755 OracleDatabase/dockerfiles/18.0.0.0/checkSpace.sh delete mode 100755 OracleDatabase/dockerfiles/18.0.0.0/createDB.sh delete mode 100644 OracleDatabase/dockerfiles/18.0.0.0/db_inst.rsp delete mode 100644 OracleDatabase/dockerfiles/18.0.0.0/dbca.rsp.tmpl delete mode 100644 OracleDatabase/dockerfiles/18.0.0.0/exadata_wrap.c delete mode 100755 OracleDatabase/dockerfiles/18.0.0.0/installDBBinaries.sh delete mode 100644 OracleDatabase/dockerfiles/18.0.0.0/ldflags delete mode 100755 OracleDatabase/dockerfiles/18.0.0.0/libexadata_wrap.so delete mode 100755 OracleDatabase/dockerfiles/18.0.0.0/runOracle.sh delete mode 100755 OracleDatabase/dockerfiles/18.0.0.0/runUserScripts.sh delete mode 100755 OracleDatabase/dockerfiles/18.0.0.0/setPassword.sh delete mode 100755 OracleDatabase/dockerfiles/18.0.0.0/setupLinuxEnv.sh delete mode 100755 OracleDatabase/dockerfiles/18.0.0.0/startDB.sh diff --git a/OracleDatabase/dockerfiles/18.0.0.0/Checksum.ee b/OracleDatabase/dockerfiles/18.0.0.0/Checksum.ee deleted file mode 100644 index 70c55b5935..0000000000 --- a/OracleDatabase/dockerfiles/18.0.0.0/Checksum.ee +++ /dev/null @@ -1 +0,0 @@ -d9bdce823cd73a220aea3bf4fed4ea16 V974953-01.zip diff --git a/OracleDatabase/dockerfiles/18.0.0.0/Dockerfile.ee b/OracleDatabase/dockerfiles/18.0.0.0/Dockerfile.ee deleted file mode 100644 index 834fe1f38d..0000000000 --- a/OracleDatabase/dockerfiles/18.0.0.0/Dockerfile.ee +++ /dev/null @@ -1,92 +0,0 @@ -# LICENSE UPL 1.0 -# -# Copyright (c) 1982-2017 Oracle and/or its affiliates. All rights reserved. -# -# ORACLE DOCKERFILES PROJECT -# -------------------------- -# This is the Dockerfile for Oracle Database 12c Release 2 Enterprise Edition -# -# REQUIRED FILES TO BUILD THIS IMAGE -# ---------------------------------- -# (1) linuxx64_12201_database.zip -# Download Oracle Database 12c Release 12 Enterprise Edition for Linux x64 -# from http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html -# -# HOW TO BUILD THIS IMAGE -# ----------------------- -# Put all downloaded files in the same directory as this Dockerfile -# Run: -# $ docker build -t oracle/database:12.2.0.1-ee . -# -# Pull base image -# --------------- -FROM oraclelinux:7-slim - -# Maintainer -# ---------- -MAINTAINER Gerald Venzl - -# Environment variables required for this build (do NOT change) -# ------------------------------------------------------------- -ENV ORACLE_BASE=/scratch/app/user \ - ORACLE_HOME=/scratch/app/user/product/18.0.0/dbhome_1 \ - INSTALL_FILE_1="V974953-01.zip" \ - INSTALL_RSP="db_inst.rsp" \ - CONFIG_RSP="dbca.rsp.tmpl" \ - PWD_FILE="setPassword.sh" \ - RUN_FILE="runOracle.sh" \ - START_FILE="startDB.sh" \ - CREATE_DB_FILE="createDB.sh" \ - SETUP_LINUX_FILE="setupLinuxEnv.sh" \ - CHECK_SPACE_FILE="checkSpace.sh" \ - CHECK_DB_FILE="checkDBStatus.sh" \ - USER_SCRIPTS_FILE="runUserScripts.sh" \ - INSTALL_DB_BINARIES_FILE="installDBBinaries.sh" - -# Use second ENV so that variable get substituted -ENV INSTALL_DIR=$ORACLE_BASE/install \ - PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ - LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ - CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib - -# Copy binaries -# ------------- -COPY $INSTALL_FILE_1 $INSTALL_RSP $SETUP_LINUX_FILE $CHECK_SPACE_FILE $INSTALL_DB_BINARIES_FILE $INSTALL_DIR/ -COPY $RUN_FILE $START_FILE $CREATE_DB_FILE $CONFIG_RSP $PWD_FILE $CHECK_DB_FILE $USER_SCRIPTS_FILE $ORACLE_BASE/ - -RUN chmod ug+x $INSTALL_DIR/*.sh && \ - sync && \ - $INSTALL_DIR/$CHECK_SPACE_FILE && \ - $INSTALL_DIR/$SETUP_LINUX_FILE - -# Install DB software binaries -USER oracle -RUN $INSTALL_DIR/$INSTALL_DB_BINARIES_FILE EE - -USER root -RUN sed -i -e "s|ORACLE_OWNER=user|ORACLE_OWNER=oracle|g" $ORACLE_HOME/install/utl/rootmacro.sh && \ - sed -i -e "s|OSDBA_GROUP=svrtech|OSDBA_GROUP=dba|g" $ORACLE_HOME/install/utl/rootmacro.sh && \ - $ORACLE_HOME/root.sh && \ - rm -rf $INSTALL_DIR - -USER oracle -# install wrapper to avoid exadata check environment -COPY libexadata_wrap.so ldflags exadata_wrap.c $ORACLE_HOME/lib/ - -# fix lsnrctl and others binary files with size 0 and relink with wrapper function -RUN cd $ORACLE_HOME/network/lib && make -f ins_net_server.mk install && \ - cd $ORACLE_HOME/network/lib && make -f ins_net_client.mk install && \ - cd $ORACLE_HOME/plsql/lib && make -f ins_plsql.mk install && \ - cd $ORACLE_HOME/ctx/lib && make -f ins_ctx.mk install && \ - cd $ORACLE_HOME/rdbms/lib && make -f ins_rdbms.mk install && \ - make -f ins_rdbms.mk irman itkprof iplshprof iextproc idrdactl idrdalsnr idrdaproc idg4pwd idg4odbc - -WORKDIR /home/oracle - -VOLUME ["$ORACLE_BASE/oradata"] -EXPOSE 1521 5500 -HEALTHCHECK --interval=1m --start-period=5m \ - CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1 - -# Define default command to start Oracle Database. -CMD exec $ORACLE_BASE/$RUN_FILE diff --git a/OracleDatabase/dockerfiles/18.0.0.0/checkDBStatus.sh b/OracleDatabase/dockerfiles/18.0.0.0/checkDBStatus.sh deleted file mode 100755 index 37f76010b5..0000000000 --- a/OracleDatabase/dockerfiles/18.0.0.0/checkDBStatus.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -# LICENSE UPL 1.0 -# -# Copyright (c) 1982-2017 Oracle and/or its affiliates. All rights reserved. -# -# Since: May, 2017 -# Author: gerald.venzl@oracle.com -# Description: Checks the status of Oracle Database. -# Return codes: 0 = Database is open and ready to use -# 1 = Database is not open -# 2 = Sql Plus execution failed -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# - -ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`" -ORACLE_PDB="`ls -dl $ORACLE_BASE/oradata/$ORACLE_SID/*/ | grep -v pdbseed | awk '{print $9}' | cut -d/ -f6`" -ORAENV_ASK=NO -source oraenv - -# Check Oracle DB status and store it in status -status=`sqlplus -s / as sysdba << EOF - set heading off; - set pagesize 0; - select status from v\\$instance; - exit; -EOF` - -# Store return code from SQL*Plus -ret=$? - -# SQL Plus execution was successful and database is open -if [ $ret -eq 0 ] && [ "$status" = "OPEN" ]; then - exit 0; -# Database is not open -elif [ "$status" != "OPEN" ]; then - exit 1; -# SQL Plus execution failed -else - exit 2; -fi; diff --git a/OracleDatabase/dockerfiles/18.0.0.0/checkSpace.sh b/OracleDatabase/dockerfiles/18.0.0.0/checkSpace.sh deleted file mode 100755 index 4d5d5d4c67..0000000000 --- a/OracleDatabase/dockerfiles/18.0.0.0/checkSpace.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# LICENSE UPL 1.0 -# -# Copyright (c) 1982-2017 Oracle and/or its affiliates. All rights reserved. -# -# Since: January, 2017 -# Author: gerald.venzl@oracle.com -# Description: Checks the available space of the system. -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# - -REQUIRED_SPACE_GB=15 -AVAILABLE_SPACE_GB=`df -B 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 GB are available." - echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - exit 1; -fi; diff --git a/OracleDatabase/dockerfiles/18.0.0.0/createDB.sh b/OracleDatabase/dockerfiles/18.0.0.0/createDB.sh deleted file mode 100755 index a31ff646e2..0000000000 --- a/OracleDatabase/dockerfiles/18.0.0.0/createDB.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash -# LICENSE UPL 1.0 -# -# Copyright (c) 1982-2016 Oracle and/or its affiliates. All rights reserved. -# -# Since: November, 2016 -# Author: gerald.venzl@oracle.com -# Description: Creates an Oracle Database based on following parameters: -# $ORACLE_SID: The Oracle SID and CDB name -# $ORACLE_PDB: The PDB name -# $ORACLE_PWD: The Oracle password -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# - -set -e - -# Check whether ORACLE_SID is passed on -export ORACLE_SID=${1:-ORCLCDB} - -# Check whether ORACLE_PDB is passed on -export ORACLE_PDB=${2:-ORCLPDB1} - -# Auto generate ORACLE PWD if not passed on -export ORACLE_PWD=${3:-"`openssl rand -base64 8`1"} -echo "ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: $ORACLE_PWD"; - -# Replace place holders in response file -cp $ORACLE_BASE/$CONFIG_RSP $ORACLE_BASE/dbca.rsp -sed -i -e "s|###ORACLE_SID###|$ORACLE_SID|g" $ORACLE_BASE/dbca.rsp -sed -i -e "s|###ORACLE_PDB###|$ORACLE_PDB|g" $ORACLE_BASE/dbca.rsp -sed -i -e "s|###ORACLE_PWD###|$ORACLE_PWD|g" $ORACLE_BASE/dbca.rsp -sed -i -e "s|###ORACLE_CHARACTERSET###|$ORACLE_CHARACTERSET|g" $ORACLE_BASE/dbca.rsp - -# If there is greater than 8 CPUs default back to dbca memory calculations -# dbca will automatically pick 40% of available memory for Oracle DB -# The minimum of 2G is for small environments to guarantee that Oracle has enough memory to function -# However, bigger environment can and should use more of the available memory -# This is due to Github Issue #307 -if [ `nproc` -gt 8 ]; then - sed -i -e "s|totalMemory=2048||g" $ORACLE_BASE/dbca.rsp -fi; - -# Create network related config files (sqlnet.ora, tnsnames.ora, listener.ora) -mkdir -p $ORACLE_HOME/network/admin -echo "NAME.DIRECTORY_PATH= (TNSNAMES, EZCONNECT, HOSTNAME)" > $ORACLE_HOME/network/admin/sqlnet.ora - -# Listener.ora -echo "LISTENER = -(DESCRIPTION_LIST = - (DESCRIPTION = - (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) - (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) - ) -) - -DEDICATED_THROUGH_BROKER_LISTENER=ON -DIAG_ADR_ENABLED = off -" > $ORACLE_HOME/network/admin/listener.ora - -# Start LISTENER and run DBCA -lsnrctl start && -dbca -silent -createDatabase -responseFile $ORACLE_BASE/dbca.rsp || - cat /scratch/app/user/cfgtoollogs/dbca/$ORACLE_SID/$ORACLE_SID.log || - cat /scratch/app/user/cfgtoollogs/dbca/$ORACLE_SID.log - -echo "$ORACLE_SID=localhost:1521/$ORACLE_SID" > $ORACLE_HOME/network/admin/tnsnames.ora -echo "$ORACLE_PDB= -(DESCRIPTION = - (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) - (CONNECT_DATA = - (SERVER = DEDICATED) - (SERVICE_NAME = $ORACLE_PDB) - ) -)" >> $ORACLE_HOME/network/admin/tnsnames.ora - -# Remove second control file, make PDB auto open -sqlplus / as sysdba << EOF - ALTER SYSTEM SET control_files='$ORACLE_BASE/oradata/$ORACLE_SID/control01.ctl' scope=spfile; - ALTER SYSTEM SET local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))'; - ALTER PLUGGABLE DATABASE $ORACLE_PDB SAVE STATE; - exit; -EOF - -# Remove temporary response file -rm $ORACLE_BASE/dbca.rsp diff --git a/OracleDatabase/dockerfiles/18.0.0.0/db_inst.rsp b/OracleDatabase/dockerfiles/18.0.0.0/db_inst.rsp deleted file mode 100644 index e953790f6d..0000000000 --- a/OracleDatabase/dockerfiles/18.0.0.0/db_inst.rsp +++ /dev/null @@ -1,125 +0,0 @@ -#################################################################### -## Copyright(c) Oracle Corporation 1998,2017. 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. -#------------------------------------------------------------------------------- -oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0 - -#------------------------------------------------------------------------------- -# Specify the installation option. -# It can be one of the following: -# - INSTALL_DB_SWONLY -# - INSTALL_DB_AND_CONFIG -# - UPGRADE_DB -#------------------------------------------------------------------------------- -oracle.install.option=INSTALL_DB_SWONLY - -#------------------------------------------------------------------------------- -# Specify the Unix group to be set for the inventory directory. -#------------------------------------------------------------------------------- -UNIX_GROUP_NAME=dba - -#------------------------------------------------------------------------------- -# Specify the location which holds the inventory files. -# This is an optional parameter if installing on -# Windows based Operating System. -#------------------------------------------------------------------------------- -INVENTORY_LOCATION=###ORACLE_BASE###/oraInventory -#------------------------------------------------------------------------------- -# Specify the complete path of the Oracle Home. -#------------------------------------------------------------------------------- -ORACLE_HOME=###ORACLE_HOME### - -#------------------------------------------------------------------------------- -# Specify the complete path of the Oracle Base. -#------------------------------------------------------------------------------- -ORACLE_BASE=###ORACLE_BASE### - -#------------------------------------------------------------------------------- -# Specify the installation edition of the component. -# -# The value should contain only one of these choices. -# - EE : Enterprise Edition -# - SE2 : Standard Edition 2 -#------------------------------------------------------------------------------- -oracle.install.db.InstallEdition=###ORACLE_EDITION### - -############################################################################### -# # -# PRIVILEGED OPERATING SYSTEM GROUPS # -# ------------------------------------------ # -# Provide values for the OS groups to which SYSDBA and SYSOPER privileges # -# needs to be granted. If the install is being performed as a member of the # -# group "dba", then that will be used unless specified otherwise below. # -# # -# The value to be specified for OSDBA and OSOPER group is only for UNIX based # -# Operating System. # -# # -############################################################################### - -#------------------------------------------------------------------------------ -# The OSDBA_GROUP is the OS group which is to be granted SYSDBA privileges. -#------------------------------------------------------------------------------- -oracle.install.db.OSDBA_GROUP=dba - -#------------------------------------------------------------------------------ -# The OSOPER_GROUP is the OS group which is to be granted SYSOPER privileges. -# The value to be specified for OSOPER group is optional. -#------------------------------------------------------------------------------ -oracle.install.db.OSOPER_GROUP=dba - -#------------------------------------------------------------------------------ -# The OSBACKUPDBA_GROUP is the OS group which is to be granted SYSBACKUP privileges. -#------------------------------------------------------------------------------ -oracle.install.db.OSBACKUPDBA_GROUP=dba - -#------------------------------------------------------------------------------ -# The OSDGDBA_GROUP is the OS group which is to be granted SYSDG privileges. -#------------------------------------------------------------------------------ -oracle.install.db.OSDGDBA_GROUP=dba - -#------------------------------------------------------------------------------ -# The OSKMDBA_GROUP is the OS group which is to be granted SYSKM privileges. -#------------------------------------------------------------------------------ -oracle.install.db.OSKMDBA_GROUP=dba - -#------------------------------------------------------------------------------ -# The OSRACDBA_GROUP is the OS group which is to be granted SYSRAC privileges. -#------------------------------------------------------------------------------ -oracle.install.db.OSRACDBA_GROUP=dba - -#------------------------------------------------------------------------------ -# Specify whether to enable the user to set the password for -# My Oracle Support credentials. The value can be either true or false. -# If left blank it will be assumed to be false. -# -# Example : SECURITY_UPDATES_VIA_MYORACLESUPPORT=true -#------------------------------------------------------------------------------ -SECURITY_UPDATES_VIA_MYORACLESUPPORT=false - -#------------------------------------------------------------------------------ -# Specify whether user doesn't want to configure Security Updates. -# The value for this variable should be true if you don't want to configure -# Security Updates, false otherwise. -# -# The value can be either true or false. If left blank it will be assumed -# to be true. -# -# Example : DECLINE_SECURITY_UPDATES=false -#------------------------------------------------------------------------------ -DECLINE_SECURITY_UPDATES=true \ No newline at end of file diff --git a/OracleDatabase/dockerfiles/18.0.0.0/dbca.rsp.tmpl b/OracleDatabase/dockerfiles/18.0.0.0/dbca.rsp.tmpl deleted file mode 100644 index 5a3eebc67d..0000000000 --- a/OracleDatabase/dockerfiles/18.0.0.0/dbca.rsp.tmpl +++ /dev/null @@ -1,204 +0,0 @@ -############################################################################## -## ## -## DBCA response file ## -## ------------------ ## -## Copyright(c) Oracle Corporation 1998,2017. 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_v12.2.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=###ORACLE_SID### - -#----------------------------------------------------------------------------- -# Name : sid -# Datatype : String -# Description : System identifier (SID) of the database -# Valid values : Check Oracle12c Administrator's Guide -# Default value : specified in GDBNAME -# Mandatory : No -#----------------------------------------------------------------------------- -sid=###ORACLE_SID### - -#----------------------------------------------------------------------------- -# Name : createAsContainerDatabase -# Datatype : boolean -# Description : flag to create database as container database -# Valid values : Check Oracle12c Administrator's Guide -# Default value : false -# Mandatory : No -#----------------------------------------------------------------------------- -createAsContainerDatabase=true - -#----------------------------------------------------------------------------- -# Name : numberOfPDBs -# Datatype : Number -# Description : Specify the number of pdb to be created -# Valid values : 0 to 4094 -# Default value : 0 -# Mandatory : No -#----------------------------------------------------------------------------- -numberOfPDBs=1 - -#----------------------------------------------------------------------------- -# Name : pdbName -# Datatype : String -# Description : Specify the pdbname/pdbanme prefix if one or more pdb need to be created -# Valid values : Check Oracle12c Administrator's Guide -# Default value : None -# Mandatory : No -#----------------------------------------------------------------------------- -pdbName=###ORACLE_PDB### - -#----------------------------------------------------------------------------- -# Name : pdbAdminPassword -# Datatype : String -# Description : PDB Administrator user password -# Valid values : Check Oracle12c Administrator's Guide -# Default value : None -# Mandatory : No -#----------------------------------------------------------------------------- -pdbAdminPassword=###ORACLE_PWD### - -#----------------------------------------------------------------------------- -# Name : templateName -# Datatype : String -# Description : Name of the template -# Valid values : Template file name -# Default value : None -# Mandatory : Yes -#----------------------------------------------------------------------------- -templateName=General_Purpose.dbc - -#----------------------------------------------------------------------------- -# Name : sysPassword -# Datatype : String -# Description : Password for SYS user -# Valid values : Check Oracle12c Administrator's Guide -# Default value : None -# Mandatory : Yes -#----------------------------------------------------------------------------- -sysPassword=###ORACLE_PWD### - -#----------------------------------------------------------------------------- -# Name : systemPassword -# Datatype : String -# Description : Password for SYSTEM user -# Valid values : Check Oracle12c Administrator's Guide -# Default value : None -# Mandatory : Yes -#----------------------------------------------------------------------------- -systemPassword=###ORACLE_PWD### - -#----------------------------------------------------------------------------- -# Name : emConfiguration -# Datatype : String -# Description : Enterprise Manager Configuration Type -# Valid values : CENTRAL|DBEXPRESS|BOTH|NONE -# Default value : NONE -# Mandatory : No -#----------------------------------------------------------------------------- -emConfiguration=DBEXPRESS - -#----------------------------------------------------------------------------- -# Name : emExpressPort -# Datatype : Number -# Description : Enterprise Manager Configuration Type -# Valid values : Check Oracle12c Administrator's Guide -# Default value : NONE -# Mandatory : No, will be picked up from DBEXPRESS_HTTPS_PORT env variable -# or auto generates a free port between 5500 and 5599 -#----------------------------------------------------------------------------- -emExpressPort=5500 - -#----------------------------------------------------------------------------- -# Name : dbsnmpPassword -# Datatype : String -# Description : Password for DBSNMP user -# Valid values : Check Oracle12c Administrator's Guide -# Default value : None -# Mandatory : Yes, if emConfiguration is specified or -# the value of runCVUChecks is TRUE -#----------------------------------------------------------------------------- -dbsnmpPassword=###ORACLE_PWD### - -#----------------------------------------------------------------------------- -# Name : characterSet -# Datatype : String -# Description : Character set of the database -# Valid values : Check Oracle12c National Language Support Guide -# Default value : "US7ASCII" -# Mandatory : NO -#----------------------------------------------------------------------------- -characterSet=###ORACLE_CHARACTERSET### - -#----------------------------------------------------------------------------- -# Name : nationalCharacterSet -# Datatype : String -# Description : National Character set of the database -# Valid values : "UTF8" or "AL16UTF16". For details, check Oracle12c National Language Support Guide -# Default value : "AL16UTF16" -# Mandatory : No -#----------------------------------------------------------------------------- -nationalCharacterSet=AL16UTF16 - -#----------------------------------------------------------------------------- -# Name : initParams -# Datatype : String -# Description : comma separated list of name=value pairs. Overrides initialization parameters defined in templates -# Default value : None -# Mandatory : NO -#----------------------------------------------------------------------------- -initParams=audit_trail=none,audit_sys_operations=false - -#----------------------------------------------------------------------------- -# 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=LISTENER - -#----------------------------------------------------------------------------- -# Name : automaticMemoryManagement -# Datatype : Boolean -# Description : flag to indicate Automatic Memory Management is used -# Valid values : TRUE/FALSE -# Default value : TRUE -# Mandatory : NO -#----------------------------------------------------------------------------- -automaticMemoryManagement=FALSE - -#----------------------------------------------------------------------------- -# Name : totalMemory -# Datatype : String -# Description : total memory in MB to allocate to Oracle -# Valid values : -# Default value : -# Mandatory : NO -#----------------------------------------------------------------------------- -totalMemory=2048 \ No newline at end of file diff --git a/OracleDatabase/dockerfiles/18.0.0.0/exadata_wrap.c b/OracleDatabase/dockerfiles/18.0.0.0/exadata_wrap.c deleted file mode 100644 index 5b70a9d271..0000000000 --- a/OracleDatabase/dockerfiles/18.0.0.0/exadata_wrap.c +++ /dev/null @@ -1,4 +0,0 @@ -long __wrap_ksz_exadata_feature_on(){ - return 1; -} - diff --git a/OracleDatabase/dockerfiles/18.0.0.0/installDBBinaries.sh b/OracleDatabase/dockerfiles/18.0.0.0/installDBBinaries.sh deleted file mode 100755 index 34f7bae194..0000000000 --- a/OracleDatabase/dockerfiles/18.0.0.0/installDBBinaries.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash -# LICENSE UPL 1.0 -# -# Copyright (c) 1982-2016 Oracle and/or its affiliates. All rights reserved. -# -# Since: December, 2016 -# Author: gerald.venzl@oracle.com -# Description: Sets up the unix environment for DB installation. -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# - -EDITION=$1 - -# 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" -a "$EDITION" != "SE2" ]; then - echo "ERROR: Wrong edition has been passed on!" - echo "Edition $EDITION is no a valid edition!" - exit 1; -fi; - -# Check whether ORACLE_BASE is set -if [ "$ORACLE_BASE" == "" ]; then - echo "ERROR: ORACLE_BASE has not been set!" - echo "You have to have the ORACLE_BASE environment variable set to a valid value!" - exit 1; -fi; - -# Check whether ORACLE_HOME is set -if [ "$ORACLE_HOME" == "" ]; then - echo "ERROR: ORACLE_HOME has not been set!" - echo "You have to have the ORACLE_HOME environment variable set to a valid value!" - exit 1; -fi; - - -# Replace place holders -# --------------------- -sed -i -e "s|###ORACLE_EDITION###|$EDITION|g" $INSTALL_DIR/$INSTALL_RSP && \ -sed -i -e "s|###ORACLE_BASE###|$ORACLE_BASE|g" $INSTALL_DIR/$INSTALL_RSP && \ -sed -i -e "s|###ORACLE_HOME###|$ORACLE_HOME|g" $INSTALL_DIR/$INSTALL_RSP - -# Install Oracle binaries -cd $INSTALL_DIR && \ -unzip -q $INSTALL_FILE_1 -d $ORACLE_HOME && \ -rm $INSTALL_FILE_1 && \ -cd $HOME - -# Remove not needed components -rm -rf $ORACLE_HOME/apex && \ -rm -rf $ORACLE_HOME/jdbc && \ -# ZDLRA installer files -rm -rf $ORACLE_HOME/lib/ra*.zip && \ -rm -rf $ORACLE_HOME/ords && \ -rm -rf $ORACLE_HOME/sqldeveloper && \ -rm -rf $ORACLE_HOME/ucp && \ -# OUI backup -rm -rf $ORACLE_HOME/inventory/backup/* && \ -# Network tools help -rm -rf $ORACLE_HOME/network/tools/help/mgr/help_* && \ -# Temp location -rm -rf /tmp/* && \ -# Database files directory -rm -rf $INSTALL_DIR/database - -# Link password reset file to home directory -ln -s $ORACLE_BASE/$PWD_FILE $HOME/ diff --git a/OracleDatabase/dockerfiles/18.0.0.0/ldflags b/OracleDatabase/dockerfiles/18.0.0.0/ldflags deleted file mode 100644 index 65ce476db4..0000000000 --- a/OracleDatabase/dockerfiles/18.0.0.0/ldflags +++ /dev/null @@ -1 +0,0 @@ --ln18 -lncrypt18 -lnbeq18 -lntcp18 -lntcps18 -lnus18 -lntmq18 -lmql1 -lipc1 -lntwss18 -lnldap18 -lldapclnt18 -lnhost18 -lntns18 -lnoname18 -lngsmshd18 --wrap=ksz_exadata_feature_on -lexadata_wrap diff --git a/OracleDatabase/dockerfiles/18.0.0.0/libexadata_wrap.so b/OracleDatabase/dockerfiles/18.0.0.0/libexadata_wrap.so deleted file mode 100755 index 64063b9655be8254b412736ab0d12014be025366..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7888 zcmeHMU2Ggz6~61WI4IXiFj?KuPgg!P4t(0WzQ~GM&0WY(VshcKY2Z zI+d_rZ_f|L#|>edY0cuDW-A`-kUmrT_HHzvvk!g(j3F506JS1J8>QqtETf z;dT?euL(X*_$TOz()S6-h`U60#;B`$UE$kBPXvEO<5B$z;oHP!@w{Hl&DtBU*S47P zZddpgaUr_+Ql2Q3iqiA#vM;5Oxnj;2a+a8oM<$L*$1S@ja-Q#&Cyov0OGS6Wp3b{L zU3`t4nX}n}ozI;i#iOU>xb`rdw>{7Ggp{Yt_DT7qcSgE%wqyIG@7jK)?8;J6S4Ck6*_8==T@6q47)vhkUKWP##&Wb~I4=dI;w|4q6W3csIH3W(W^&+0_t^F0y{7 z-Y@)~g#8;KJgjdme2}u9Y5UqHLs(BO`EAReBtvWAXQ@lsY}#gD_2s3f1Rpc zXMdzW80g<0(!aQxv=)DAUHs!iR^p2F&T2&&-}SqVY{s3PMsAG?Ra3%{w{TV zu+AZRo+5vnS#L0%`BuyD)(xZNh~;%!pMmumSf7FQ8Caiz|AQGo{DpW6LqeRzUtcDU z>6rLlz=Zf-U)ySN?%hFk?H;#N%lLNg(6Z2R9e;0`Q2+N2t0k6i>V^@MWp%KH*b4W; zO{`3GF<=y-2ZU>CEk@Jv8Dd2h1CT1>1${jgAJ_KXx?$j19WS|@WSvgy_3$DyM zWCJPClydl_X1S#LVi$5V)P9M)(vPW{qN|cHXG(>FTlAxo7m<^6 zH$uK4T$Q9q7W=&(PYUewdc0NOeW=IV1ol-uzCmC=*5mC0`??-a3GDxRyzySo^+~Zw zoW+Y8GDyghXBWEv*v}*iB@r|x`qTLK6ewM zvHyJDw#3Y{sqyQPbs5xn^t^ve`CscN&Z}94H_qpI?FZiv5*2ZBDG{?SZxS9iu4dzX zOZiEQZXCeMyAbawym215I?n&^m44&;{#oIT>-$fIH|C3y)X_xD`rb{rK{iq9B|I+g z^dRBeV)p+~6F-kAKaF{+FK9fPrgY{(I z^Vg0kb4WY#V^oQ*s5#p8p=jtr9qW$B=Oc<)FUX#k4DBP1!~YAHxN}5UH}oI-Ac!;8>=Ex><4Gav4p{9M_Tay!n(+8*aiMPD zKiR)e_UsG&$9KM4+oK(HKo19^Sf&zVJvAgKzz#e)q9-Ke?e#Nyv!2ehyx)NzHB8q Date: Tue, 23 Oct 2018 14:52:12 -0300 Subject: [PATCH 05/31] created oracle user home --- .../SingleInstance/dockerfiles/18.4.0/Dockerfile.xe | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe index dd6bf98e1b..48eeb343b8 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe @@ -59,8 +59,8 @@ RUN cd $INSTALL_DIR && \ mkdir -p $ORACLE_BASE/scripts/setup && \ mkdir $ORACLE_BASE/scripts/startup && \ ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d && \ - mkdir $ORACLE_BASE/oradata && \ - chown oracle:oinstall $ORACLE_BASE/oradata && \ + mkdir -p $ORACLE_BASE/oradata /home/oracle && \ + chown -R oracle:oinstall $ORACLE_BASE/oradata /home/oracle && \ mv $INSTALL_DIR/$RUN_FILE $ORACLE_BASE/ && \ mv $INSTALL_DIR/$PWD_FILE $ORACLE_BASE/ && \ mv $INSTALL_DIR/$CHECK_DB_FILE $ORACLE_BASE/ && \ From d347ad9d479daab62d8504fa8957bfadbe54413e Mon Sep 17 00:00:00 2001 From: Gerald Venzl Date: Thu, 8 Nov 2018 10:58:28 -0300 Subject: [PATCH 06/31] Update OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh Co-Authored-By: marcelo-ochoa --- OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh index b9106c2195..bf339993ba 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh @@ -95,7 +95,7 @@ function createDB { export ORACLE_PWD=${ORACLE_PWD:-"`openssl rand -hex 8`"} echo "ORACLE PASSWORD FOR SYS AND SYSTEM: $ORACLE_PWD"; - (echo "$ORACLE_PWD"; echo "$ORACLE_PWD";) | /etc/init.d/oracle-xe-18c configure + (echo "$ORACLE_PWD"; echo "$ORACLE_PWD";) | /etc/init.d/oracle-xe-18c configure > /tmp/XE_DatabaseCreation.log # Listener echo "# listener.ora Network Configuration File: From 9c8bb565bb8f416afc6c6d84e6ee087e0f718b54 Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Thu, 8 Nov 2018 11:10:38 -0300 Subject: [PATCH 07/31] removed /etc/sysconfig/oracle-xe-18c.conf from dbconfig dir --- .../SingleInstance/dockerfiles/18.4.0/runOracle.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh index bf339993ba..d49602a064 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh @@ -43,7 +43,6 @@ function moveFiles { su -p oracle -c "mv $ORACLE_HOME/dbs/orapw$ORACLE_SID $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" su -p oracle -c "mv $ORACLE_HOME/network/admin/listener.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" su -p oracle -c "mv $ORACLE_HOME/network/admin/tnsnames.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" - mv /etc/sysconfig/oracle-xe-18c.conf $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ cp /etc/oratab $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ @@ -69,10 +68,6 @@ function symLinkFiles { ln -sf $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/tnsnames.ora $ORACLE_HOME/network/admin/tnsnames.ora fi; - if [ ! -L /etc/sysconfig/oracle-xe-18c.conf ]; then - ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/oracle-xe-18c.conf /etc/sysconfig/oracle-xe-18c.conf - fi; - cp $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/oratab /etc/oratab } From ba382e75ec6ad82e54a0085c2baacd75e095ac08 Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Tue, 13 Nov 2018 11:58:06 -0300 Subject: [PATCH 08/31] change requested by gerald --- .../dockerfiles/18.3.0/checkDBStatus.sh | 19 ++++++++---------- .../dockerfiles/18.4.0/oracle-xe-18c.conf | 4 ++-- .../dockerfiles/18.4.0/runOracle.sh | 8 -------- .../dockerfiles/18.4.0/setPassword.sh | 20 +++++++++++++++++-- .../dockerfiles/buildDockerImage.sh | 1 - 5 files changed, 28 insertions(+), 24 deletions(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/checkDBStatus.sh index b01e768981..df473ab922 100755 --- a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/checkDBStatus.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/checkDBStatus.sh @@ -1,38 +1,35 @@ #!/bin/bash # LICENSE UPL 1.0 # -# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1982-2017 Oracle and/or its affiliates. All rights reserved. # # Since: May, 2017 # Author: gerald.venzl@oracle.com # Description: Checks the status of Oracle Database. -# Return codes: 0 = PDB is open and ready to use -# 1 = PDB is not open +# Return codes: 0 = Database is open and ready to use +# 1 = Database is not open # 2 = Sql Plus execution failed # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. # +POSITIVE_RETURN="OPEN" ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`" -ORACLE_PDB="`ls -dl $ORACLE_BASE/oradata/$ORACLE_SID/*/ | grep -v pdbseed | awk '{print $9}' | cut -d/ -f6`" -POSITIVE_RETURN="READ WRITE" -ORAENV_ASK=NO -source oraenv # Check Oracle DB status and store it in status -status=`sqlplus -s / as sysdba << EOF +status=`su -p oracle -c "sqlplus -s / as sysdba" << EOF set heading off; set pagesize 0; - SELECT open_mode FROM v\\$pdbs WHERE name COLLATE BINARY_CI = '$ORACLE_PDB'; + select status from v\\$instance; exit; EOF` # Store return code from SQL*Plus ret=$? -# SQL Plus execution was successful and PDB is open +# SQL Plus execution was successful and database is open if [ $ret -eq 0 ] && [ "$status" = "$POSITIVE_RETURN" ]; then exit 0; -# PDB is not open +# Database is not open elif [ "$status" != "$POSITIVE_RETURN" ]; then exit 1; # SQL Plus execution failed diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/oracle-xe-18c.conf b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/oracle-xe-18c.conf index e7a36e2eaf..31637e146e 100755 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/oracle-xe-18c.conf +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/oracle-xe-18c.conf @@ -2,13 +2,13 @@ #It is used when running '/etc/init.d/oracle-xe-18c configure'. # LISTENER PORT used Database listener, Leave empty for automatic port assignment -LISTENER_PORT= +LISTENER_PORT=1521 # EM_EXPRESS_PORT Oracle EM Express URL port EM_EXPRESS_PORT=5500 # Character set of the database -CHARSET=AL32UTF8 +CHARSET=${ORACLE_CHARACTERSET:-AL32UTF8} # Database file directory # If not specified, database files are stored under Oracle base/oradata diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh index d49602a064..a2e7bf7ded 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh @@ -173,14 +173,6 @@ fi; /etc/init.d/oracle-xe-18c start | grep -qc "Oracle Database is not configured" if [ "$?" == "0" ]; then - # Check whether container has enough memory - if [ `df -Pk /dev/shm | tail -n 1 | awk '{print $2}'` -lt 1048576 ]; then - echo "Error: The container doesn't have enough memory allocated." - echo "A database XE container needs at least 1 GB of shared memory (/dev/shm)." - echo "You currently only have $((`df -Pk /dev/shm | tail -n 1 | awk '{print $2}'`/1024)) MB allocated to the container." - exit 1; - fi; - # Create database createDB; diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/setPassword.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/setPassword.sh index 7fd6dae7b1..cd140cd38f 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/setPassword.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/setPassword.sh @@ -1,10 +1,26 @@ #!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# +# Since: November, 2016 +# Author: gerald.venzl@oracle.com +# Description: Sets the password for sys, system and pdb_admin +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# ORACLE_PWD=$1 +ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`" +ORACLE_PDB="`ls -dl $ORACLE_BASE/oradata/$ORACLE_SID/*/ | grep -v pdbseed | awk '{print $9}' | cut -d/ -f6`" +ORAENV_ASK=NO +source oraenv -su -p oracle -c "sqlplus / as sysdba << EOF +sqlplus / as sysdba << EOF ALTER USER SYS IDENTIFIED BY "$ORACLE_PWD"; ALTER USER SYSTEM IDENTIFIED BY "$ORACLE_PWD"; + ALTER SESSION SET CONTAINER=$ORACLE_PDB; + ALTER USER PDBADMIN IDENTIFIED BY "$ORACLE_PWD"; exit; -EOF" +EOF diff --git a/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh b/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh index b8787a4f33..3daa0a96ba 100755 --- a/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh @@ -131,7 +131,6 @@ elif [ $EXPRESS -eq 1 ]; then DOCKEROPS="--shm-size=1G $DOCKEROPS"; elif [ "$VERSION" == "18.4.0" ]; then EDITION="xe" - DOCKEROPS="--shm-size=1G $DOCKEROPS"; else echo "Version $VERSION does not have Express Edition available."; exit 1; From aed988bbc6c1437dde59bbe29c7d62fdd770c78b Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Tue, 13 Nov 2018 12:08:42 -0300 Subject: [PATCH 09/31] use checkDBStatus from 18.3.0 version --- .../dockerfiles/18.3.0/checkDBStatus.sh | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/checkDBStatus.sh index df473ab922..b01e768981 100755 --- a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/checkDBStatus.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/checkDBStatus.sh @@ -1,35 +1,38 @@ #!/bin/bash # LICENSE UPL 1.0 # -# Copyright (c) 1982-2017 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. # # Since: May, 2017 # Author: gerald.venzl@oracle.com # Description: Checks the status of Oracle Database. -# Return codes: 0 = Database is open and ready to use -# 1 = Database is not open +# Return codes: 0 = PDB is open and ready to use +# 1 = PDB is not open # 2 = Sql Plus execution failed # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. # -POSITIVE_RETURN="OPEN" ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`" +ORACLE_PDB="`ls -dl $ORACLE_BASE/oradata/$ORACLE_SID/*/ | grep -v pdbseed | awk '{print $9}' | cut -d/ -f6`" +POSITIVE_RETURN="READ WRITE" +ORAENV_ASK=NO +source oraenv # Check Oracle DB status and store it in status -status=`su -p oracle -c "sqlplus -s / as sysdba" << EOF +status=`sqlplus -s / as sysdba << EOF set heading off; set pagesize 0; - select status from v\\$instance; + SELECT open_mode FROM v\\$pdbs WHERE name COLLATE BINARY_CI = '$ORACLE_PDB'; exit; EOF` # Store return code from SQL*Plus ret=$? -# SQL Plus execution was successful and database is open +# SQL Plus execution was successful and PDB is open if [ $ret -eq 0 ] && [ "$status" = "$POSITIVE_RETURN" ]; then exit 0; -# Database is not open +# PDB is not open elif [ "$status" != "$POSITIVE_RETURN" ]; then exit 1; # SQL Plus execution failed From ea3cbd56dd610b4202c26219b9d674862745141e Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Tue, 13 Nov 2018 12:09:59 -0300 Subject: [PATCH 10/31] use checkDBStatus from 18.0.3 version --- .../dockerfiles/18.4.0/checkDBStatus.sh | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh index df473ab922..b01e768981 100755 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh @@ -1,35 +1,38 @@ #!/bin/bash # LICENSE UPL 1.0 # -# Copyright (c) 1982-2017 Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. # # Since: May, 2017 # Author: gerald.venzl@oracle.com # Description: Checks the status of Oracle Database. -# Return codes: 0 = Database is open and ready to use -# 1 = Database is not open +# Return codes: 0 = PDB is open and ready to use +# 1 = PDB is not open # 2 = Sql Plus execution failed # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. # -POSITIVE_RETURN="OPEN" ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`" +ORACLE_PDB="`ls -dl $ORACLE_BASE/oradata/$ORACLE_SID/*/ | grep -v pdbseed | awk '{print $9}' | cut -d/ -f6`" +POSITIVE_RETURN="READ WRITE" +ORAENV_ASK=NO +source oraenv # Check Oracle DB status and store it in status -status=`su -p oracle -c "sqlplus -s / as sysdba" << EOF +status=`sqlplus -s / as sysdba << EOF set heading off; set pagesize 0; - select status from v\\$instance; + SELECT open_mode FROM v\\$pdbs WHERE name COLLATE BINARY_CI = '$ORACLE_PDB'; exit; EOF` # Store return code from SQL*Plus ret=$? -# SQL Plus execution was successful and database is open +# SQL Plus execution was successful and PDB is open if [ $ret -eq 0 ] && [ "$status" = "$POSITIVE_RETURN" ]; then exit 0; -# Database is not open +# PDB is not open elif [ "$status" != "$POSITIVE_RETURN" ]; then exit 1; # SQL Plus execution failed From ecbc1c3d3b39f7e53e5cf0ba36523e6ba496daca Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Thu, 15 Nov 2018 10:58:52 -0300 Subject: [PATCH 11/31] fixed file name mapping for 18.4.0 xe Dockerfile --- OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh b/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh index 3daa0a96ba..bda81cf4c3 100755 --- a/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh @@ -138,7 +138,7 @@ elif [ $EXPRESS -eq 1 ]; then fi; # Which Dockerfile should be used? -if [ "$VERSION" == "12.1.0.2" ] || [ "$VERSION" == "11.2.0.2" ]; then +if [ "$VERSION" == "12.1.0.2" ] || [ "$VERSION" == "11.2.0.2" || [ "$VERSION" == "18.4.0" ]; then DOCKERFILE="$DOCKERFILE.$EDITION" fi; From 8f226ea398125a860f6ec2f69b4496e38b00c72f Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Tue, 20 Nov 2018 08:49:03 -0300 Subject: [PATCH 12/31] fixed checkDBStatus.sh scripts with XE image --- .../SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh index b01e768981..7177f1f093 100755 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh @@ -19,7 +19,7 @@ ORAENV_ASK=NO source oraenv # Check Oracle DB status and store it in status -status=`sqlplus -s / as sysdba << EOF +status=`su -p -c - oracle "sqlplus -s / as sysdba" << EOF set heading off; set pagesize 0; SELECT open_mode FROM v\\$pdbs WHERE name COLLATE BINARY_CI = '$ORACLE_PDB'; From 36c1567d4d5af7f09df0ce88184ceef7d2e9a455 Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Thu, 22 Nov 2018 23:23:34 -0300 Subject: [PATCH 13/31] added missing ] in if check --- OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh b/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh index bda81cf4c3..1a68f13034 100755 --- a/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh @@ -138,7 +138,7 @@ elif [ $EXPRESS -eq 1 ]; then fi; # Which Dockerfile should be used? -if [ "$VERSION" == "12.1.0.2" ] || [ "$VERSION" == "11.2.0.2" || [ "$VERSION" == "18.4.0" ]; then +if [ "$VERSION" == "12.1.0.2" ] || [ "$VERSION" == "11.2.0.2" ] || [ "$VERSION" == "18.4.0" ]; then DOCKERFILE="$DOCKERFILE.$EDITION" fi; From 0cc0460d46d1f59c135c920bcc35f738abfcccb0 Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Thu, 14 Feb 2019 15:19:27 -0300 Subject: [PATCH 14/31] Initial build scripts for 19c --- .../dockerfiles/19.2.0/Checksum.ee | 1 + .../dockerfiles/19.2.0/Dockerfile | 113 ++++++++++ .../dockerfiles/19.2.0/checkDBStatus.sh | 41 ++++ .../dockerfiles/19.2.0/checkSpace.sh | 23 ++ .../dockerfiles/19.2.0/createDB.sh | 86 +++++++ .../dockerfiles/19.2.0/db_inst.rsp | 125 +++++++++++ .../dockerfiles/19.2.0/dbca.rsp.tmpl | 204 +++++++++++++++++ .../dockerfiles/19.2.0/installDBBinaries.sh | 85 +++++++ .../dockerfiles/19.2.0/runOracle.sh | 212 ++++++++++++++++++ .../dockerfiles/19.2.0/runUserScripts.sh | 39 ++++ .../dockerfiles/19.2.0/setPassword.sh | 26 +++ .../dockerfiles/19.2.0/setupLinuxEnv.sh | 26 +++ .../dockerfiles/19.2.0/startDB.sh | 28 +++ 13 files changed, 1009 insertions(+) create mode 100644 OracleDatabase/SingleInstance/dockerfiles/19.2.0/Checksum.ee create mode 100644 OracleDatabase/SingleInstance/dockerfiles/19.2.0/Dockerfile create mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkDBStatus.sh create mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkSpace.sh create mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/createDB.sh create mode 100644 OracleDatabase/SingleInstance/dockerfiles/19.2.0/db_inst.rsp create mode 100644 OracleDatabase/SingleInstance/dockerfiles/19.2.0/dbca.rsp.tmpl create mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/installDBBinaries.sh create mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/runOracle.sh create mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/runUserScripts.sh create mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/setPassword.sh create mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/setupLinuxEnv.sh create mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/startDB.sh diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/Checksum.ee b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/Checksum.ee new file mode 100644 index 0000000000..49b6ec97f7 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/Checksum.ee @@ -0,0 +1 @@ +e7a4be57c6bb0f1977e56e280447a9cf V981623-01.zip diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/Dockerfile b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/Dockerfile new file mode 100644 index 0000000000..b1a65f8960 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/Dockerfile @@ -0,0 +1,113 @@ +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# +# ORACLE DOCKERFILES PROJECT +# -------------------------- +# This is the Dockerfile for Oracle Database 19c +# +# REQUIRED FILES TO BUILD THIS IMAGE +# ---------------------------------- +# (1) db_home.zip +# Download Oracle Database 18c Enterprise Edition or Standard Edition 2 for Linux x64 +# from http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html +# +# HOW TO BUILD THIS IMAGE +# ----------------------- +# Put all downloaded files in the same directory as this Dockerfile +# Run: +# $ docker build -t oracle/database:19.2.0-${EDITION} . +# +# Pull base image +# --------------- +FROM oraclelinux:7-slim as base + +# Maintainer +# ---------- +MAINTAINER Gerald Venzl + +# Environment variables required for this build (do NOT change) +# ------------------------------------------------------------- +ENV ORACLE_BASE=/opt/oracle \ + ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 \ + INSTALL_DIR=/opt/install \ + INSTALL_FILE_1="V981623-01.zip" \ + INSTALL_RSP="db_inst.rsp" \ + CONFIG_RSP="dbca.rsp.tmpl" \ + PWD_FILE="setPassword.sh" \ + RUN_FILE="runOracle.sh" \ + START_FILE="startDB.sh" \ + CREATE_DB_FILE="createDB.sh" \ + SETUP_LINUX_FILE="setupLinuxEnv.sh" \ + CHECK_SPACE_FILE="checkSpace.sh" \ + CHECK_DB_FILE="checkDBStatus.sh" \ + USER_SCRIPTS_FILE="runUserScripts.sh" \ + INSTALL_DB_BINARIES_FILE="installDBBinaries.sh" + +# Use second ENV so that variable get substituted +ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ + LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ + CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib + +# Copy files needed during both installation and runtime +# ------------- +COPY $SETUP_LINUX_FILE $CHECK_SPACE_FILE $INSTALL_DIR/ +COPY $RUN_FILE $START_FILE $CREATE_DB_FILE $CONFIG_RSP $PWD_FILE $CHECK_DB_FILE $USER_SCRIPTS_FILE $ORACLE_BASE/ + +RUN chmod ug+x $INSTALL_DIR/*.sh && \ + sync && \ + $INSTALL_DIR/$CHECK_SPACE_FILE && \ + $INSTALL_DIR/$SETUP_LINUX_FILE && \ + rm -rf $INSTALL_DIR + + + +############################################# +# ------------------------------------------- +# Start new stage for installing the database +# ------------------------------------------- +############################################# + +FROM base AS builder + +ARG DB_EDITION + +# Install unzip for unzip operation +RUN yum -y install unzip + +# Copy DB install file +COPY --chown=oracle:dba $INSTALL_FILE_1 $INSTALL_RSP $INSTALL_DB_BINARIES_FILE $INSTALL_DIR/ + +# Install DB software binaries +USER oracle +RUN chmod ug+x $INSTALL_DIR/*.sh && \ + sync && \ + $INSTALL_DIR/$INSTALL_DB_BINARIES_FILE $DB_EDITION + + + +############################################# +# ------------------------------------------- +# Start new layer for database runtime +# ------------------------------------------- +############################################# + +FROM base + +USER oracle +COPY --chown=oracle:dba --from=builder $ORACLE_BASE $ORACLE_BASE + +USER root +RUN $ORACLE_BASE/oraInventory/orainstRoot.sh && \ + $ORACLE_HOME/root.sh + +USER oracle +WORKDIR /home/oracle + +VOLUME ["$ORACLE_BASE/oradata"] +EXPOSE 1521 5500 +HEALTHCHECK --interval=1m --start-period=5m \ + CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1 + +# Define default command to start Oracle Database. +CMD exec $ORACLE_BASE/$RUN_FILE diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkDBStatus.sh new file mode 100755 index 0000000000..b01e768981 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkDBStatus.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# +# Since: May, 2017 +# Author: gerald.venzl@oracle.com +# Description: Checks the status of Oracle Database. +# Return codes: 0 = PDB is open and ready to use +# 1 = PDB is not open +# 2 = Sql Plus execution failed +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`" +ORACLE_PDB="`ls -dl $ORACLE_BASE/oradata/$ORACLE_SID/*/ | grep -v pdbseed | awk '{print $9}' | cut -d/ -f6`" +POSITIVE_RETURN="READ WRITE" +ORAENV_ASK=NO +source oraenv + +# Check Oracle DB status and store it in status +status=`sqlplus -s / as sysdba << EOF + set heading off; + set pagesize 0; + SELECT open_mode FROM v\\$pdbs WHERE name COLLATE BINARY_CI = '$ORACLE_PDB'; + exit; +EOF` + +# Store return code from SQL*Plus +ret=$? + +# SQL Plus execution was successful and PDB is open +if [ $ret -eq 0 ] && [ "$status" = "$POSITIVE_RETURN" ]; then + exit 0; +# PDB is not open +elif [ "$status" != "$POSITIVE_RETURN" ]; then + exit 1; +# SQL Plus execution failed +else + exit 2; +fi; diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkSpace.sh b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkSpace.sh new file mode 100755 index 0000000000..c78f3ed975 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkSpace.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# +# Since: January, 2017 +# Author: gerald.venzl@oracle.com +# Description: Checks the available space of the system. +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +REQUIRED_SPACE_GB=18 +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 GB are available." + echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + exit 1; +fi; diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/createDB.sh b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/createDB.sh new file mode 100755 index 0000000000..b59c39e250 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/createDB.sh @@ -0,0 +1,86 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# +# Since: November, 2016 +# Author: gerald.venzl@oracle.com +# Description: Creates an Oracle Database based on following parameters: +# $ORACLE_SID: The Oracle SID and CDB name +# $ORACLE_PDB: The PDB name +# $ORACLE_PWD: The Oracle password +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +set -e + +# Check whether ORACLE_SID is passed on +export ORACLE_SID=${1:-ORCLCDB} + +# Check whether ORACLE_PDB is passed on +export ORACLE_PDB=${2:-ORCLPDB1} + +# Auto generate ORACLE PWD if not passed on +export ORACLE_PWD=${3:-"`openssl rand -base64 8`1"} +echo "ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: $ORACLE_PWD"; + +# Replace place holders in response file +cp $ORACLE_BASE/$CONFIG_RSP $ORACLE_BASE/dbca.rsp +sed -i -e "s|###ORACLE_SID###|$ORACLE_SID|g" $ORACLE_BASE/dbca.rsp +sed -i -e "s|###ORACLE_PDB###|$ORACLE_PDB|g" $ORACLE_BASE/dbca.rsp +sed -i -e "s|###ORACLE_PWD###|$ORACLE_PWD|g" $ORACLE_BASE/dbca.rsp +sed -i -e "s|###ORACLE_CHARACTERSET###|$ORACLE_CHARACTERSET|g" $ORACLE_BASE/dbca.rsp + +# If there is greater than 8 CPUs default back to dbca memory calculations +# dbca will automatically pick 40% of available memory for Oracle DB +# The minimum of 2G is for small environments to guarantee that Oracle has enough memory to function +# However, bigger environment can and should use more of the available memory +# This is due to Github Issue #307 +if [ `nproc` -gt 8 ]; then + sed -i -e "s|totalMemory=2048||g" $ORACLE_BASE/dbca.rsp +fi; + +# Create network related config files (sqlnet.ora, tnsnames.ora, listener.ora) +mkdir -p $ORACLE_HOME/network/admin +echo "NAME.DIRECTORY_PATH= (TNSNAMES, EZCONNECT, HOSTNAME)" > $ORACLE_HOME/network/admin/sqlnet.ora + +# Listener.ora +echo "LISTENER = +(DESCRIPTION_LIST = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + ) +) + +DEDICATED_THROUGH_BROKER_LISTENER=ON +DIAG_ADR_ENABLED = off +" > $ORACLE_HOME/network/admin/listener.ora + +# Start LISTENER and run DBCA +lsnrctl start && +dbca -silent -createDatabase -responseFile $ORACLE_BASE/dbca.rsp || + cat /opt/oracle/cfgtoollogs/dbca/$ORACLE_SID/$ORACLE_SID.log || + cat /opt/oracle/cfgtoollogs/dbca/$ORACLE_SID.log + +echo "$ORACLE_SID=localhost:1521/$ORACLE_SID" > $ORACLE_HOME/network/admin/tnsnames.ora +echo "$ORACLE_PDB= +(DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = $ORACLE_PDB) + ) +)" >> $ORACLE_HOME/network/admin/tnsnames.ora + +# Remove second control file, fix local_listener, make PDB auto open +sqlplus / as sysdba << EOF + ALTER SYSTEM SET control_files='$ORACLE_BASE/oradata/$ORACLE_SID/control01.ctl' scope=spfile; + ALTER SYSTEM SET local_listener=''; + ALTER PLUGGABLE DATABASE $ORACLE_PDB SAVE STATE; + exit; +EOF + +# Remove temporary response file +rm $ORACLE_BASE/dbca.rsp diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/db_inst.rsp b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/db_inst.rsp new file mode 100644 index 0000000000..e2de332666 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/db_inst.rsp @@ -0,0 +1,125 @@ +#################################################################### +## Copyright(c) Oracle Corporation 1998,2017. 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. +#------------------------------------------------------------------------------- +oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v18.0.0 + +#------------------------------------------------------------------------------- +# Specify the installation option. +# It can be one of the following: +# - INSTALL_DB_SWONLY +# - INSTALL_DB_AND_CONFIG +# - UPGRADE_DB +#------------------------------------------------------------------------------- +oracle.install.option=INSTALL_DB_SWONLY + +#------------------------------------------------------------------------------- +# Specify the Unix group to be set for the inventory directory. +#------------------------------------------------------------------------------- +UNIX_GROUP_NAME=dba + +#------------------------------------------------------------------------------- +# Specify the location which holds the inventory files. +# This is an optional parameter if installing on +# Windows based Operating System. +#------------------------------------------------------------------------------- +INVENTORY_LOCATION=###ORACLE_BASE###/oraInventory +#------------------------------------------------------------------------------- +# Specify the complete path of the Oracle Home. +#------------------------------------------------------------------------------- +ORACLE_HOME=###ORACLE_HOME### + +#------------------------------------------------------------------------------- +# Specify the complete path of the Oracle Base. +#------------------------------------------------------------------------------- +ORACLE_BASE=###ORACLE_BASE### + +#------------------------------------------------------------------------------- +# Specify the installation edition of the component. +# +# The value should contain only one of these choices. +# - EE : Enterprise Edition +# - SE2 : Standard Edition 2 +#------------------------------------------------------------------------------- +oracle.install.db.InstallEdition=###ORACLE_EDITION### + +############################################################################### +# # +# PRIVILEGED OPERATING SYSTEM GROUPS # +# ------------------------------------------ # +# Provide values for the OS groups to which SYSDBA and SYSOPER privileges # +# needs to be granted. If the install is being performed as a member of the # +# group "dba", then that will be used unless specified otherwise below. # +# # +# The value to be specified for OSDBA and OSOPER group is only for UNIX based # +# Operating System. # +# # +############################################################################### + +#------------------------------------------------------------------------------ +# The OSDBA_GROUP is the OS group which is to be granted SYSDBA privileges. +#------------------------------------------------------------------------------- +oracle.install.db.OSDBA_GROUP=dba + +#------------------------------------------------------------------------------ +# The OSOPER_GROUP is the OS group which is to be granted SYSOPER privileges. +# The value to be specified for OSOPER group is optional. +#------------------------------------------------------------------------------ +oracle.install.db.OSOPER_GROUP=dba + +#------------------------------------------------------------------------------ +# The OSBACKUPDBA_GROUP is the OS group which is to be granted SYSBACKUP privileges. +#------------------------------------------------------------------------------ +oracle.install.db.OSBACKUPDBA_GROUP=dba + +#------------------------------------------------------------------------------ +# The OSDGDBA_GROUP is the OS group which is to be granted SYSDG privileges. +#------------------------------------------------------------------------------ +oracle.install.db.OSDGDBA_GROUP=dba + +#------------------------------------------------------------------------------ +# The OSKMDBA_GROUP is the OS group which is to be granted SYSKM privileges. +#------------------------------------------------------------------------------ +oracle.install.db.OSKMDBA_GROUP=dba + +#------------------------------------------------------------------------------ +# The OSRACDBA_GROUP is the OS group which is to be granted SYSRAC privileges. +#------------------------------------------------------------------------------ +oracle.install.db.OSRACDBA_GROUP=dba + +#------------------------------------------------------------------------------ +# Specify whether to enable the user to set the password for +# My Oracle Support credentials. The value can be either true or false. +# If left blank it will be assumed to be false. +# +# Example : SECURITY_UPDATES_VIA_MYORACLESUPPORT=true +#------------------------------------------------------------------------------ +SECURITY_UPDATES_VIA_MYORACLESUPPORT=false + +#------------------------------------------------------------------------------ +# Specify whether user doesn't want to configure Security Updates. +# The value for this variable should be true if you don't want to configure +# Security Updates, false otherwise. +# +# The value can be either true or false. If left blank it will be assumed +# to be true. +# +# Example : DECLINE_SECURITY_UPDATES=false +#------------------------------------------------------------------------------ +DECLINE_SECURITY_UPDATES=true \ No newline at end of file diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/dbca.rsp.tmpl b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/dbca.rsp.tmpl new file mode 100644 index 0000000000..274329ada8 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/dbca.rsp.tmpl @@ -0,0 +1,204 @@ +############################################################################## +## ## +## DBCA response file ## +## ------------------ ## +## Copyright(c) Oracle Corporation 1998,2017. 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_v18.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=###ORACLE_SID### + +#----------------------------------------------------------------------------- +# Name : sid +# Datatype : String +# Description : System identifier (SID) of the database +# Valid values : Check Oracle12c Administrator's Guide +# Default value : specified in GDBNAME +# Mandatory : No +#----------------------------------------------------------------------------- +sid=###ORACLE_SID### + +#----------------------------------------------------------------------------- +# Name : createAsContainerDatabase +# Datatype : boolean +# Description : flag to create database as container database +# Valid values : Check Oracle12c Administrator's Guide +# Default value : false +# Mandatory : No +#----------------------------------------------------------------------------- +createAsContainerDatabase=true + +#----------------------------------------------------------------------------- +# Name : numberOfPDBs +# Datatype : Number +# Description : Specify the number of pdb to be created +# Valid values : 0 to 4094 +# Default value : 0 +# Mandatory : No +#----------------------------------------------------------------------------- +numberOfPDBs=1 + +#----------------------------------------------------------------------------- +# Name : pdbName +# Datatype : String +# Description : Specify the pdbname/pdbanme prefix if one or more pdb need to be created +# Valid values : Check Oracle12c Administrator's Guide +# Default value : None +# Mandatory : No +#----------------------------------------------------------------------------- +pdbName=###ORACLE_PDB### + +#----------------------------------------------------------------------------- +# Name : pdbAdminPassword +# Datatype : String +# Description : PDB Administrator user password +# Valid values : Check Oracle12c Administrator's Guide +# Default value : None +# Mandatory : No +#----------------------------------------------------------------------------- +pdbAdminPassword=###ORACLE_PWD### + +#----------------------------------------------------------------------------- +# Name : templateName +# Datatype : String +# Description : Name of the template +# Valid values : Template file name +# Default value : None +# Mandatory : Yes +#----------------------------------------------------------------------------- +templateName=General_Purpose.dbc + +#----------------------------------------------------------------------------- +# Name : sysPassword +# Datatype : String +# Description : Password for SYS user +# Valid values : Check Oracle12c Administrator's Guide +# Default value : None +# Mandatory : Yes +#----------------------------------------------------------------------------- +sysPassword=###ORACLE_PWD### + +#----------------------------------------------------------------------------- +# Name : systemPassword +# Datatype : String +# Description : Password for SYSTEM user +# Valid values : Check Oracle12c Administrator's Guide +# Default value : None +# Mandatory : Yes +#----------------------------------------------------------------------------- +systemPassword=###ORACLE_PWD### + +#----------------------------------------------------------------------------- +# Name : emConfiguration +# Datatype : String +# Description : Enterprise Manager Configuration Type +# Valid values : CENTRAL|DBEXPRESS|BOTH|NONE +# Default value : NONE +# Mandatory : No +#----------------------------------------------------------------------------- +emConfiguration=DBEXPRESS + +#----------------------------------------------------------------------------- +# Name : emExpressPort +# Datatype : Number +# Description : Enterprise Manager Configuration Type +# Valid values : Check Oracle12c Administrator's Guide +# Default value : NONE +# Mandatory : No, will be picked up from DBEXPRESS_HTTPS_PORT env variable +# or auto generates a free port between 5500 and 5599 +#----------------------------------------------------------------------------- +emExpressPort=5500 + +#----------------------------------------------------------------------------- +# Name : dbsnmpPassword +# Datatype : String +# Description : Password for DBSNMP user +# Valid values : Check Oracle12c Administrator's Guide +# Default value : None +# Mandatory : Yes, if emConfiguration is specified or +# the value of runCVUChecks is TRUE +#----------------------------------------------------------------------------- +dbsnmpPassword=###ORACLE_PWD### + +#----------------------------------------------------------------------------- +# Name : characterSet +# Datatype : String +# Description : Character set of the database +# Valid values : Check Oracle12c National Language Support Guide +# Default value : "US7ASCII" +# Mandatory : NO +#----------------------------------------------------------------------------- +characterSet=###ORACLE_CHARACTERSET### + +#----------------------------------------------------------------------------- +# Name : nationalCharacterSet +# Datatype : String +# Description : National Character set of the database +# Valid values : "UTF8" or "AL16UTF16". For details, check Oracle12c National Language Support Guide +# Default value : "AL16UTF16" +# Mandatory : No +#----------------------------------------------------------------------------- +nationalCharacterSet=AL16UTF16 + +#----------------------------------------------------------------------------- +# Name : initParams +# Datatype : String +# Description : comma separated list of name=value pairs. Overrides initialization parameters defined in templates +# Default value : None +# Mandatory : NO +#----------------------------------------------------------------------------- +initParams=audit_trail=none,audit_sys_operations=false + +#----------------------------------------------------------------------------- +# 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=LISTENER + +#----------------------------------------------------------------------------- +# Name : automaticMemoryManagement +# Datatype : Boolean +# Description : flag to indicate Automatic Memory Management is used +# Valid values : TRUE/FALSE +# Default value : TRUE +# Mandatory : NO +#----------------------------------------------------------------------------- +automaticMemoryManagement=FALSE + +#----------------------------------------------------------------------------- +# Name : totalMemory +# Datatype : String +# Description : total memory in MB to allocate to Oracle +# Valid values : +# Default value : +# Mandatory : NO +#----------------------------------------------------------------------------- +totalMemory=2048 \ No newline at end of file diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/installDBBinaries.sh b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/installDBBinaries.sh new file mode 100755 index 0000000000..0bac0dea63 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/installDBBinaries.sh @@ -0,0 +1,85 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# +# Since: December, 2016 +# Author: gerald.venzl@oracle.com +# Description: Sets up the unix environment for DB installation. +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +# Convert $1 into upper case via "^^" (bash version 4 onwards) +EDITION=${1^^} + +# 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" -a "$EDITION" != "SE2" ]; then + echo "ERROR: Wrong edition has been passed on!" + echo "Edition $EDITION is no a valid edition!" + exit 1; +fi; + +# Check whether ORACLE_BASE is set +if [ "$ORACLE_BASE" == "" ]; then + echo "ERROR: ORACLE_BASE has not been set!" + echo "You have to have the ORACLE_BASE environment variable set to a valid value!" + exit 1; +fi; + +# Check whether ORACLE_HOME is set +if [ "$ORACLE_HOME" == "" ]; then + echo "ERROR: ORACLE_HOME has not been set!" + echo "You have to have the ORACLE_HOME environment variable set to a valid value!" + exit 1; +fi; + + +# Replace place holders +# --------------------- +sed -i -e "s|###ORACLE_EDITION###|$EDITION|g" $INSTALL_DIR/$INSTALL_RSP && \ +sed -i -e "s|###ORACLE_BASE###|$ORACLE_BASE|g" $INSTALL_DIR/$INSTALL_RSP && \ +sed -i -e "s|###ORACLE_HOME###|$ORACLE_HOME|g" $INSTALL_DIR/$INSTALL_RSP + +# Install Oracle binaries +cd $ORACLE_HOME && \ +mv $INSTALL_DIR/$INSTALL_FILE_1 $ORACLE_HOME/ && \ +unzip $INSTALL_FILE_1 && \ +rm $INSTALL_FILE_1 && \ +$ORACLE_HOME/runInstaller -silent -force -waitforcompletion -responsefile $INSTALL_DIR/$INSTALL_RSP -ignorePrereqFailure && \ +cd $HOME + +# Remove not needed components +# APEX +rm -rf $ORACLE_HOME/apex && \ +# ORDS +rm -rf $ORACLE_HOME/ords && \ +# SQL Developer +rm -rf $ORACLE_HOME/sqldeveloper && \ +# UCP connection pool +rm -rf $ORACLE_HOME/ucp && \ +# All installer files +rm -rf $ORACLE_HOME/lib/*.zip && \ +# OUI backup +rm -rf $ORACLE_HOME/inventory/backup/* && \ +# Network tools help +rm -rf $ORACLE_HOME/network/tools/help && \ +# Database upgrade assistant +rm -rf $ORACLE_HOME/assistants/dbua && \ +# Database migration assistant +rm -rf $ORACLE_HOME/dmu && \ +# Remove pilot workflow installer +rm -rf $ORACLE_HOME/install/pilot && \ +# Support tools +rm -rf $ORACLE_HOME/suptools && \ +# Temp location +rm -rf /tmp/* && \ +# Database files directory +rm -rf $INSTALL_DIR/database diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/runOracle.sh new file mode 100755 index 0000000000..0b000c3d94 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/runOracle.sh @@ -0,0 +1,212 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# +# Since: November, 2016 +# Author: gerald.venzl@oracle.com +# Description: Runs the Oracle Database inside the container +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +########### Move DB files ############ +function moveFiles { + + if [ ! -d $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID ]; then + mkdir -p $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ + fi; + + mv $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ + mv $ORACLE_HOME/dbs/orapw$ORACLE_SID $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ + mv $ORACLE_HOME/network/admin/sqlnet.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ + mv $ORACLE_HOME/network/admin/listener.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ + mv $ORACLE_HOME/network/admin/tnsnames.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ + + # oracle user does not have permissions in /etc, hence cp and not mv + cp /etc/oratab $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ + + symLinkFiles; +} + +########### Symbolic link DB files ############ +function symLinkFiles { + + if [ ! -L $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora ]; then + ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/spfile$ORACLE_SID.ora $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora + fi; + + if [ ! -L $ORACLE_HOME/dbs/orapw$ORACLE_SID ]; then + ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/orapw$ORACLE_SID $ORACLE_HOME/dbs/orapw$ORACLE_SID + fi; + + if [ ! -L $ORACLE_HOME/network/admin/sqlnet.ora ]; then + ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/sqlnet.ora $ORACLE_HOME/network/admin/sqlnet.ora + fi; + + if [ ! -L $ORACLE_HOME/network/admin/listener.ora ]; then + ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/listener.ora $ORACLE_HOME/network/admin/listener.ora + fi; + + if [ ! -L $ORACLE_HOME/network/admin/tnsnames.ora ]; then + ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/tnsnames.ora $ORACLE_HOME/network/admin/tnsnames.ora + fi; + + # oracle user does not have permissions in /etc, hence cp and not ln + cp $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/oratab /etc/oratab + +} + +########### SIGINT handler ############ +function _int() { + echo "Stopping container." + echo "SIGINT received, shutting down database!" + sqlplus / as sysdba < Date: Sat, 27 Apr 2019 12:46:16 -0300 Subject: [PATCH 15/31] Sample Dockerfiles for using Multipath NFS storage --- .../dockerfiles/18.3.0/Dockerfile.nfs | 63 +++++++++++++++++ .../dockerfiles/18.4.0/Dockerfile.nfs | 67 +++++++++++++++++++ .../dockerfiles/19.3.0/Dockerfile.nfs | 63 +++++++++++++++++ 3 files changed, 193 insertions(+) create mode 100644 OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile.nfs create mode 100644 OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.nfs create mode 100644 OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile.nfs diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile.nfs b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile.nfs new file mode 100644 index 0000000000..bfc89f3153 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile.nfs @@ -0,0 +1,63 @@ +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2016 Oracle and/or its affiliates. All rights reserved. +# +# ORACLE DOCKERFILES PROJECT +# -------------------------- +# This is the Dockerfile for Oracle Database 11g Release 2 Express Edition +# +# REQUIRED FILES TO BUILD THIS IMAGE +# ---------------------------------- +# (1) oracle/database:18.3.0-ee image built with official scripts +# +# HOW TO BUILD THIS IMAGE +# ----------------------- +# Put the downloaded file in the same directory as this Dockerfile +# Run: +# $ docker build -t oracle/database:18.3.0-ee-nfs -f Dockerfile.nfs . +# +# Sample usage using docker swarm stack +# version: '3.6' +# services: +# db: +# image: oracle/database:18.3.0-ee-nfs +# hostname: db +# volumes: +# - db_data:/opt/oracle/oradata # persistent oracle database data. +# - /run/shm:/dev/shm +# ports: +# - 1521:1521 +# environment: +# - ORACLE_PWD=Oracle_2018 +# configs: +# - source: test_oranfstab_ee +# target: /opt/oracle/product/18c/dbhome_1/dbs/oranfstab +# configs: +# test_oranfstab_ee: +# external: true +# volumes: +# db_data: +# driver: local +# driver_opts: +# type: nfs +# o: addr=10.1.253.110,rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=4,timeo=600,noatime,noacl,nocto +# device: ":/dbdata/18c-ee" + +# external config sample file (test_oranfstab_ee), note multipath support using both NAS IPs +# server: NAS-DTICs +# path: 10.1.253.110 +# path: 10.1.1.241 +# nfs_version: nfsv4 +# export: /dbdata/18c-ee mount: /opt/oracle/oradata + + +# +# Pull base image +# --------------- +FROM oracle/database:18.3.0-ee + +# Maintainer +# ---------- +MAINTAINER Marcelo ochoa + +RUN cd $ORACLE_HOME/rdbms/lib && make -f ins_rdbms.mk dnfs_on diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.nfs b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.nfs new file mode 100644 index 0000000000..e0f6968150 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.nfs @@ -0,0 +1,67 @@ +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2016 Oracle and/or its affiliates. All rights reserved. +# +# ORACLE DOCKERFILES PROJECT +# -------------------------- +# This is the Dockerfile for Oracle Database 18c Release Express Edition plus NFS support +# +# REQUIRED FILES TO BUILD THIS IMAGE +# ---------------------------------- +# (1) oracle/database:18.4.0-xe image built with official scripts +# +# HOW TO BUILD THIS IMAGE +# ----------------------- +# Put the downloaded file in the same directory as this Dockerfile +# Run: +# $ docker build -t oracle/database:18.4.0-xe-nfs -f Dockerfile.nfs . +# +# IMPORTANT +# --------- +# Oracle XE requires Docker 1.10.0 and above: +# Oracle XE uses shared memory for MEMORY_TARGET and needs at least 1 GB. +# Docker only supports --shm-size since Docker 1.10.0 +# Sample usage using docker swarm stack +# version: '3.6' +# services: +# db: +# image: oracle/database:18.4.0-xe-nfs +# hostname: db +# volumes: +# - db_data:/opt/oracle/oradata # persistent oracle database data. +# - /run/shm:/dev/shm +# ports: +# - 1521:1521 +# environment: +# - ORACLE_PWD=Oracle_2018 +# configs: +# - source: test_oranfstab_xe +# target: /opt/oracle/product/18c/dbhomeXE/dbs/oranfstab +# configs: +# test_oranfstab_xe: +# external: true +# volumes: +# db_data: +# driver: local +# driver_opts: +# type: nfs +# o: addr=10.1.253.110,rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=4,timeo=600,noatime,noacl,nocto +# device: ":/dbdata/xe-18c" + +# external config sample file (test_oranfstab_xe), note multipath support using both NAS IPs +# server: NAS-DTICs +# path: 10.1.253.110 +# path: 10.1.1.241 +# nfs_version: nfsv4 +# export: /dbdata/xe-18c mount: /opt/oracle/oradata + +# +# Pull base image +# --------------- +FROM oracle/database:18.4.0-xe + +# Maintainer +# ---------- +MAINTAINER Marcelo ochoa + +RUN cd $ORACLE_HOME/rdbms/lib && make -f ins_rdbms.mk dnfs_on diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile.nfs b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile.nfs new file mode 100644 index 0000000000..96271288df --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile.nfs @@ -0,0 +1,63 @@ +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2016 Oracle and/or its affiliates. All rights reserved. +# +# ORACLE DOCKERFILES PROJECT +# -------------------------- +# This is the Dockerfile for Oracle Database 19c Enterprise Edition +# +# REQUIRED FILES TO BUILD THIS IMAGE +# ---------------------------------- +# (1) oracle/database:19.3.0-ee image built with official scripts +# +# HOW TO BUILD THIS IMAGE +# ----------------------- +# Put the downloaded file in the same directory as this Dockerfile +# Run: +# $ docker build -t oracle/database:19.3.0-ee-nfs -f Dockerfile.nfs . +# +# Sample usage using docker swarm stack +# version: '3.6' +# services: +# db: +# image: oracle/database:19.3.0-ee-nfs +# hostname: db +# volumes: +# - db_data:/opt/oracle/oradata # persistent oracle database data. +# - /run/shm:/dev/shm +# ports: +# - 1521:1521 +# environment: +# - ORACLE_PWD=Oracle_2019 +# configs: +# - source: test_oranfstab_ee +# target: /opt/oracle/product/19c/dbhome_1/dbs/oranfstab +# configs: +# test_oranfstab_ee: +# external: true +# volumes: +# db_data: +# driver: local +# driver_opts: +# type: nfs +# o: addr=10.1.253.110,rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=4,timeo=600,noatime,noacl,nocto +# device: ":/dbdata/19c-ee" + +# external config sample file (test_oranfstab_ee), note multipath support using both NAS IPs +# server: NAS-DTICs +# path: 10.1.253.110 +# path: 10.1.1.241 +# nfs_version: nfsv4 +# export: /dbdata/19c-ee mount: /opt/oracle/oradata + + +# +# Pull base image +# --------------- +FROM oracle/database:19.3.0-ee + +# Maintainer +# ---------- +MAINTAINER Marcelo ochoa + +RUN cd $ORACLE_HOME/rdbms/lib && make -f ins_rdbms.mk dnfs_on From 91824c2dab2a666a069a5d1dc4fb5da53452fdfd Mon Sep 17 00:00:00 2001 From: marcelo-ochoa Date: Fri, 21 Feb 2020 10:06:55 -0300 Subject: [PATCH 16/31] removed comment --- .../dockerfiles/18.4.0/Dockerfile.xe | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe index c7a9e133ff..7c8a21cd0e 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe @@ -1,18 +1,10 @@ # LICENSE UPL 1.0 # -<<<<<<< HEAD -# Copyright (c) 1982-2016 Oracle and/or its affiliates. All rights reserved. -# -# ORACLE DOCKERFILES PROJECT -# -------------------------- -# This is the Dockerfile for Oracle Database 11g Release 2 Express Edition -======= # Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. # # ORACLE DOCKERFILES PROJECT # -------------------------- # This is the Dockerfile for Oracle Database 18c Express Edition ->>>>>>> upstream/master # # REQUIRED FILES TO BUILD THIS IMAGE # ---------------------------------- @@ -24,14 +16,6 @@ # Run: # $ docker build -t oracle/database:18.4.0-xe -f Dockerfile.xe . # -<<<<<<< HEAD -# IMPORTANT -# --------- -# Oracle XE requires Docker 1.10.0 and above: -# Oracle XE uses shared memory for MEMORY_TARGET and needs at least 1 GB. -# Docker only supports --shm-size since Docker 1.10.0 -======= ->>>>>>> upstream/master # # Pull base image # --------------- @@ -50,10 +34,7 @@ ENV ORACLE_BASE=/opt/oracle \ RUN_FILE="runOracle.sh" \ PWD_FILE="setPassword.sh" \ CONF_FILE="oracle-xe-18c.conf" \ -<<<<<<< HEAD -======= CHECK_SPACE_FILE="checkSpace.sh" \ ->>>>>>> upstream/master CHECK_DB_FILE="checkDBStatus.sh" \ INSTALL_DIR="$HOME/install" \ ORACLE_DOCKER_INSTALL="true" From 4ce12f354adf76c2d06cf84492efbc0acd8390d1 Mon Sep 17 00:00:00 2001 From: marcelo-ochoa Date: Fri, 21 Feb 2020 10:18:50 -0300 Subject: [PATCH 17/31] fixed merged comments --- .../dockerfiles/18.4.0/Dockerfile.xe | 28 ------------------- 1 file changed, 28 deletions(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe index 7c8a21cd0e..d375295aaf 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe @@ -44,46 +44,19 @@ ENV PATH=$ORACLE_HOME/bin:$PATH # Copy binaries # ------------- -<<<<<<< HEAD -<<<<<<< HEAD -COPY $INSTALL_FILE_1 $RUN_FILE $PWD_FILE $CHECK_DB_FILE $INSTALL_DIR/ -COPY $CONF_FILE /etc/sysconfig/ - -RUN cd $INSTALL_DIR && \ - yum -y install oracle-database-preinstall-18c file openssl $INSTALL_FILE_1 && \ -======= -COPY $CHECK_SPACE_FILE $INSTALL_FILE_1 $RUN_FILE $PWD_FILE $CHECK_DB_FILE $CONF_FILE $INSTALL_DIR/ -======= COPY $CHECK_SPACE_FILE $RUN_FILE $PWD_FILE $CHECK_DB_FILE $CONF_FILE $INSTALL_DIR/ ->>>>>>> upstream/master RUN chmod ug+x $INSTALL_DIR/*.sh && \ sync && \ $INSTALL_DIR/$CHECK_SPACE_FILE && \ cd $INSTALL_DIR && \ yum -y install openssl oracle-database-preinstall-18c && \ -<<<<<<< HEAD - yum -y install $INSTALL_FILE_1 && \ ->>>>>>> upstream/master -======= yum -y localinstall $INSTALL_FILE_1 && \ ->>>>>>> upstream/master rm -rf /var/cache/yum && \ mkdir -p $ORACLE_BASE/scripts/setup && \ mkdir $ORACLE_BASE/scripts/startup && \ ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d && \ mkdir -p $ORACLE_BASE/oradata /home/oracle && \ -<<<<<<< HEAD - chown -R oracle:oinstall $ORACLE_BASE/oradata /home/oracle && \ - mv $INSTALL_DIR/$RUN_FILE $ORACLE_BASE/ && \ - mv $INSTALL_DIR/$PWD_FILE $ORACLE_BASE/ && \ - mv $INSTALL_DIR/$CHECK_DB_FILE $ORACLE_BASE/ && \ - ln -s $ORACLE_BASE/$PWD_FILE / && \ - cd $HOME && \ - rm -rf $INSTALL_DIR && \ - target_txt=$(cat /etc/security/limits.d/oracle-database-preinstall-18c.conf | grep -e 'oracle *hard *memlock*') && \ - sed -i "/^$target_txt/ c#$target_txt" /etc/security/limits.d/oracle-database-preinstall-18c.conf && \ -======= chown -R oracle:oinstall $ORACLE_BASE /home/oracle && \ mv $INSTALL_DIR/$RUN_FILE $ORACLE_BASE/ && \ mv $INSTALL_DIR/$PWD_FILE $ORACLE_BASE/ && \ @@ -92,7 +65,6 @@ RUN chmod ug+x $INSTALL_DIR/*.sh && \ ln -s $ORACLE_BASE/$PWD_FILE / && \ cd $HOME && \ rm -rf $INSTALL_DIR && \ ->>>>>>> upstream/master chmod ug+x $ORACLE_BASE/*.sh VOLUME ["$ORACLE_BASE/oradata"] From 731976348c4a7b17b9aa2b09dc136e5cdd0b2c63 Mon Sep 17 00:00:00 2001 From: marcelo-ochoa Date: Sat, 22 Feb 2020 09:55:41 -0300 Subject: [PATCH 18/31] layerd version of Dockerfile.xe --- .../dockerfiles/18.4.0/Dockerfile.xe | 22 ++++++++++++++++-- .../dockerfiles/18.4.0/checkDBStatus.sh | 23 ------------------- .../dockerfiles/18.4.0/oracle-xe-18c.conf | 9 -------- .../dockerfiles/18.4.0/runOracle.sh | 5 ---- .../dockerfiles/18.4.0/setPassword.sh | 9 -------- 5 files changed, 20 insertions(+), 48 deletions(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe index d375295aaf..9bb11dbaf7 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe @@ -19,7 +19,7 @@ # # Pull base image # --------------- -FROM oraclelinux:7-slim +FROM oraclelinux:7-slim AS baseOS # Maintainer # ---------- @@ -42,6 +42,10 @@ ENV ORACLE_BASE=/opt/oracle \ # Use second ENV so that variable get substituted ENV PATH=$ORACLE_HOME/bin:$PATH +RUN yum -y install openssl file oracle-database-preinstall-18c && \ + rm -rf /var/cache/yum + +FROM baseOS AS baseInstall # Copy binaries # ------------- COPY $CHECK_SPACE_FILE $RUN_FILE $PWD_FILE $CHECK_DB_FILE $CONF_FILE $INSTALL_DIR/ @@ -50,7 +54,6 @@ RUN chmod ug+x $INSTALL_DIR/*.sh && \ sync && \ $INSTALL_DIR/$CHECK_SPACE_FILE && \ cd $INSTALL_DIR && \ - yum -y install openssl oracle-database-preinstall-18c && \ yum -y localinstall $INSTALL_FILE_1 && \ rm -rf /var/cache/yum && \ mkdir -p $ORACLE_BASE/scripts/setup && \ @@ -67,6 +70,21 @@ RUN chmod ug+x $INSTALL_DIR/*.sh && \ rm -rf $INSTALL_DIR && \ chmod ug+x $ORACLE_BASE/*.sh +FROM baseOS + +COPY --from=baseInstall $ORACLE_BASE/ $ORACLE_BASE/ +COPY --from=baseInstall /etc/oratab /etc/oratab +COPY --from=baseInstall /etc/init.d/oracle-xe-18c /etc/init.d/oracle-xe-18c +COPY --from=baseInstall /etc/sysconfig/$CONF_FILE /etc/sysconfig/$CONF_FILE + +RUN mkdir -p /home/oracle && \ + chown -R oracle:oinstall /home/oracle && \ + chown oracle:oinstall $ORACLE_BASE && \ + sed -i -r 's/^(session\s+required\s+pam_limits.so)/#\1/' /etc/pam.d/* && \ + ln -s $ORACLE_BASE/$PWD_FILE / && \ + cd $HOME && \ + chmod ug+x $ORACLE_BASE/*.sh + VOLUME ["$ORACLE_BASE/oradata"] EXPOSE 1521 8080 5500 HEALTHCHECK --interval=1m --start-period=5m \ diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh index 6e54a4ecbd..ba803718e7 100755 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh @@ -10,21 +10,6 @@ # 1 = PDB is not open # 2 = Sql Plus execution failed # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -<<<<<<< HEAD -# - -ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`" -ORACLE_PDB="`ls -dl $ORACLE_BASE/oradata/$ORACLE_SID/*/ | grep -v pdbseed | awk '{print $9}' | cut -d/ -f6`" -POSITIVE_RETURN="READ WRITE" -ORAENV_ASK=NO -source oraenv - -# Check Oracle DB status and store it in status -status=`su -p -c - oracle "sqlplus -s / as sysdba" << EOF - set heading off; - set pagesize 0; - SELECT open_mode FROM v\\$pdbs WHERE name COLLATE BINARY_CI = '$ORACLE_PDB'; -======= # ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`" @@ -39,7 +24,6 @@ status=`su -p oracle -c "sqlplus -s / as sysdba" << EOF set heading off; set pagesize 0; SELECT DISTINCT open_mode FROM v\\$pdbs WHERE open_mode = '$OPEN_MODE'; ->>>>>>> upstream/master exit; EOF` @@ -47,17 +31,10 @@ EOF` ret=$? # SQL Plus execution was successful and PDB is open -<<<<<<< HEAD -if [ $ret -eq 0 ] && [ "$status" = "$POSITIVE_RETURN" ]; then - exit 0; -# PDB is not open -elif [ "$status" != "$POSITIVE_RETURN" ]; then -======= if [ $ret -eq 0 ] && [ "$status" = "$OPEN_MODE" ]; then exit 0; # PDB is not open elif [ "$status" != "$OPEN_MODE" ]; then ->>>>>>> upstream/master exit 1; # SQL Plus execution failed else diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/oracle-xe-18c.conf b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/oracle-xe-18c.conf index 35817aaf96..79a0f481b7 100755 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/oracle-xe-18c.conf +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/oracle-xe-18c.conf @@ -1,10 +1,5 @@ -<<<<<<< HEAD -#This is a configuration file to setup the Oracle Database. -#It is used when running '/etc/init.d/oracle-xe-18c configure'. -======= # This is a configuration file to setup the Oracle Database. # It is used when running '/etc/init.d/oracle-xe-18c configure'. ->>>>>>> upstream/master # LISTENER PORT used Database listener, Leave empty for automatic port assignment LISTENER_PORT=1521 @@ -13,11 +8,7 @@ LISTENER_PORT=1521 EM_EXPRESS_PORT=5500 # Character set of the database -<<<<<<< HEAD -CHARSET=${ORACLE_CHARACTERSET:-AL32UTF8} -======= CHARSET=###ORACLE_CHARACTERSET### ->>>>>>> upstream/master # Database file directory # If not specified, database files are stored under Oracle base/oradata diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh index 2468f2cd95..d20f9a3f0c 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh @@ -89,17 +89,12 @@ function createDB { # Auto generate ORACLE PWD if not passed on export ORACLE_PWD=${ORACLE_PWD:-"`openssl rand -hex 8`"} echo "ORACLE PASSWORD FOR SYS AND SYSTEM: $ORACLE_PWD"; -<<<<<<< HEAD - - (echo "$ORACLE_PWD"; echo "$ORACLE_PWD";) | /etc/init.d/oracle-xe-18c configure > /tmp/XE_DatabaseCreation.log -======= # Set character set export ORACLE_CHARACTERSET=${ORACLE_CHARACTERSET:-AL32UTF8} sed -i -e "s|###ORACLE_CHARACTERSET###|$ORACLE_CHARACTERSET|g" /etc/sysconfig/$CONF_FILE (echo "$ORACLE_PWD"; echo "$ORACLE_PWD";) | /etc/init.d/oracle-xe-18c configure ->>>>>>> upstream/master # Listener echo "# listener.ora Network Configuration File: diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/setPassword.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/setPassword.sh index ff233b3e64..31ddad372b 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/setPassword.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/setPassword.sh @@ -16,19 +16,10 @@ ORACLE_PDB="`ls -dl $ORACLE_BASE/oradata/$ORACLE_SID/*/ | grep -v pdbseed | awk ORAENV_ASK=NO source oraenv -<<<<<<< HEAD -sqlplus / as sysdba << EOF -======= su -p oracle -c "sqlplus / as sysdba << EOF ->>>>>>> upstream/master ALTER USER SYS IDENTIFIED BY "$ORACLE_PWD"; ALTER USER SYSTEM IDENTIFIED BY "$ORACLE_PWD"; ALTER SESSION SET CONTAINER=$ORACLE_PDB; ALTER USER PDBADMIN IDENTIFIED BY "$ORACLE_PWD"; exit; -<<<<<<< HEAD -EOF - -======= EOF" ->>>>>>> upstream/master From c6998d1f30a4adb47a6c10d293d17bb5023df12c Mon Sep 17 00:00:00 2001 From: marcelo-ochoa Date: Sun, 23 Feb 2020 21:16:08 -0300 Subject: [PATCH 19/31] initial impl. multi-layered image, around 1/3 original image --- .../dockerfiles/18.4.0/cleanup.sh | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 OracleDatabase/SingleInstance/dockerfiles/18.4.0/cleanup.sh diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/cleanup.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/cleanup.sh new file mode 100644 index 0000000000..ca7683f1f3 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/cleanup.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# Remove not needed components +rm -rf $ORACLE_HOME/apex +rm -rf $ORACLE_HOME/jdbc +# ZDLRA installer files +rm -rf $ORACLE_HOME/lib/ra*.zip +rm -rf $ORACLE_HOME/ords +rm -rf $ORACLE_HOME/sqldeveloper +rm -rf $ORACLE_HOME/ucp +# as we won't install patches +rm -rf $ORACLE_HOME/lib/*.a +find $ORACLE_HOME -name '*.a' -type f -delete +# OUI backup +rm -rf $ORACLE_HOME/inventory/backup/* +# Network tools help +rm -rf $ORACLE_HOME/network/tools/help/mgr/help_* +# Temp location +rm -rf /tmp/* +# Advised by Gerald Venzl +echo "Cleanup Advised by Gerald Venzl" +rm -rf $ORACLE_HOME/.patch_storage/* +rm -rf $ORACLE_HOME/R/* +rm -rf $ORACLE_HOME/assistants/* +rm -rf $ORACLE_HOME/cfgtoollogs/* +rm -rf $ORACLE_HOME/dmu/* +rm -rf $ORACLE_HOME/inventory/* +rm -rf $ORACLE_HOME/javavm/* +rm -rf $ORACLE_HOME/md/* +rm -rf $ORACLE_HOME/suptools/* +echo "Additional Cleanup by Jacek Gebal" +#additional cleanup- removes 1.2GB of DB-sources size - for small images only (no Java) +rm -rf $ORACLE_HOME/OPatch/ #OPatch --> Patching +rm -rf $ORACLE_HOME/crs/ #crs --> some clusterware single instance failover things +rm -rf $ORACLE_HOME/ctx/ #ctx --> Oracle Text (also used for JSON index) +rm -rf $ORACLE_HOME/cv/ #cv --> some patchign related stuff I think +rm -rf $ORACLE_HOME/has/ #has --> no clue +rm -rf $ORACLE_HOME/jdk/ #jdk --> Java jdk +rm -rf $ORACLE_HOME/jlib/ #jlib --> Java libraries +rm -rf $ORACLE_HOME/mgw/ #mgw --> Message gateway +rm -rf $ORACLE_HOME/odbc/ #odbc --> ODBC +rm -rf $ORACLE_HOME/olap/ #olap --> OLAP +rm -rf $ORACLE_HOME/ord/ #ord --> Multimedia I think +rm -rf $ORACLE_HOME/oui/ #oui --> Oracle Universal installer +rm -rf $ORACLE_HOME/owm/ #owm --> Workspace manger +rm -rf $ORACLE_HOME/perl/ #perl --> perl +rm -rf $ORACLE_HOME/precomp/ #precomp --> Not much clue either +rm -rf $ORACLE_HOME/sdk/ #sdk --> some more java I believe +rm -rf $ORACLE_HOME/sqlpatch/ #sqlpatch --> patching related stuff +rm -rf $ORACLE_HOME/usm/ #usm --> Universal storage management +rm -rf $ORACLE_HOME/rdbms/admin/cdb_cloud +rm -rf $ORACLE_HOME/rdbms/xml/em +rm -rf $ORACLE_HOME/relnotes +find $ORACLE_HOME -name '*.zip' -type f -delete +find $ORACLE_HOME -name '*.txt' -type f -delete +find $ORACLE_HOME -name '*O' -type f -delete +find $ORACLE_HOME -path '*/install/*' -delete +find $ORACLE_HOME -name 'install' -type d -delete + From 87c4f2e639329284047c8b022f6c5d5d0d231d87 Mon Sep 17 00:00:00 2001 From: marcelo-ochoa Date: Sun, 23 Feb 2020 21:16:42 -0300 Subject: [PATCH 20/31] initial impl. multi-stage image --- .../dockerfiles/18.4.0/Dockerfile.nfs | 11 +++++- .../dockerfiles/18.4.0/Dockerfile.xe | 8 +++- .../dockerfiles/18.4.0/runOracle.sh | 39 ++++++++++++++++++- 3 files changed, 54 insertions(+), 4 deletions(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.nfs b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.nfs index e0f6968150..0148166129 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.nfs +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.nfs @@ -27,13 +27,18 @@ # db: # image: oracle/database:18.4.0-xe-nfs # hostname: db +# networks: +# rproxy: # volumes: # - db_data:/opt/oracle/oradata # persistent oracle database data. # - /run/shm:/dev/shm # ports: # - 1521:1521 # environment: -# - ORACLE_PWD=Oracle_2018 +# ORACLE_PWD: "Oracle_2020" +# VIRTUAL_HOST: "http://apex.exa.unicen.edu.ar, +# https://apex.exa.unicen.edu.ar" +# SERVICE_PORTS: "8080" # configs: # - source: test_oranfstab_xe # target: /opt/oracle/product/18c/dbhomeXE/dbs/oranfstab @@ -47,6 +52,10 @@ # type: nfs # o: addr=10.1.253.110,rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=4,timeo=600,noatime,noacl,nocto # device: ":/dbdata/xe-18c" +# networks: +# rproxy: +# external: +# name: reverse_proxy # external config sample file (test_oranfstab_xe), note multipath support using both NAS IPs # server: NAS-DTICs diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe index 9bb11dbaf7..9e3c98824c 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe @@ -33,6 +33,7 @@ ENV ORACLE_BASE=/opt/oracle \ INSTALL_FILE_1="https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-18c-1.0-1.x86_64.rpm" \ RUN_FILE="runOracle.sh" \ PWD_FILE="setPassword.sh" \ + CLR_FILE="cleanup.sh" \ CONF_FILE="oracle-xe-18c.conf" \ CHECK_SPACE_FILE="checkSpace.sh" \ CHECK_DB_FILE="checkDBStatus.sh" \ @@ -48,13 +49,14 @@ RUN yum -y install openssl file oracle-database-preinstall-18c && \ FROM baseOS AS baseInstall # Copy binaries # ------------- -COPY $CHECK_SPACE_FILE $RUN_FILE $PWD_FILE $CHECK_DB_FILE $CONF_FILE $INSTALL_DIR/ +COPY $CHECK_SPACE_FILE $RUN_FILE $PWD_FILE $CLR_FILE $CHECK_DB_FILE $CONF_FILE $INSTALL_DIR/ RUN chmod ug+x $INSTALL_DIR/*.sh && \ sync && \ $INSTALL_DIR/$CHECK_SPACE_FILE && \ cd $INSTALL_DIR && \ yum -y localinstall $INSTALL_FILE_1 && \ + $INSTALL_DIR/$CLR_FILE && \ rm -rf /var/cache/yum && \ mkdir -p $ORACLE_BASE/scripts/setup && \ mkdir $ORACLE_BASE/scripts/startup && \ @@ -82,12 +84,14 @@ RUN mkdir -p /home/oracle && \ chown oracle:oinstall $ORACLE_BASE && \ sed -i -r 's/^(session\s+required\s+pam_limits.so)/#\1/' /etc/pam.d/* && \ ln -s $ORACLE_BASE/$PWD_FILE / && \ + rm -rf /var/lib/rpm/* && \ + rm -rf /var/log/* && \ cd $HOME && \ chmod ug+x $ORACLE_BASE/*.sh VOLUME ["$ORACLE_BASE/oradata"] EXPOSE 1521 8080 5500 -HEALTHCHECK --interval=1m --start-period=5m \ +HEALTHCHECK --interval=1m --start-period=20m \ CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1 CMD exec $ORACLE_BASE/$RUN_FILE diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh index d20f9a3f0c..520978d77d 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh @@ -94,7 +94,42 @@ function createDB { export ORACLE_CHARACTERSET=${ORACLE_CHARACTERSET:-AL32UTF8} sed -i -e "s|###ORACLE_CHARACTERSET###|$ORACLE_CHARACTERSET|g" /etc/sysconfig/$CONF_FILE - (echo "$ORACLE_PWD"; echo "$ORACLE_PWD";) | /etc/init.d/oracle-xe-18c configure + # Check whether database already exists + if [ -f /opt/oracle/scripts/setup/init-db.tar.gz ]; then + (cd /tmp;tar xfz /opt/oracle/scripts/setup/init-db.tar.gz) + # start process of restore from rman full backup, first spfile + su -p oracle -c "rman target /<> /etc/oratab + fi; # Listener echo "# listener.ora Network Configuration File: @@ -156,6 +191,8 @@ EXTPROC_CONNECTION_DATA = # Move database operational files to oradata moveFiles; + /etc/init.d/oracle-xe-18c stop + /etc/init.d/oracle-xe-18c start } ############# MAIN ################ From 88beb655723642e10d0fbec385f6144aeaa9173b Mon Sep 17 00:00:00 2001 From: marcelo-ochoa Date: Mon, 24 Feb 2020 19:02:23 -0300 Subject: [PATCH 21/31] added missing link --- OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe | 1 + 1 file changed, 1 insertion(+) diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe index 9e3c98824c..df4f5c456d 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe @@ -86,6 +86,7 @@ RUN mkdir -p /home/oracle && \ ln -s $ORACLE_BASE/$PWD_FILE / && \ rm -rf /var/lib/rpm/* && \ rm -rf /var/log/* && \ + ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d && \ cd $HOME && \ chmod ug+x $ORACLE_BASE/*.sh From 33058d6554fe8b3d4d7f8f12a666011dac170ccb Mon Sep 17 00:00:00 2001 From: marcelo-ochoa Date: Mon, 24 Feb 2020 19:03:25 -0300 Subject: [PATCH 22/31] support for format init-db.tar, init-db.tar.gz and rman compressed backupset --- .../dockerfiles/18.4.0/runOracle.sh | 83 ++++++++++--------- 1 file changed, 45 insertions(+), 38 deletions(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh index 520978d77d..0876489347 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh @@ -94,42 +94,6 @@ function createDB { export ORACLE_CHARACTERSET=${ORACLE_CHARACTERSET:-AL32UTF8} sed -i -e "s|###ORACLE_CHARACTERSET###|$ORACLE_CHARACTERSET|g" /etc/sysconfig/$CONF_FILE - # Check whether database already exists - if [ -f /opt/oracle/scripts/setup/init-db.tar.gz ]; then - (cd /tmp;tar xfz /opt/oracle/scripts/setup/init-db.tar.gz) - # start process of restore from rman full backup, first spfile - su -p oracle -c "rman target /<> /etc/oratab - fi; # Listener echo "# listener.ora Network Configuration File: @@ -188,11 +152,54 @@ EXTPROC_CONNECTION_DATA = ) ) " > $ORACLE_HOME/network/admin/tnsnames.ora + su -p oracle -c "lsnrctl start" + + # make some required directories it not exists + su -p oracle -c "mkdir -p $ORACLE_BASE/oradata/$ORACLE_SID" + su -p oracle -c "mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump" + su -p oracle -c "mkdir -p $ORACLE_BASE/fast_recovery_area" + + # Check init-db.tar format + if [ -f /opt/oracle/scripts/setup/init-db.tar ]; then + (cd /opt/oracle/scripts/setup;tar xf init-db.tar) + fi; + # Check init-db.tar.gz format + if [ -f /opt/oracle/scripts/setup/init-db.tar.gz ]; then + (cd /opt/oracle/scripts/setup;tar xfz init-db.tar.gz) + fi; + + # Check whether database already exists + if [ -f /opt/oracle/scripts/setup/spfile.bks ]; then + # start process of restore from rman full backup, first spfile + su -p oracle -c "rman target /<> /etc/oratab + fi; # Move database operational files to oradata moveFiles; - /etc/init.d/oracle-xe-18c stop - /etc/init.d/oracle-xe-18c start } ############# MAIN ################ From 8ec25743d5a5a8856177aa61ff1fe2d568a952b8 Mon Sep 17 00:00:00 2001 From: marcelo-ochoa Date: Wed, 26 Feb 2020 15:44:28 -0300 Subject: [PATCH 23/31] renamed docker image slim files --- .../dockerfiles/18.4.0/Dockerfile.slim | 101 +++++++ .../dockerfiles/18.4.0/Dockerfile.xe | 31 +-- .../dockerfiles/18.4.0/runOracle-slim.sh | 253 ++++++++++++++++++ .../dockerfiles/18.4.0/runOracle.sh | 46 +--- 4 files changed, 359 insertions(+), 72 deletions(-) create mode 100644 OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.slim create mode 100644 OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle-slim.sh diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.slim b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.slim new file mode 100644 index 0000000000..d0fe364997 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.slim @@ -0,0 +1,101 @@ +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# +# ORACLE DOCKERFILES PROJECT +# -------------------------- +# This is the Dockerfile for Oracle Database 18c Express Edition +# +# REQUIRED FILES TO BUILD THIS IMAGE +# ---------------------------------- +# None +# +# HOW TO BUILD THIS IMAGE +# ----------------------- +# Put the downloaded file in the same directory as this Dockerfile +# Run: +# $ docker build -t oracle/database:18.4.0-xe-slim -f Dockerfile.slim . +# Sample usage with init-db directory having an RMAN full backup: +# $ docker run -ti --rm --name testdb -v /home/init-db:/opt/oracle/scripts/setup -v /run/shm:/dev/shm oracle/database:18.4.0-xe-slim +# passing init-db.tar.gz with a full RMAN backup initial db +# $ docker run -ti --rm --name testdb -v /home/init-db.tar.gz:/opt/oracle/scripts/setup/init-db.tar.gz -v /run/shm:/dev/shm oracle/database:18.4.0-xe-slim +# +# Pull base image +# --------------- +FROM oraclelinux:7-slim AS baseOS + +# Maintainer +# ---------- +MAINTAINER Gerald Venzl + +# Environment variables required for this build (do NOT change) +# ------------------------------------------------------------- +ENV ORACLE_BASE=/opt/oracle \ + ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE \ + ORACLE_SID=XE \ + INSTALL_FILE_1="https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-18c-1.0-1.x86_64.rpm" \ + RUN_FILE="runOracle-slim.sh" \ + PWD_FILE="setPassword.sh" \ + CLR_FILE="cleanup.sh" \ + CONF_FILE="oracle-xe-18c.conf" \ + CHECK_SPACE_FILE="checkSpace.sh" \ + CHECK_DB_FILE="checkDBStatus.sh" \ + INSTALL_DIR="$HOME/install" \ + ORACLE_DOCKER_INSTALL="true" + +# Use second ENV so that variable get substituted +ENV PATH=$ORACLE_HOME/bin:$PATH + +RUN yum -y install openssl file oracle-database-preinstall-18c && \ + rm -rf /var/cache/yum + +FROM baseOS AS baseInstall +# Copy binaries +# ------------- +COPY $CHECK_SPACE_FILE $RUN_FILE $PWD_FILE $CLR_FILE $CHECK_DB_FILE $CONF_FILE $INSTALL_DIR/ + +RUN chmod ug+x $INSTALL_DIR/*.sh && \ + sync && \ + $INSTALL_DIR/$CHECK_SPACE_FILE && \ + cd $INSTALL_DIR && \ + yum -y localinstall $INSTALL_FILE_1 && \ + $INSTALL_DIR/$CLR_FILE && \ + rm -rf /var/cache/yum && \ + mkdir -p $ORACLE_BASE/scripts/setup && \ + mkdir $ORACLE_BASE/scripts/startup && \ + ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d && \ + mkdir -p $ORACLE_BASE/oradata /home/oracle && \ + chown -R oracle:oinstall $ORACLE_BASE /home/oracle && \ + mv $INSTALL_DIR/$RUN_FILE $ORACLE_BASE/ && \ + mv $INSTALL_DIR/$PWD_FILE $ORACLE_BASE/ && \ + mv $INSTALL_DIR/$CHECK_DB_FILE $ORACLE_BASE/ && \ + mv $INSTALL_DIR/$CONF_FILE /etc/sysconfig/ && \ + ln -s $ORACLE_BASE/$PWD_FILE / && \ + cd $HOME && \ + rm -rf $INSTALL_DIR && \ + chmod ug+x $ORACLE_BASE/*.sh + +FROM baseOS + +COPY --from=baseInstall $ORACLE_BASE/ $ORACLE_BASE/ +COPY --from=baseInstall /etc/oratab /etc/oratab +COPY --from=baseInstall /etc/init.d/oracle-xe-18c /etc/init.d/oracle-xe-18c +COPY --from=baseInstall /etc/sysconfig/$CONF_FILE /etc/sysconfig/$CONF_FILE + +RUN mkdir -p /home/oracle && \ + chown -R oracle:oinstall /home/oracle && \ + chown oracle:oinstall $ORACLE_BASE && \ + sed -i -r 's/^(session\s+required\s+pam_limits.so)/#\1/' /etc/pam.d/* && \ + ln -s $ORACLE_BASE/$PWD_FILE / && \ + rm -rf /var/lib/rpm/* && \ + rm -rf /var/log/* && \ + ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d && \ + cd $HOME && \ + chmod ug+x $ORACLE_BASE/*.sh + +VOLUME ["$ORACLE_BASE/oradata"] +EXPOSE 1521 8080 5500 +HEALTHCHECK --interval=1m --start-period=20m \ + CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1 + +CMD exec $ORACLE_BASE/$RUN_FILE diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe index df4f5c456d..d375295aaf 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe @@ -19,7 +19,7 @@ # # Pull base image # --------------- -FROM oraclelinux:7-slim AS baseOS +FROM oraclelinux:7-slim # Maintainer # ---------- @@ -33,7 +33,6 @@ ENV ORACLE_BASE=/opt/oracle \ INSTALL_FILE_1="https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-18c-1.0-1.x86_64.rpm" \ RUN_FILE="runOracle.sh" \ PWD_FILE="setPassword.sh" \ - CLR_FILE="cleanup.sh" \ CONF_FILE="oracle-xe-18c.conf" \ CHECK_SPACE_FILE="checkSpace.sh" \ CHECK_DB_FILE="checkDBStatus.sh" \ @@ -43,20 +42,16 @@ ENV ORACLE_BASE=/opt/oracle \ # Use second ENV so that variable get substituted ENV PATH=$ORACLE_HOME/bin:$PATH -RUN yum -y install openssl file oracle-database-preinstall-18c && \ - rm -rf /var/cache/yum - -FROM baseOS AS baseInstall # Copy binaries # ------------- -COPY $CHECK_SPACE_FILE $RUN_FILE $PWD_FILE $CLR_FILE $CHECK_DB_FILE $CONF_FILE $INSTALL_DIR/ +COPY $CHECK_SPACE_FILE $RUN_FILE $PWD_FILE $CHECK_DB_FILE $CONF_FILE $INSTALL_DIR/ RUN chmod ug+x $INSTALL_DIR/*.sh && \ sync && \ $INSTALL_DIR/$CHECK_SPACE_FILE && \ cd $INSTALL_DIR && \ + yum -y install openssl oracle-database-preinstall-18c && \ yum -y localinstall $INSTALL_FILE_1 && \ - $INSTALL_DIR/$CLR_FILE && \ rm -rf /var/cache/yum && \ mkdir -p $ORACLE_BASE/scripts/setup && \ mkdir $ORACLE_BASE/scripts/startup && \ @@ -72,27 +67,9 @@ RUN chmod ug+x $INSTALL_DIR/*.sh && \ rm -rf $INSTALL_DIR && \ chmod ug+x $ORACLE_BASE/*.sh -FROM baseOS - -COPY --from=baseInstall $ORACLE_BASE/ $ORACLE_BASE/ -COPY --from=baseInstall /etc/oratab /etc/oratab -COPY --from=baseInstall /etc/init.d/oracle-xe-18c /etc/init.d/oracle-xe-18c -COPY --from=baseInstall /etc/sysconfig/$CONF_FILE /etc/sysconfig/$CONF_FILE - -RUN mkdir -p /home/oracle && \ - chown -R oracle:oinstall /home/oracle && \ - chown oracle:oinstall $ORACLE_BASE && \ - sed -i -r 's/^(session\s+required\s+pam_limits.so)/#\1/' /etc/pam.d/* && \ - ln -s $ORACLE_BASE/$PWD_FILE / && \ - rm -rf /var/lib/rpm/* && \ - rm -rf /var/log/* && \ - ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d && \ - cd $HOME && \ - chmod ug+x $ORACLE_BASE/*.sh - VOLUME ["$ORACLE_BASE/oradata"] EXPOSE 1521 8080 5500 -HEALTHCHECK --interval=1m --start-period=20m \ +HEALTHCHECK --interval=1m --start-period=5m \ CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1 CMD exec $ORACLE_BASE/$RUN_FILE diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle-slim.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle-slim.sh new file mode 100644 index 0000000000..0876489347 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle-slim.sh @@ -0,0 +1,253 @@ +#!/bin/bash + +############# Execute custom scripts ############## +function runUserScripts { + + SCRIPTS_ROOT="$1"; + + # Check whether parameter has been passed on + if [ -z "$SCRIPTS_ROOT" ]; then + echo "$0: No SCRIPTS_ROOT passed on, no scripts will be run"; + exit 1; + fi; + + # Execute custom provided files (only if directory exists and has files in it) + if [ -d "$SCRIPTS_ROOT" ] && [ -n "$(ls -A $SCRIPTS_ROOT)" ]; then + + echo ""; + echo "Executing user defined scripts" + + for f in $SCRIPTS_ROOT/*; do + case "$f" in + *.sh) echo "$0: running $f"; . "$f" ;; + *.sql) echo "$0: running $f"; echo "exit" | su -p oracle -c "$ORACLE_HOME/bin/sqlplus / as sysdba @$f"; echo ;; + *) echo "$0: ignoring $f" ;; + esac + echo ""; + done + + echo "DONE: Executing user defined scripts" + echo ""; + + fi; + +} + +########### Move DB files ############ +function moveFiles { + if [ ! -d $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID ]; then + su -p oracle -c "mkdir -p $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + fi; + + su -p oracle -c "mv $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + su -p oracle -c "mv $ORACLE_HOME/dbs/orapw$ORACLE_SID $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + su -p oracle -c "mv $ORACLE_HOME/network/admin/listener.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + su -p oracle -c "mv $ORACLE_HOME/network/admin/tnsnames.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + + cp /etc/oratab $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ + + symLinkFiles; +} + +########### Symbolic link DB files ############ +function symLinkFiles { + + if [ ! -L $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora ]; then + ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/spfile$ORACLE_SID.ora $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora + fi; + + if [ ! -L $ORACLE_HOME/dbs/orapw$ORACLE_SID ]; then + ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/orapw$ORACLE_SID $ORACLE_HOME/dbs/orapw$ORACLE_SID + fi; + + if [ ! -L $ORACLE_HOME/network/admin/listener.ora ]; then + ln -sf $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/listener.ora $ORACLE_HOME/network/admin/listener.ora + fi; + + if [ ! -L $ORACLE_HOME/network/admin/tnsnames.ora ]; then + ln -sf $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/tnsnames.ora $ORACLE_HOME/network/admin/tnsnames.ora + fi; + + cp $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/oratab /etc/oratab +} + +########### SIGTERM handler ############ +function _term() { + echo "Stopping container." + echo "SIGTERM received, shutting down database!" + /etc/init.d/oracle-xe-18c stop +} + +########### SIGKILL handler ############ +function _kill() { + echo "SIGKILL received, shutting down database!" + /etc/init.d/oracle-xe-18c stop +} + +############# Create DB ################ +function createDB { + # Auto generate ORACLE PWD if not passed on + export ORACLE_PWD=${ORACLE_PWD:-"`openssl rand -hex 8`"} + echo "ORACLE PASSWORD FOR SYS AND SYSTEM: $ORACLE_PWD"; + + # Set character set + export ORACLE_CHARACTERSET=${ORACLE_CHARACTERSET:-AL32UTF8} + sed -i -e "s|###ORACLE_CHARACTERSET###|$ORACLE_CHARACTERSET|g" /etc/sysconfig/$CONF_FILE + + + # Listener + echo "# listener.ora Network Configuration File: + + SID_LIST_LISTENER = + (SID_LIST = + (SID_DESC = + (SID_NAME = PLSExtProc) + (ORACLE_HOME = $ORACLE_HOME) + (PROGRAM = extproc) + ) + ) + + LISTENER = + (DESCRIPTION_LIST = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + ) + ) + + DEFAULT_SERVICE_LISTENER = (XE)" > $ORACLE_HOME/network/admin/listener.ora + +# TNS Names.ora + echo "# tnsnames.ora Network Configuration File: + +XE = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = XE) + ) + ) + +LISTENER_XE = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + +XEPDB1 = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = XEPDB1) + ) + ) + +EXTPROC_CONNECTION_DATA = + (DESCRIPTION = + (ADDRESS_LIST = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) + ) + (CONNECT_DATA = + (SID = PLSExtProc) + (PRESENTATION = RO) + ) + ) +" > $ORACLE_HOME/network/admin/tnsnames.ora + su -p oracle -c "lsnrctl start" + + # make some required directories it not exists + su -p oracle -c "mkdir -p $ORACLE_BASE/oradata/$ORACLE_SID" + su -p oracle -c "mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump" + su -p oracle -c "mkdir -p $ORACLE_BASE/fast_recovery_area" + + # Check init-db.tar format + if [ -f /opt/oracle/scripts/setup/init-db.tar ]; then + (cd /opt/oracle/scripts/setup;tar xf init-db.tar) + fi; + + # Check init-db.tar.gz format + if [ -f /opt/oracle/scripts/setup/init-db.tar.gz ]; then + (cd /opt/oracle/scripts/setup;tar xfz init-db.tar.gz) + fi; + + # Check whether database already exists + if [ -f /opt/oracle/scripts/setup/spfile.bks ]; then + # start process of restore from rman full backup, first spfile + su -p oracle -c "rman target /<> /etc/oratab + fi; + # Move database operational files to oradata + moveFiles; +} + +############# MAIN ################ + +# Set SIGTERM handler +trap _term SIGTERM + +# Set SIGKILL handler +trap _kill SIGKILL + +# Check whether database already exists +if [ -d $ORACLE_BASE/oradata/$ORACLE_SID ]; then + symLinkFiles; + # Make sure audit file destination exists + if [ ! -d $ORACLE_BASE/admin/$ORACLE_SID/adump ]; then + su -p oracle -c "mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump" + fi; +fi; + +/etc/init.d/oracle-xe-18c start | grep -qc "Oracle Database is not configured" +if [ "$?" == "0" ]; then + # Create database + createDB; + + # Execute custom provided setup scripts + runUserScripts $ORACLE_BASE/scripts/setup +fi; + +# Check whether database is up and running +$ORACLE_BASE/$CHECK_DB_FILE +if [ $? -eq 0 ]; then + echo "#########################" + echo "DATABASE IS READY TO USE!" + echo "#########################" + + # Execute custom provided startup scripts + runUserScripts $ORACLE_BASE/scripts/startup + +else + echo "#####################################" + echo "########### E R R O R ###############" + echo "DATABASE SETUP WAS NOT SUCCESSFUL!" + echo "Please check output for further info!" + echo "########### E R R O R ###############" + echo "#####################################" +fi; + +echo "The following output is now a tail of the alert.log:" +tail -f $ORACLE_BASE/diag/rdbms/*/*/trace/alert*.log & +childPID=$! +wait $childPID diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh index 0876489347..d20f9a3f0c 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh @@ -94,6 +94,7 @@ function createDB { export ORACLE_CHARACTERSET=${ORACLE_CHARACTERSET:-AL32UTF8} sed -i -e "s|###ORACLE_CHARACTERSET###|$ORACLE_CHARACTERSET|g" /etc/sysconfig/$CONF_FILE + (echo "$ORACLE_PWD"; echo "$ORACLE_PWD";) | /etc/init.d/oracle-xe-18c configure # Listener echo "# listener.ora Network Configuration File: @@ -152,52 +153,7 @@ EXTPROC_CONNECTION_DATA = ) ) " > $ORACLE_HOME/network/admin/tnsnames.ora - su -p oracle -c "lsnrctl start" - # make some required directories it not exists - su -p oracle -c "mkdir -p $ORACLE_BASE/oradata/$ORACLE_SID" - su -p oracle -c "mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump" - su -p oracle -c "mkdir -p $ORACLE_BASE/fast_recovery_area" - - # Check init-db.tar format - if [ -f /opt/oracle/scripts/setup/init-db.tar ]; then - (cd /opt/oracle/scripts/setup;tar xf init-db.tar) - fi; - - # Check init-db.tar.gz format - if [ -f /opt/oracle/scripts/setup/init-db.tar.gz ]; then - (cd /opt/oracle/scripts/setup;tar xfz init-db.tar.gz) - fi; - - # Check whether database already exists - if [ -f /opt/oracle/scripts/setup/spfile.bks ]; then - # start process of restore from rman full backup, first spfile - su -p oracle -c "rman target /<> /etc/oratab - fi; # Move database operational files to oradata moveFiles; } From 5bdfb53088ebaa014a28ebabd73e080a5da43e55 Mon Sep 17 00:00:00 2001 From: marcelo-ochoa Date: Wed, 26 Feb 2020 16:01:37 -0300 Subject: [PATCH 24/31] removed obsoleted build for 19.2 --- .../dockerfiles/19.2.0/Checksum.ee | 1 - .../dockerfiles/19.2.0/Dockerfile | 113 ---------- .../dockerfiles/19.2.0/checkDBStatus.sh | 41 ---- .../dockerfiles/19.2.0/checkSpace.sh | 23 -- .../dockerfiles/19.2.0/createDB.sh | 86 ------- .../dockerfiles/19.2.0/db_inst.rsp | 125 ----------- .../dockerfiles/19.2.0/dbca.rsp.tmpl | 204 ----------------- .../dockerfiles/19.2.0/installDBBinaries.sh | 85 ------- .../dockerfiles/19.2.0/runOracle.sh | 212 ------------------ .../dockerfiles/19.2.0/runUserScripts.sh | 39 ---- .../dockerfiles/19.2.0/setPassword.sh | 26 --- .../dockerfiles/19.2.0/setupLinuxEnv.sh | 26 --- .../dockerfiles/19.2.0/startDB.sh | 28 --- 13 files changed, 1009 deletions(-) delete mode 100644 OracleDatabase/SingleInstance/dockerfiles/19.2.0/Checksum.ee delete mode 100644 OracleDatabase/SingleInstance/dockerfiles/19.2.0/Dockerfile delete mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkDBStatus.sh delete mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkSpace.sh delete mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/createDB.sh delete mode 100644 OracleDatabase/SingleInstance/dockerfiles/19.2.0/db_inst.rsp delete mode 100644 OracleDatabase/SingleInstance/dockerfiles/19.2.0/dbca.rsp.tmpl delete mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/installDBBinaries.sh delete mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/runOracle.sh delete mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/runUserScripts.sh delete mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/setPassword.sh delete mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/setupLinuxEnv.sh delete mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.2.0/startDB.sh diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/Checksum.ee b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/Checksum.ee deleted file mode 100644 index 49b6ec97f7..0000000000 --- a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/Checksum.ee +++ /dev/null @@ -1 +0,0 @@ -e7a4be57c6bb0f1977e56e280447a9cf V981623-01.zip diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/Dockerfile b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/Dockerfile deleted file mode 100644 index b1a65f8960..0000000000 --- a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/Dockerfile +++ /dev/null @@ -1,113 +0,0 @@ -# LICENSE UPL 1.0 -# -# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. -# -# ORACLE DOCKERFILES PROJECT -# -------------------------- -# This is the Dockerfile for Oracle Database 19c -# -# REQUIRED FILES TO BUILD THIS IMAGE -# ---------------------------------- -# (1) db_home.zip -# Download Oracle Database 18c Enterprise Edition or Standard Edition 2 for Linux x64 -# from http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html -# -# HOW TO BUILD THIS IMAGE -# ----------------------- -# Put all downloaded files in the same directory as this Dockerfile -# Run: -# $ docker build -t oracle/database:19.2.0-${EDITION} . -# -# Pull base image -# --------------- -FROM oraclelinux:7-slim as base - -# Maintainer -# ---------- -MAINTAINER Gerald Venzl - -# Environment variables required for this build (do NOT change) -# ------------------------------------------------------------- -ENV ORACLE_BASE=/opt/oracle \ - ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 \ - INSTALL_DIR=/opt/install \ - INSTALL_FILE_1="V981623-01.zip" \ - INSTALL_RSP="db_inst.rsp" \ - CONFIG_RSP="dbca.rsp.tmpl" \ - PWD_FILE="setPassword.sh" \ - RUN_FILE="runOracle.sh" \ - START_FILE="startDB.sh" \ - CREATE_DB_FILE="createDB.sh" \ - SETUP_LINUX_FILE="setupLinuxEnv.sh" \ - CHECK_SPACE_FILE="checkSpace.sh" \ - CHECK_DB_FILE="checkDBStatus.sh" \ - USER_SCRIPTS_FILE="runUserScripts.sh" \ - INSTALL_DB_BINARIES_FILE="installDBBinaries.sh" - -# Use second ENV so that variable get substituted -ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ - LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ - CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib - -# Copy files needed during both installation and runtime -# ------------- -COPY $SETUP_LINUX_FILE $CHECK_SPACE_FILE $INSTALL_DIR/ -COPY $RUN_FILE $START_FILE $CREATE_DB_FILE $CONFIG_RSP $PWD_FILE $CHECK_DB_FILE $USER_SCRIPTS_FILE $ORACLE_BASE/ - -RUN chmod ug+x $INSTALL_DIR/*.sh && \ - sync && \ - $INSTALL_DIR/$CHECK_SPACE_FILE && \ - $INSTALL_DIR/$SETUP_LINUX_FILE && \ - rm -rf $INSTALL_DIR - - - -############################################# -# ------------------------------------------- -# Start new stage for installing the database -# ------------------------------------------- -############################################# - -FROM base AS builder - -ARG DB_EDITION - -# Install unzip for unzip operation -RUN yum -y install unzip - -# Copy DB install file -COPY --chown=oracle:dba $INSTALL_FILE_1 $INSTALL_RSP $INSTALL_DB_BINARIES_FILE $INSTALL_DIR/ - -# Install DB software binaries -USER oracle -RUN chmod ug+x $INSTALL_DIR/*.sh && \ - sync && \ - $INSTALL_DIR/$INSTALL_DB_BINARIES_FILE $DB_EDITION - - - -############################################# -# ------------------------------------------- -# Start new layer for database runtime -# ------------------------------------------- -############################################# - -FROM base - -USER oracle -COPY --chown=oracle:dba --from=builder $ORACLE_BASE $ORACLE_BASE - -USER root -RUN $ORACLE_BASE/oraInventory/orainstRoot.sh && \ - $ORACLE_HOME/root.sh - -USER oracle -WORKDIR /home/oracle - -VOLUME ["$ORACLE_BASE/oradata"] -EXPOSE 1521 5500 -HEALTHCHECK --interval=1m --start-period=5m \ - CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1 - -# Define default command to start Oracle Database. -CMD exec $ORACLE_BASE/$RUN_FILE diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkDBStatus.sh deleted file mode 100755 index b01e768981..0000000000 --- a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkDBStatus.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# LICENSE UPL 1.0 -# -# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. -# -# Since: May, 2017 -# Author: gerald.venzl@oracle.com -# Description: Checks the status of Oracle Database. -# Return codes: 0 = PDB is open and ready to use -# 1 = PDB is not open -# 2 = Sql Plus execution failed -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# - -ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`" -ORACLE_PDB="`ls -dl $ORACLE_BASE/oradata/$ORACLE_SID/*/ | grep -v pdbseed | awk '{print $9}' | cut -d/ -f6`" -POSITIVE_RETURN="READ WRITE" -ORAENV_ASK=NO -source oraenv - -# Check Oracle DB status and store it in status -status=`sqlplus -s / as sysdba << EOF - set heading off; - set pagesize 0; - SELECT open_mode FROM v\\$pdbs WHERE name COLLATE BINARY_CI = '$ORACLE_PDB'; - exit; -EOF` - -# Store return code from SQL*Plus -ret=$? - -# SQL Plus execution was successful and PDB is open -if [ $ret -eq 0 ] && [ "$status" = "$POSITIVE_RETURN" ]; then - exit 0; -# PDB is not open -elif [ "$status" != "$POSITIVE_RETURN" ]; then - exit 1; -# SQL Plus execution failed -else - exit 2; -fi; diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkSpace.sh b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkSpace.sh deleted file mode 100755 index c78f3ed975..0000000000 --- a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/checkSpace.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# LICENSE UPL 1.0 -# -# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. -# -# Since: January, 2017 -# Author: gerald.venzl@oracle.com -# Description: Checks the available space of the system. -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# - -REQUIRED_SPACE_GB=18 -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 GB are available." - echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - exit 1; -fi; diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/createDB.sh b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/createDB.sh deleted file mode 100755 index b59c39e250..0000000000 --- a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/createDB.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash -# LICENSE UPL 1.0 -# -# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. -# -# Since: November, 2016 -# Author: gerald.venzl@oracle.com -# Description: Creates an Oracle Database based on following parameters: -# $ORACLE_SID: The Oracle SID and CDB name -# $ORACLE_PDB: The PDB name -# $ORACLE_PWD: The Oracle password -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# - -set -e - -# Check whether ORACLE_SID is passed on -export ORACLE_SID=${1:-ORCLCDB} - -# Check whether ORACLE_PDB is passed on -export ORACLE_PDB=${2:-ORCLPDB1} - -# Auto generate ORACLE PWD if not passed on -export ORACLE_PWD=${3:-"`openssl rand -base64 8`1"} -echo "ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: $ORACLE_PWD"; - -# Replace place holders in response file -cp $ORACLE_BASE/$CONFIG_RSP $ORACLE_BASE/dbca.rsp -sed -i -e "s|###ORACLE_SID###|$ORACLE_SID|g" $ORACLE_BASE/dbca.rsp -sed -i -e "s|###ORACLE_PDB###|$ORACLE_PDB|g" $ORACLE_BASE/dbca.rsp -sed -i -e "s|###ORACLE_PWD###|$ORACLE_PWD|g" $ORACLE_BASE/dbca.rsp -sed -i -e "s|###ORACLE_CHARACTERSET###|$ORACLE_CHARACTERSET|g" $ORACLE_BASE/dbca.rsp - -# If there is greater than 8 CPUs default back to dbca memory calculations -# dbca will automatically pick 40% of available memory for Oracle DB -# The minimum of 2G is for small environments to guarantee that Oracle has enough memory to function -# However, bigger environment can and should use more of the available memory -# This is due to Github Issue #307 -if [ `nproc` -gt 8 ]; then - sed -i -e "s|totalMemory=2048||g" $ORACLE_BASE/dbca.rsp -fi; - -# Create network related config files (sqlnet.ora, tnsnames.ora, listener.ora) -mkdir -p $ORACLE_HOME/network/admin -echo "NAME.DIRECTORY_PATH= (TNSNAMES, EZCONNECT, HOSTNAME)" > $ORACLE_HOME/network/admin/sqlnet.ora - -# Listener.ora -echo "LISTENER = -(DESCRIPTION_LIST = - (DESCRIPTION = - (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) - (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) - ) -) - -DEDICATED_THROUGH_BROKER_LISTENER=ON -DIAG_ADR_ENABLED = off -" > $ORACLE_HOME/network/admin/listener.ora - -# Start LISTENER and run DBCA -lsnrctl start && -dbca -silent -createDatabase -responseFile $ORACLE_BASE/dbca.rsp || - cat /opt/oracle/cfgtoollogs/dbca/$ORACLE_SID/$ORACLE_SID.log || - cat /opt/oracle/cfgtoollogs/dbca/$ORACLE_SID.log - -echo "$ORACLE_SID=localhost:1521/$ORACLE_SID" > $ORACLE_HOME/network/admin/tnsnames.ora -echo "$ORACLE_PDB= -(DESCRIPTION = - (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) - (CONNECT_DATA = - (SERVER = DEDICATED) - (SERVICE_NAME = $ORACLE_PDB) - ) -)" >> $ORACLE_HOME/network/admin/tnsnames.ora - -# Remove second control file, fix local_listener, make PDB auto open -sqlplus / as sysdba << EOF - ALTER SYSTEM SET control_files='$ORACLE_BASE/oradata/$ORACLE_SID/control01.ctl' scope=spfile; - ALTER SYSTEM SET local_listener=''; - ALTER PLUGGABLE DATABASE $ORACLE_PDB SAVE STATE; - exit; -EOF - -# Remove temporary response file -rm $ORACLE_BASE/dbca.rsp diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/db_inst.rsp b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/db_inst.rsp deleted file mode 100644 index e2de332666..0000000000 --- a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/db_inst.rsp +++ /dev/null @@ -1,125 +0,0 @@ -#################################################################### -## Copyright(c) Oracle Corporation 1998,2017. 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. -#------------------------------------------------------------------------------- -oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v18.0.0 - -#------------------------------------------------------------------------------- -# Specify the installation option. -# It can be one of the following: -# - INSTALL_DB_SWONLY -# - INSTALL_DB_AND_CONFIG -# - UPGRADE_DB -#------------------------------------------------------------------------------- -oracle.install.option=INSTALL_DB_SWONLY - -#------------------------------------------------------------------------------- -# Specify the Unix group to be set for the inventory directory. -#------------------------------------------------------------------------------- -UNIX_GROUP_NAME=dba - -#------------------------------------------------------------------------------- -# Specify the location which holds the inventory files. -# This is an optional parameter if installing on -# Windows based Operating System. -#------------------------------------------------------------------------------- -INVENTORY_LOCATION=###ORACLE_BASE###/oraInventory -#------------------------------------------------------------------------------- -# Specify the complete path of the Oracle Home. -#------------------------------------------------------------------------------- -ORACLE_HOME=###ORACLE_HOME### - -#------------------------------------------------------------------------------- -# Specify the complete path of the Oracle Base. -#------------------------------------------------------------------------------- -ORACLE_BASE=###ORACLE_BASE### - -#------------------------------------------------------------------------------- -# Specify the installation edition of the component. -# -# The value should contain only one of these choices. -# - EE : Enterprise Edition -# - SE2 : Standard Edition 2 -#------------------------------------------------------------------------------- -oracle.install.db.InstallEdition=###ORACLE_EDITION### - -############################################################################### -# # -# PRIVILEGED OPERATING SYSTEM GROUPS # -# ------------------------------------------ # -# Provide values for the OS groups to which SYSDBA and SYSOPER privileges # -# needs to be granted. If the install is being performed as a member of the # -# group "dba", then that will be used unless specified otherwise below. # -# # -# The value to be specified for OSDBA and OSOPER group is only for UNIX based # -# Operating System. # -# # -############################################################################### - -#------------------------------------------------------------------------------ -# The OSDBA_GROUP is the OS group which is to be granted SYSDBA privileges. -#------------------------------------------------------------------------------- -oracle.install.db.OSDBA_GROUP=dba - -#------------------------------------------------------------------------------ -# The OSOPER_GROUP is the OS group which is to be granted SYSOPER privileges. -# The value to be specified for OSOPER group is optional. -#------------------------------------------------------------------------------ -oracle.install.db.OSOPER_GROUP=dba - -#------------------------------------------------------------------------------ -# The OSBACKUPDBA_GROUP is the OS group which is to be granted SYSBACKUP privileges. -#------------------------------------------------------------------------------ -oracle.install.db.OSBACKUPDBA_GROUP=dba - -#------------------------------------------------------------------------------ -# The OSDGDBA_GROUP is the OS group which is to be granted SYSDG privileges. -#------------------------------------------------------------------------------ -oracle.install.db.OSDGDBA_GROUP=dba - -#------------------------------------------------------------------------------ -# The OSKMDBA_GROUP is the OS group which is to be granted SYSKM privileges. -#------------------------------------------------------------------------------ -oracle.install.db.OSKMDBA_GROUP=dba - -#------------------------------------------------------------------------------ -# The OSRACDBA_GROUP is the OS group which is to be granted SYSRAC privileges. -#------------------------------------------------------------------------------ -oracle.install.db.OSRACDBA_GROUP=dba - -#------------------------------------------------------------------------------ -# Specify whether to enable the user to set the password for -# My Oracle Support credentials. The value can be either true or false. -# If left blank it will be assumed to be false. -# -# Example : SECURITY_UPDATES_VIA_MYORACLESUPPORT=true -#------------------------------------------------------------------------------ -SECURITY_UPDATES_VIA_MYORACLESUPPORT=false - -#------------------------------------------------------------------------------ -# Specify whether user doesn't want to configure Security Updates. -# The value for this variable should be true if you don't want to configure -# Security Updates, false otherwise. -# -# The value can be either true or false. If left blank it will be assumed -# to be true. -# -# Example : DECLINE_SECURITY_UPDATES=false -#------------------------------------------------------------------------------ -DECLINE_SECURITY_UPDATES=true \ No newline at end of file diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/dbca.rsp.tmpl b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/dbca.rsp.tmpl deleted file mode 100644 index 274329ada8..0000000000 --- a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/dbca.rsp.tmpl +++ /dev/null @@ -1,204 +0,0 @@ -############################################################################## -## ## -## DBCA response file ## -## ------------------ ## -## Copyright(c) Oracle Corporation 1998,2017. 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_v18.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=###ORACLE_SID### - -#----------------------------------------------------------------------------- -# Name : sid -# Datatype : String -# Description : System identifier (SID) of the database -# Valid values : Check Oracle12c Administrator's Guide -# Default value : specified in GDBNAME -# Mandatory : No -#----------------------------------------------------------------------------- -sid=###ORACLE_SID### - -#----------------------------------------------------------------------------- -# Name : createAsContainerDatabase -# Datatype : boolean -# Description : flag to create database as container database -# Valid values : Check Oracle12c Administrator's Guide -# Default value : false -# Mandatory : No -#----------------------------------------------------------------------------- -createAsContainerDatabase=true - -#----------------------------------------------------------------------------- -# Name : numberOfPDBs -# Datatype : Number -# Description : Specify the number of pdb to be created -# Valid values : 0 to 4094 -# Default value : 0 -# Mandatory : No -#----------------------------------------------------------------------------- -numberOfPDBs=1 - -#----------------------------------------------------------------------------- -# Name : pdbName -# Datatype : String -# Description : Specify the pdbname/pdbanme prefix if one or more pdb need to be created -# Valid values : Check Oracle12c Administrator's Guide -# Default value : None -# Mandatory : No -#----------------------------------------------------------------------------- -pdbName=###ORACLE_PDB### - -#----------------------------------------------------------------------------- -# Name : pdbAdminPassword -# Datatype : String -# Description : PDB Administrator user password -# Valid values : Check Oracle12c Administrator's Guide -# Default value : None -# Mandatory : No -#----------------------------------------------------------------------------- -pdbAdminPassword=###ORACLE_PWD### - -#----------------------------------------------------------------------------- -# Name : templateName -# Datatype : String -# Description : Name of the template -# Valid values : Template file name -# Default value : None -# Mandatory : Yes -#----------------------------------------------------------------------------- -templateName=General_Purpose.dbc - -#----------------------------------------------------------------------------- -# Name : sysPassword -# Datatype : String -# Description : Password for SYS user -# Valid values : Check Oracle12c Administrator's Guide -# Default value : None -# Mandatory : Yes -#----------------------------------------------------------------------------- -sysPassword=###ORACLE_PWD### - -#----------------------------------------------------------------------------- -# Name : systemPassword -# Datatype : String -# Description : Password for SYSTEM user -# Valid values : Check Oracle12c Administrator's Guide -# Default value : None -# Mandatory : Yes -#----------------------------------------------------------------------------- -systemPassword=###ORACLE_PWD### - -#----------------------------------------------------------------------------- -# Name : emConfiguration -# Datatype : String -# Description : Enterprise Manager Configuration Type -# Valid values : CENTRAL|DBEXPRESS|BOTH|NONE -# Default value : NONE -# Mandatory : No -#----------------------------------------------------------------------------- -emConfiguration=DBEXPRESS - -#----------------------------------------------------------------------------- -# Name : emExpressPort -# Datatype : Number -# Description : Enterprise Manager Configuration Type -# Valid values : Check Oracle12c Administrator's Guide -# Default value : NONE -# Mandatory : No, will be picked up from DBEXPRESS_HTTPS_PORT env variable -# or auto generates a free port between 5500 and 5599 -#----------------------------------------------------------------------------- -emExpressPort=5500 - -#----------------------------------------------------------------------------- -# Name : dbsnmpPassword -# Datatype : String -# Description : Password for DBSNMP user -# Valid values : Check Oracle12c Administrator's Guide -# Default value : None -# Mandatory : Yes, if emConfiguration is specified or -# the value of runCVUChecks is TRUE -#----------------------------------------------------------------------------- -dbsnmpPassword=###ORACLE_PWD### - -#----------------------------------------------------------------------------- -# Name : characterSet -# Datatype : String -# Description : Character set of the database -# Valid values : Check Oracle12c National Language Support Guide -# Default value : "US7ASCII" -# Mandatory : NO -#----------------------------------------------------------------------------- -characterSet=###ORACLE_CHARACTERSET### - -#----------------------------------------------------------------------------- -# Name : nationalCharacterSet -# Datatype : String -# Description : National Character set of the database -# Valid values : "UTF8" or "AL16UTF16". For details, check Oracle12c National Language Support Guide -# Default value : "AL16UTF16" -# Mandatory : No -#----------------------------------------------------------------------------- -nationalCharacterSet=AL16UTF16 - -#----------------------------------------------------------------------------- -# Name : initParams -# Datatype : String -# Description : comma separated list of name=value pairs. Overrides initialization parameters defined in templates -# Default value : None -# Mandatory : NO -#----------------------------------------------------------------------------- -initParams=audit_trail=none,audit_sys_operations=false - -#----------------------------------------------------------------------------- -# 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=LISTENER - -#----------------------------------------------------------------------------- -# Name : automaticMemoryManagement -# Datatype : Boolean -# Description : flag to indicate Automatic Memory Management is used -# Valid values : TRUE/FALSE -# Default value : TRUE -# Mandatory : NO -#----------------------------------------------------------------------------- -automaticMemoryManagement=FALSE - -#----------------------------------------------------------------------------- -# Name : totalMemory -# Datatype : String -# Description : total memory in MB to allocate to Oracle -# Valid values : -# Default value : -# Mandatory : NO -#----------------------------------------------------------------------------- -totalMemory=2048 \ No newline at end of file diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/installDBBinaries.sh b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/installDBBinaries.sh deleted file mode 100755 index 0bac0dea63..0000000000 --- a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/installDBBinaries.sh +++ /dev/null @@ -1,85 +0,0 @@ -#!/bin/bash -# LICENSE UPL 1.0 -# -# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. -# -# Since: December, 2016 -# Author: gerald.venzl@oracle.com -# Description: Sets up the unix environment for DB installation. -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# - -# Convert $1 into upper case via "^^" (bash version 4 onwards) -EDITION=${1^^} - -# 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" -a "$EDITION" != "SE2" ]; then - echo "ERROR: Wrong edition has been passed on!" - echo "Edition $EDITION is no a valid edition!" - exit 1; -fi; - -# Check whether ORACLE_BASE is set -if [ "$ORACLE_BASE" == "" ]; then - echo "ERROR: ORACLE_BASE has not been set!" - echo "You have to have the ORACLE_BASE environment variable set to a valid value!" - exit 1; -fi; - -# Check whether ORACLE_HOME is set -if [ "$ORACLE_HOME" == "" ]; then - echo "ERROR: ORACLE_HOME has not been set!" - echo "You have to have the ORACLE_HOME environment variable set to a valid value!" - exit 1; -fi; - - -# Replace place holders -# --------------------- -sed -i -e "s|###ORACLE_EDITION###|$EDITION|g" $INSTALL_DIR/$INSTALL_RSP && \ -sed -i -e "s|###ORACLE_BASE###|$ORACLE_BASE|g" $INSTALL_DIR/$INSTALL_RSP && \ -sed -i -e "s|###ORACLE_HOME###|$ORACLE_HOME|g" $INSTALL_DIR/$INSTALL_RSP - -# Install Oracle binaries -cd $ORACLE_HOME && \ -mv $INSTALL_DIR/$INSTALL_FILE_1 $ORACLE_HOME/ && \ -unzip $INSTALL_FILE_1 && \ -rm $INSTALL_FILE_1 && \ -$ORACLE_HOME/runInstaller -silent -force -waitforcompletion -responsefile $INSTALL_DIR/$INSTALL_RSP -ignorePrereqFailure && \ -cd $HOME - -# Remove not needed components -# APEX -rm -rf $ORACLE_HOME/apex && \ -# ORDS -rm -rf $ORACLE_HOME/ords && \ -# SQL Developer -rm -rf $ORACLE_HOME/sqldeveloper && \ -# UCP connection pool -rm -rf $ORACLE_HOME/ucp && \ -# All installer files -rm -rf $ORACLE_HOME/lib/*.zip && \ -# OUI backup -rm -rf $ORACLE_HOME/inventory/backup/* && \ -# Network tools help -rm -rf $ORACLE_HOME/network/tools/help && \ -# Database upgrade assistant -rm -rf $ORACLE_HOME/assistants/dbua && \ -# Database migration assistant -rm -rf $ORACLE_HOME/dmu && \ -# Remove pilot workflow installer -rm -rf $ORACLE_HOME/install/pilot && \ -# Support tools -rm -rf $ORACLE_HOME/suptools && \ -# Temp location -rm -rf /tmp/* && \ -# Database files directory -rm -rf $INSTALL_DIR/database diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/19.2.0/runOracle.sh deleted file mode 100755 index 0b000c3d94..0000000000 --- a/OracleDatabase/SingleInstance/dockerfiles/19.2.0/runOracle.sh +++ /dev/null @@ -1,212 +0,0 @@ -#!/bin/bash -# LICENSE UPL 1.0 -# -# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. -# -# Since: November, 2016 -# Author: gerald.venzl@oracle.com -# Description: Runs the Oracle Database inside the container -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# - -########### Move DB files ############ -function moveFiles { - - if [ ! -d $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID ]; then - mkdir -p $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ - fi; - - mv $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ - mv $ORACLE_HOME/dbs/orapw$ORACLE_SID $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ - mv $ORACLE_HOME/network/admin/sqlnet.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ - mv $ORACLE_HOME/network/admin/listener.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ - mv $ORACLE_HOME/network/admin/tnsnames.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ - - # oracle user does not have permissions in /etc, hence cp and not mv - cp /etc/oratab $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ - - symLinkFiles; -} - -########### Symbolic link DB files ############ -function symLinkFiles { - - if [ ! -L $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora ]; then - ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/spfile$ORACLE_SID.ora $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora - fi; - - if [ ! -L $ORACLE_HOME/dbs/orapw$ORACLE_SID ]; then - ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/orapw$ORACLE_SID $ORACLE_HOME/dbs/orapw$ORACLE_SID - fi; - - if [ ! -L $ORACLE_HOME/network/admin/sqlnet.ora ]; then - ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/sqlnet.ora $ORACLE_HOME/network/admin/sqlnet.ora - fi; - - if [ ! -L $ORACLE_HOME/network/admin/listener.ora ]; then - ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/listener.ora $ORACLE_HOME/network/admin/listener.ora - fi; - - if [ ! -L $ORACLE_HOME/network/admin/tnsnames.ora ]; then - ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/tnsnames.ora $ORACLE_HOME/network/admin/tnsnames.ora - fi; - - # oracle user does not have permissions in /etc, hence cp and not ln - cp $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/oratab /etc/oratab - -} - -########### SIGINT handler ############ -function _int() { - echo "Stopping container." - echo "SIGINT received, shutting down database!" - sqlplus / as sysdba < Date: Wed, 26 Feb 2020 16:03:53 -0300 Subject: [PATCH 25/31] merged with production version of 18.4 XE --- OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh b/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh index 002d61d67b..77a118c240 100755 --- a/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh @@ -154,8 +154,6 @@ elif [ $EXPRESS -eq 1 ]; then elif [ "$VERSION" == "11.2.0.2" ]; then EDITION="xe" DOCKEROPS="--shm-size=1G $DOCKEROPS"; - elif [ "$VERSION" == "18.4.0" ]; then - EDITION="xe" else echo "Version $VERSION does not have Express Edition available."; exit 1; From 79c59b9dc79f4f8bfac6b62fbd38e0a039d7990c Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Wed, 26 Feb 2020 18:20:09 -0300 Subject: [PATCH 26/31] Delete Dockerfile.nfs --- .../dockerfiles/18.3.0/Dockerfile.nfs | 63 ------------------- 1 file changed, 63 deletions(-) delete mode 100644 OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile.nfs diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile.nfs b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile.nfs deleted file mode 100644 index bfc89f3153..0000000000 --- a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile.nfs +++ /dev/null @@ -1,63 +0,0 @@ -# LICENSE UPL 1.0 -# -# Copyright (c) 1982-2016 Oracle and/or its affiliates. All rights reserved. -# -# ORACLE DOCKERFILES PROJECT -# -------------------------- -# This is the Dockerfile for Oracle Database 11g Release 2 Express Edition -# -# REQUIRED FILES TO BUILD THIS IMAGE -# ---------------------------------- -# (1) oracle/database:18.3.0-ee image built with official scripts -# -# HOW TO BUILD THIS IMAGE -# ----------------------- -# Put the downloaded file in the same directory as this Dockerfile -# Run: -# $ docker build -t oracle/database:18.3.0-ee-nfs -f Dockerfile.nfs . -# -# Sample usage using docker swarm stack -# version: '3.6' -# services: -# db: -# image: oracle/database:18.3.0-ee-nfs -# hostname: db -# volumes: -# - db_data:/opt/oracle/oradata # persistent oracle database data. -# - /run/shm:/dev/shm -# ports: -# - 1521:1521 -# environment: -# - ORACLE_PWD=Oracle_2018 -# configs: -# - source: test_oranfstab_ee -# target: /opt/oracle/product/18c/dbhome_1/dbs/oranfstab -# configs: -# test_oranfstab_ee: -# external: true -# volumes: -# db_data: -# driver: local -# driver_opts: -# type: nfs -# o: addr=10.1.253.110,rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=4,timeo=600,noatime,noacl,nocto -# device: ":/dbdata/18c-ee" - -# external config sample file (test_oranfstab_ee), note multipath support using both NAS IPs -# server: NAS-DTICs -# path: 10.1.253.110 -# path: 10.1.1.241 -# nfs_version: nfsv4 -# export: /dbdata/18c-ee mount: /opt/oracle/oradata - - -# -# Pull base image -# --------------- -FROM oracle/database:18.3.0-ee - -# Maintainer -# ---------- -MAINTAINER Marcelo ochoa - -RUN cd $ORACLE_HOME/rdbms/lib && make -f ins_rdbms.mk dnfs_on From d5cb5e604099d7be69626d0238edbdbdb342470d Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Wed, 26 Feb 2020 18:20:36 -0300 Subject: [PATCH 27/31] Delete Dockerfile.nfs --- .../dockerfiles/18.4.0/Dockerfile.nfs | 76 ------------------- 1 file changed, 76 deletions(-) delete mode 100644 OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.nfs diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.nfs b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.nfs deleted file mode 100644 index 0148166129..0000000000 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.nfs +++ /dev/null @@ -1,76 +0,0 @@ -# LICENSE UPL 1.0 -# -# Copyright (c) 1982-2016 Oracle and/or its affiliates. All rights reserved. -# -# ORACLE DOCKERFILES PROJECT -# -------------------------- -# This is the Dockerfile for Oracle Database 18c Release Express Edition plus NFS support -# -# REQUIRED FILES TO BUILD THIS IMAGE -# ---------------------------------- -# (1) oracle/database:18.4.0-xe image built with official scripts -# -# HOW TO BUILD THIS IMAGE -# ----------------------- -# Put the downloaded file in the same directory as this Dockerfile -# Run: -# $ docker build -t oracle/database:18.4.0-xe-nfs -f Dockerfile.nfs . -# -# IMPORTANT -# --------- -# Oracle XE requires Docker 1.10.0 and above: -# Oracle XE uses shared memory for MEMORY_TARGET and needs at least 1 GB. -# Docker only supports --shm-size since Docker 1.10.0 -# Sample usage using docker swarm stack -# version: '3.6' -# services: -# db: -# image: oracle/database:18.4.0-xe-nfs -# hostname: db -# networks: -# rproxy: -# volumes: -# - db_data:/opt/oracle/oradata # persistent oracle database data. -# - /run/shm:/dev/shm -# ports: -# - 1521:1521 -# environment: -# ORACLE_PWD: "Oracle_2020" -# VIRTUAL_HOST: "http://apex.exa.unicen.edu.ar, -# https://apex.exa.unicen.edu.ar" -# SERVICE_PORTS: "8080" -# configs: -# - source: test_oranfstab_xe -# target: /opt/oracle/product/18c/dbhomeXE/dbs/oranfstab -# configs: -# test_oranfstab_xe: -# external: true -# volumes: -# db_data: -# driver: local -# driver_opts: -# type: nfs -# o: addr=10.1.253.110,rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=4,timeo=600,noatime,noacl,nocto -# device: ":/dbdata/xe-18c" -# networks: -# rproxy: -# external: -# name: reverse_proxy - -# external config sample file (test_oranfstab_xe), note multipath support using both NAS IPs -# server: NAS-DTICs -# path: 10.1.253.110 -# path: 10.1.1.241 -# nfs_version: nfsv4 -# export: /dbdata/xe-18c mount: /opt/oracle/oradata - -# -# Pull base image -# --------------- -FROM oracle/database:18.4.0-xe - -# Maintainer -# ---------- -MAINTAINER Marcelo ochoa - -RUN cd $ORACLE_HOME/rdbms/lib && make -f ins_rdbms.mk dnfs_on From 7f8b5a60ef034d403d7e8c17387cb789a8d0f4be Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Wed, 26 Feb 2020 18:21:13 -0300 Subject: [PATCH 28/31] Delete Dockerfile.nfs Deleted samples on Oracle dNFS support --- .../dockerfiles/19.3.0/Dockerfile.nfs | 63 ------------------- 1 file changed, 63 deletions(-) delete mode 100644 OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile.nfs diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile.nfs b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile.nfs deleted file mode 100644 index 96271288df..0000000000 --- a/OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile.nfs +++ /dev/null @@ -1,63 +0,0 @@ -# LICENSE UPL 1.0 -# -# Copyright (c) 1982-2016 Oracle and/or its affiliates. All rights reserved. -# -# ORACLE DOCKERFILES PROJECT -# -------------------------- -# This is the Dockerfile for Oracle Database 19c Enterprise Edition -# -# REQUIRED FILES TO BUILD THIS IMAGE -# ---------------------------------- -# (1) oracle/database:19.3.0-ee image built with official scripts -# -# HOW TO BUILD THIS IMAGE -# ----------------------- -# Put the downloaded file in the same directory as this Dockerfile -# Run: -# $ docker build -t oracle/database:19.3.0-ee-nfs -f Dockerfile.nfs . -# -# Sample usage using docker swarm stack -# version: '3.6' -# services: -# db: -# image: oracle/database:19.3.0-ee-nfs -# hostname: db -# volumes: -# - db_data:/opt/oracle/oradata # persistent oracle database data. -# - /run/shm:/dev/shm -# ports: -# - 1521:1521 -# environment: -# - ORACLE_PWD=Oracle_2019 -# configs: -# - source: test_oranfstab_ee -# target: /opt/oracle/product/19c/dbhome_1/dbs/oranfstab -# configs: -# test_oranfstab_ee: -# external: true -# volumes: -# db_data: -# driver: local -# driver_opts: -# type: nfs -# o: addr=10.1.253.110,rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=4,timeo=600,noatime,noacl,nocto -# device: ":/dbdata/19c-ee" - -# external config sample file (test_oranfstab_ee), note multipath support using both NAS IPs -# server: NAS-DTICs -# path: 10.1.253.110 -# path: 10.1.1.241 -# nfs_version: nfsv4 -# export: /dbdata/19c-ee mount: /opt/oracle/oradata - - -# -# Pull base image -# --------------- -FROM oracle/database:19.3.0-ee - -# Maintainer -# ---------- -MAINTAINER Marcelo ochoa - -RUN cd $ORACLE_HOME/rdbms/lib && make -f ins_rdbms.mk dnfs_on From 60c97062cd2c11c16492759b4f668699bf243132 Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Wed, 22 Jul 2020 10:20:07 -0300 Subject: [PATCH 29/31] slim images for all versions --- .../dockerfiles/11.2.0.2/Dockerfile.slim | 96 +++++++ .../dockerfiles/11.2.0.2/cleanup.sh | 59 ++++ .../dockerfiles/11.2.0.2/runOracle-slim.sh | 270 ++++++++++++++++++ .../dockerfiles/12.1.0.2/Dockerfile.slim | 113 ++++++++ .../dockerfiles/12.1.0.2/cleanup.sh | 59 ++++ .../dockerfiles/12.1.0.2/createDB-slim.sh | 97 +++++++ .../dockerfiles/12.2.0.1/Dockerfile.slim | 111 +++++++ .../dockerfiles/12.2.0.1/cleanup.sh | 59 ++++ .../dockerfiles/12.2.0.1/createDB-slim.sh | 97 +++++++ .../dockerfiles/18.3.0/Dockerfile.slim | 111 +++++++ .../dockerfiles/18.3.0/cleanup.sh | 59 ++++ .../dockerfiles/18.3.0/createDB-slim.sh | 97 +++++++ .../dockerfiles/18.4.0/Dockerfile.slim | 50 ++-- .../dockerfiles/19.3.0/Dockerfile.slim | 111 +++++++ .../dockerfiles/19.3.0/cleanup.sh | 59 ++++ .../dockerfiles/19.3.0/createDB-slim.sh | 97 +++++++ 16 files changed, 1520 insertions(+), 25 deletions(-) create mode 100644 OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/Dockerfile.slim create mode 100644 OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/cleanup.sh create mode 100644 OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/runOracle-slim.sh create mode 100644 OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/Dockerfile.slim create mode 100755 OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/cleanup.sh create mode 100755 OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/createDB-slim.sh create mode 100644 OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/Dockerfile.slim create mode 100755 OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/cleanup.sh create mode 100755 OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/createDB-slim.sh create mode 100644 OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile.slim create mode 100755 OracleDatabase/SingleInstance/dockerfiles/18.3.0/cleanup.sh create mode 100755 OracleDatabase/SingleInstance/dockerfiles/18.3.0/createDB-slim.sh create mode 100644 OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile.slim create mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.3.0/cleanup.sh create mode 100755 OracleDatabase/SingleInstance/dockerfiles/19.3.0/createDB-slim.sh diff --git a/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/Dockerfile.slim b/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/Dockerfile.slim new file mode 100644 index 0000000000..30ecbdf419 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/Dockerfile.slim @@ -0,0 +1,96 @@ +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# +# ORACLE DOCKERFILES PROJECT +# -------------------------- +# This is the Dockerfile for Oracle Database 18c Express Edition +# +# REQUIRED FILES TO BUILD THIS IMAGE +# ---------------------------------- +# None +# +# HOW TO BUILD THIS IMAGE +# ----------------------- +# Put the downloaded file in the same directory as this Dockerfile +# Run: +# $ docker build -t oracle/database:11.2.0.2-xe-slim -f Dockerfile.slim . +# Sample usage with init-db directory having an RMAN full backup: +# $ docker run -ti --rm --name testdb -v /home/init-db:/opt/oracle/scripts/setup -v /run/shm:/dev/shm oracle/database:11.2.0.2-xe-slim +# passing init-db.tar.gz with a full RMAN backup initial db +# $ docker run -ti --rm --name testdb -v /home/init-db.tar.gz:/opt/oracle/scripts/setup/init-db.tar.gz -v /run/shm:/dev/shm oracle/database:11.2.0.2-xe-slim +# +# Pull base image +# --------------- +FROM oracle/database:11.2.0.2-xe AS db-xe +FROM oraclelinux:7-slim AS baseOS + +# Labels +# ------ +LABEL "provider"="Oracle" \ + "issues"="https://github.com/oracle/docker-images/issues" \ + "volume.data"="/u01/app/oracle/oradata" \ + "volume.setup.location1"="/u01/app/oracle/scripts/startup" \ + "volume.setup.location2"="/docker-entrypoint-initdb.d/setup" \ + "volume.startup.location1"="/u01/app/oracle/scripts/setup" \ + "volume.startup.location2"="/docker-entrypoint-initdb.d/startup" \ + "port.listener"="1521" \ + "port.apex"="8080" + +# Environment variables required for this build (do NOT change) +# ------------------------------------------------------------- +ENV ORACLE_BASE=/u01/app/oracle \ + ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe \ + ORACLE_SID=XE \ + INSTALL_FILE_1="oracle-xe-11.2.0-1.0.x86_64.rpm.zip" \ + INSTALL_DIR="$HOME/install" \ + CONFIG_RSP="xe.rsp" \ + RUN_FILE="runOracle-slim.sh" \ + PWD_FILE="setPassword.sh" \ + CLR_FILE="cleanup.sh" \ + CHECK_DB_FILE="checkDBStatus.sh" + +# Use second ENV so that variable get substituted +ENV PATH=$ORACLE_HOME/bin:$PATH + +RUN yum -y install unzip libaio bc initscripts net-tools openssl compat-libstdc++-33 && \ + rm -rf /var/cache/yum + +FROM baseOS AS baseInstall +# Copy Oracle XE installation +# ------------- +COPY $CLR_FILE $INSTALL_DIR/ + +COPY --from=db-xe --chown=root:root /etc/passwd /etc/passwd +COPY --from=db-xe --chown=root:root /etc/group /etc/group +COPY --from=db-xe --chown=root:root /etc/init.d/oracle-xe /etc/init.d/oracle-xe +COPY --from=db-xe --chown=oracle:dba $ORACLE_BASE/ $ORACLE_BASE/ + +RUN chmod +x $INSTALL_DIR/$CLR_FILE && \ + $INSTALL_DIR/$CLR_FILE + +FROM baseOS + +COPY --from=baseInstall --chown=root:root /etc/passwd /etc/passwd +COPY --from=baseInstall --chown=root:root /etc/group /etc/group +COPY --from=baseInstall --chown=root:root /etc/init.d/oracle-xe /etc/init.d/oracle-xe +COPY --from=baseInstall $ORACLE_BASE/ $ORACLE_BASE/ +COPY $RUN_FILE $PWD_FILE $CHECK_DB_FILE $ORACLE_BASE/ + +RUN mkdir -p /home/oracle && \ + chown -R oracle:dba /home/oracle && \ + chown oracle:dba $ORACLE_BASE && \ + sed -i -r 's/^(session\s+required\s+pam_limits.so)/#\1/' /etc/pam.d/* && \ + ln -s $ORACLE_BASE/$PWD_FILE / && \ + rm -rf /var/lib/rpm/* && \ + rm -rf /var/log/* && \ + ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d && \ + cd $HOME && \ + chmod ug+x $ORACLE_BASE/*.sh + +VOLUME ["$ORACLE_BASE/oradata"] +EXPOSE 1521 8080 5500 +HEALTHCHECK --interval=1m --start-period=20m \ + CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1 + +CMD exec $ORACLE_BASE/$RUN_FILE diff --git a/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/cleanup.sh b/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/cleanup.sh new file mode 100644 index 0000000000..ca7683f1f3 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/cleanup.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# Remove not needed components +rm -rf $ORACLE_HOME/apex +rm -rf $ORACLE_HOME/jdbc +# ZDLRA installer files +rm -rf $ORACLE_HOME/lib/ra*.zip +rm -rf $ORACLE_HOME/ords +rm -rf $ORACLE_HOME/sqldeveloper +rm -rf $ORACLE_HOME/ucp +# as we won't install patches +rm -rf $ORACLE_HOME/lib/*.a +find $ORACLE_HOME -name '*.a' -type f -delete +# OUI backup +rm -rf $ORACLE_HOME/inventory/backup/* +# Network tools help +rm -rf $ORACLE_HOME/network/tools/help/mgr/help_* +# Temp location +rm -rf /tmp/* +# Advised by Gerald Venzl +echo "Cleanup Advised by Gerald Venzl" +rm -rf $ORACLE_HOME/.patch_storage/* +rm -rf $ORACLE_HOME/R/* +rm -rf $ORACLE_HOME/assistants/* +rm -rf $ORACLE_HOME/cfgtoollogs/* +rm -rf $ORACLE_HOME/dmu/* +rm -rf $ORACLE_HOME/inventory/* +rm -rf $ORACLE_HOME/javavm/* +rm -rf $ORACLE_HOME/md/* +rm -rf $ORACLE_HOME/suptools/* +echo "Additional Cleanup by Jacek Gebal" +#additional cleanup- removes 1.2GB of DB-sources size - for small images only (no Java) +rm -rf $ORACLE_HOME/OPatch/ #OPatch --> Patching +rm -rf $ORACLE_HOME/crs/ #crs --> some clusterware single instance failover things +rm -rf $ORACLE_HOME/ctx/ #ctx --> Oracle Text (also used for JSON index) +rm -rf $ORACLE_HOME/cv/ #cv --> some patchign related stuff I think +rm -rf $ORACLE_HOME/has/ #has --> no clue +rm -rf $ORACLE_HOME/jdk/ #jdk --> Java jdk +rm -rf $ORACLE_HOME/jlib/ #jlib --> Java libraries +rm -rf $ORACLE_HOME/mgw/ #mgw --> Message gateway +rm -rf $ORACLE_HOME/odbc/ #odbc --> ODBC +rm -rf $ORACLE_HOME/olap/ #olap --> OLAP +rm -rf $ORACLE_HOME/ord/ #ord --> Multimedia I think +rm -rf $ORACLE_HOME/oui/ #oui --> Oracle Universal installer +rm -rf $ORACLE_HOME/owm/ #owm --> Workspace manger +rm -rf $ORACLE_HOME/perl/ #perl --> perl +rm -rf $ORACLE_HOME/precomp/ #precomp --> Not much clue either +rm -rf $ORACLE_HOME/sdk/ #sdk --> some more java I believe +rm -rf $ORACLE_HOME/sqlpatch/ #sqlpatch --> patching related stuff +rm -rf $ORACLE_HOME/usm/ #usm --> Universal storage management +rm -rf $ORACLE_HOME/rdbms/admin/cdb_cloud +rm -rf $ORACLE_HOME/rdbms/xml/em +rm -rf $ORACLE_HOME/relnotes +find $ORACLE_HOME -name '*.zip' -type f -delete +find $ORACLE_HOME -name '*.txt' -type f -delete +find $ORACLE_HOME -name '*O' -type f -delete +find $ORACLE_HOME -path '*/install/*' -delete +find $ORACLE_HOME -name 'install' -type d -delete + diff --git a/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/runOracle-slim.sh b/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/runOracle-slim.sh new file mode 100644 index 0000000000..8b16e11292 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/runOracle-slim.sh @@ -0,0 +1,270 @@ +#!/bin/bash + +############# Execute custom scripts ############## +function runUserScripts { + + SCRIPTS_ROOT="$1"; + + # Check whether parameter has been passed on + if [ -z "$SCRIPTS_ROOT" ]; then + echo "$0: No SCRIPTS_ROOT passed on, no scripts will be run"; + exit 1; + fi; + + # Execute custom provided files (only if directory exists and has files in it) + if [ -d "$SCRIPTS_ROOT" ] && [ -n "$(ls -A $SCRIPTS_ROOT)" ]; then + + echo ""; + echo "Executing user defined scripts" + + for f in $SCRIPTS_ROOT/*; do + case "$f" in + *.sh) echo "$0: running $f"; . "$f" ;; + *.sql) echo "$0: running $f"; echo "exit" | su -p oracle -c "$ORACLE_HOME/bin/sqlplus / as sysdba @$f"; echo ;; + *) echo "$0: ignoring $f" ;; + esac + echo ""; + done + + echo "DONE: Executing user defined scripts" + echo ""; + + fi; + +} + +########### Move DB files ############ +function moveFiles { + if [ ! -d $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID ]; then + su -p oracle -c "mkdir -p $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + fi; + + su -p oracle -c "mv $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + su -p oracle -c "mv $ORACLE_HOME/dbs/orapw$ORACLE_SID $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + su -p oracle -c "mv $ORACLE_HOME/network/admin/listener.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + su -p oracle -c "mv $ORACLE_HOME/network/admin/tnsnames.ora $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/" + mv /etc/sysconfig/oracle-xe $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ + + cp /etc/oratab $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/ + + symLinkFiles; +} + +########### Symbolic link DB files ############ +function symLinkFiles { + + if [ ! -L $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora ]; then + ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/spfile$ORACLE_SID.ora $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora + fi; + + if [ ! -L $ORACLE_HOME/dbs/orapw$ORACLE_SID ]; then + ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/orapw$ORACLE_SID $ORACLE_HOME/dbs/orapw$ORACLE_SID + fi; + + if [ ! -L $ORACLE_HOME/network/admin/listener.ora ]; then + ln -sf $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/listener.ora $ORACLE_HOME/network/admin/listener.ora + fi; + + if [ ! -L $ORACLE_HOME/network/admin/tnsnames.ora ]; then + ln -sf $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/tnsnames.ora $ORACLE_HOME/network/admin/tnsnames.ora + fi; + + if [ ! -L /etc/sysconfig/oracle-xe ]; then + ln -s $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/oracle-xe /etc/sysconfig/oracle-xe + fi; + + cp $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/oratab /etc/oratab +} + +########### SIGTERM handler ############ +function _term() { + echo "Stopping container." + echo "SIGTERM received, shutting down database!" + /etc/init.d/oracle-xe stop +} + +########### SIGKILL handler ############ +function _kill() { + echo "SIGKILL received, shutting down database!" + /etc/init.d/oracle-xe stop +} + +############# Create DB ################ +function createDB { + # Auto generate ORACLE PWD if not passed on + export ORACLE_PWD=${ORACLE_PWD:-"`openssl rand -hex 8`"} + echo "ORACLE PASSWORD FOR SYS AND SYSTEM: $ORACLE_PWD"; + + # configure + echo "#This is a configuration file for automatic starting of the Oracle +#Database and listener at system startup.It is generated By running +#'/etc/init.d/oracle-xe configure'.Please use that method to modify this +#file + +# ORACLE_DBENABLED:'true' means to load the Database at system boot. +ORACLE_DBENABLED=true + +# LISTENER_PORT: Database listener +LISTENER_PORT=1521 + +# HTTP_PORT : HTTP port for Oracle Application Express +HTTP_PORT=8080 + +# Configuration : Check whether configure has been done or not +CONFIGURE_RUN=true +" > /etc/sysconfig/oracle-xe + + # Listener + echo "# listener.ora Network Configuration File: + + SID_LIST_LISTENER = + (SID_LIST = + (SID_DESC = + (SID_NAME = PLSExtProc) + (ORACLE_HOME = $ORACLE_HOME) + (PROGRAM = extproc) + ) + ) + + LISTENER = + (DESCRIPTION_LIST = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + ) + ) + + DEFAULT_SERVICE_LISTENER = (XE)" > $ORACLE_HOME/network/admin/listener.ora + + # TNS Names.ora + echo "# tnsnames.ora Network Configuration File: + +XE = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = XE) + ) + ) + +EXTPROC_CONNECTION_DATA = + (DESCRIPTION = + (ADDRESS_LIST = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) + ) + (CONNECT_DATA = + (SID = PLSExtProc) + (PRESENTATION = RO) + ) + ) +" > $ORACLE_HOME/network/admin/tnsnames.ora + + su -p oracle -c "lsnrctl start" + + # make some required directories it not exists + su -p oracle -c "mkdir -p $ORACLE_BASE/oradata/$ORACLE_SID" + su -p oracle -c "mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump" + su -p oracle -c "mkdir -p $ORACLE_BASE/fast_recovery_area" + + # Check init-db.tar format + if [ -f $ORACLE_BASE/scripts/setup/init-db.tar ]; then + (cd $ORACLE_BASE/scripts/setup;tar xf init-db.tar) + fi; + + # Check init-db.tar.gz format + if [ -f $ORACLE_BASE/scripts/setup/init-db.tar.gz ]; then + (cd $ORACLE_BASE/scripts/setup;tar xfz init-db.tar.gz) + fi; + + # Check whether database already exists + if [ -f $ORACLE_BASE/scripts/setup/spfile.bks ]; then + # start process of restore from rman full backup, first spfile + su -p oracle -c "rman target /<> /etc/oratab + chown oracle:dba /etc/oratab + fi; + # Move database operational files to oradata + moveFiles; +} + +############# MAIN ################ + +# Set SIGTERM handler +trap _term SIGTERM + +# Set SIGKILL handler +trap _kill SIGKILL + +# Check whether database already exists +if [ -d $ORACLE_BASE/oradata/$ORACLE_SID ]; then + symLinkFiles; + # Make sure audit file destination exists + if [ ! -d $ORACLE_BASE/admin/$ORACLE_SID/adump ]; then + su -p oracle -c "mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump" + fi; +fi; + +/etc/init.d/oracle-xe start | grep -qc "Oracle Database 11g Express Edition is not configured" +if [ "$?" == "0" ]; then + # Check whether container has enough memory + if [ `df -Pk /dev/shm | tail -n 1 | awk '{print $2}'` -lt 1048576 ]; then + echo "Error: The container doesn't have enough memory allocated." + echo "A database XE container needs at least 1 GB of shared memory (/dev/shm)." + echo "You currently only have $((`df -Pk /dev/shm | tail -n 1 | awk '{print $2}'`/1024)) MB allocated to the container." + exit 1; + fi; + + # Create database + createDB; + + # Execute custom provided setup scripts + runUserScripts $ORACLE_BASE/scripts/setup +fi; + +# Check whether database is up and running +$ORACLE_BASE/$CHECK_DB_FILE +if [ $? -eq 0 ]; then + echo "#########################" + echo "DATABASE IS READY TO USE!" + echo "#########################" + + # Execute custom provided startup scripts + runUserScripts $ORACLE_BASE/scripts/startup + +else + echo "#####################################" + echo "########### E R R O R ###############" + echo "DATABASE SETUP WAS NOT SUCCESSFUL!" + echo "Please check output for further info!" + echo "########### E R R O R ###############" + echo "#####################################" +fi; + +echo "The following output is now a tail of the alert.log:" +tail -f $ORACLE_BASE/diag/rdbms/*/*/trace/alert*.log & +childPID=$! +wait $childPID diff --git a/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/Dockerfile.slim b/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/Dockerfile.slim new file mode 100644 index 0000000000..8a773dc6e5 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/Dockerfile.slim @@ -0,0 +1,113 @@ +# LICENSE UPL 1.0 +# +# Copyright (c) 2018, 2020 Oracle and/or its affiliates. +# +# ORACLE DOCKERFILES PROJECT +# -------------------------- +# This is the Dockerfile for Oracle Database 18c +# +# REQUIRED FILES TO BUILD THIS IMAGE +# ---------------------------------- +# (1) db_home.zip +# Download Oracle Database 18c Enterprise Edition or Standard Edition 2 for Linux x64 +# from http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html +# +# HOW TO BUILD THIS IMAGE +# ----------------------- +# Put all downloaded files in the same directory as this Dockerfile +# Run: +# $ docker build --build-arg DB_EDITION=ee -t oracle/database:12.1.0.2-ee-slim -f Dockerfile.slim . +# +# Pull base image +# --------------- + +# Labels +# ------ +ARG DB_EDITION + +FROM oracle/database:12.1.0.2-${DB_EDITION} AS db-base +FROM oraclelinux:7-slim as base + +LABEL "provider"="Oracle" \ + "issues"="https://github.com/oracle/docker-images/issues" \ + "volume.data"="/opt/oracle/oradata" \ + "volume.setup.location1"="/opt/oracle/scripts/setup" \ + "volume.setup.location2"="/docker-entrypoint-initdb.d/setup" \ + "volume.startup.location1"="/opt/oracle/scripts/startup" \ + "volume.startup.location2"="/docker-entrypoint-initdb.d/startup" \ + "port.listener"="1521" \ + "port.oemexpress"="5500" + +# Environment variables required for this build (do NOT change) +# ------------------------------------------------------------- +ENV ORACLE_BASE=/opt/oracle \ + ORACLE_HOME=/opt/oracle/product/12.1.0.2/dbhome_1 \ + INSTALL_DIR=/opt/install \ + INSTALL_FILE_1="linuxamd64_12102_database_1of2.zip" \ + INSTALL_FILE_2="linuxamd64_12102_database_2of2.zip" \ + INSTALL_RSP="db_inst.rsp" \ + CONFIG_RSP="dbca.rsp.tmpl" \ + PWD_FILE="setPassword.sh" \ + PERL_INSTALL_FILE="installPerl.sh" \ + RUN_FILE="runOracle.sh" \ + START_FILE="startDB.sh" \ + CREATE_DB_FILE="createDB-slim.sh" \ + CLR_FILE="cleanup.sh" \ + SETUP_LINUX_FILE="setupLinuxEnv.sh" \ + CHECK_SPACE_FILE="checkSpace.sh" \ + CHECK_DB_FILE="checkDBStatus.sh" \ + USER_SCRIPTS_FILE="runUserScripts.sh" \ + INSTALL_DB_BINARIES_FILE="installDBBinaries.sh" + +# Use second ENV so that variable get substituted +ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ + LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ + CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib + +# Copy files needed during both installation and runtime +# ------------- +COPY $SETUP_LINUX_FILE $CHECK_SPACE_FILE $CLR_FILE $INSTALL_DIR/ +COPY $RUN_FILE $START_FILE $CREATE_DB_FILE $CONFIG_RSP $PWD_FILE $CHECK_DB_FILE $USER_SCRIPTS_FILE $ORACLE_BASE/ + +RUN chmod ug+x $INSTALL_DIR/*.sh && \ + sync && \ + $INSTALL_DIR/$CHECK_SPACE_FILE && \ + $INSTALL_DIR/$SETUP_LINUX_FILE + +############################################# +# ------------------------------------------- +# Start new stage for installing the database +# ------------------------------------------- +############################################# + +FROM base AS builder + +USER oracle +COPY --from=db-base $ORACLE_BASE $ORACLE_BASE + +USER root +RUN $INSTALL_DIR/$CLR_FILE && \ + rm -rf $INSTALL_DIR + +############################################# +# ------------------------------------------- +# Start new layer for database runtime +# ------------------------------------------- +############################################# + +FROM base + +USER root +COPY --chown=oracle:dba --from=builder $ORACLE_BASE $ORACLE_BASE +COPY --chown=oracle:dba --from=db-base /etc/oratab /etc/oratab +COPY --chown=oracle:dba --from=db-base /etc/oratab /opt/oracle +COPY --chown=root:root --from=db-base /opt/ORCLfmap /opt/ORCLfmap + +USER oracle +WORKDIR /home/oracle + +HEALTHCHECK --interval=1m --start-period=5m \ + CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1 + +# Define default command to start Oracle Database. +CMD exec $ORACLE_BASE/$RUN_FILE diff --git a/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/cleanup.sh b/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/cleanup.sh new file mode 100755 index 0000000000..ca7683f1f3 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/cleanup.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# Remove not needed components +rm -rf $ORACLE_HOME/apex +rm -rf $ORACLE_HOME/jdbc +# ZDLRA installer files +rm -rf $ORACLE_HOME/lib/ra*.zip +rm -rf $ORACLE_HOME/ords +rm -rf $ORACLE_HOME/sqldeveloper +rm -rf $ORACLE_HOME/ucp +# as we won't install patches +rm -rf $ORACLE_HOME/lib/*.a +find $ORACLE_HOME -name '*.a' -type f -delete +# OUI backup +rm -rf $ORACLE_HOME/inventory/backup/* +# Network tools help +rm -rf $ORACLE_HOME/network/tools/help/mgr/help_* +# Temp location +rm -rf /tmp/* +# Advised by Gerald Venzl +echo "Cleanup Advised by Gerald Venzl" +rm -rf $ORACLE_HOME/.patch_storage/* +rm -rf $ORACLE_HOME/R/* +rm -rf $ORACLE_HOME/assistants/* +rm -rf $ORACLE_HOME/cfgtoollogs/* +rm -rf $ORACLE_HOME/dmu/* +rm -rf $ORACLE_HOME/inventory/* +rm -rf $ORACLE_HOME/javavm/* +rm -rf $ORACLE_HOME/md/* +rm -rf $ORACLE_HOME/suptools/* +echo "Additional Cleanup by Jacek Gebal" +#additional cleanup- removes 1.2GB of DB-sources size - for small images only (no Java) +rm -rf $ORACLE_HOME/OPatch/ #OPatch --> Patching +rm -rf $ORACLE_HOME/crs/ #crs --> some clusterware single instance failover things +rm -rf $ORACLE_HOME/ctx/ #ctx --> Oracle Text (also used for JSON index) +rm -rf $ORACLE_HOME/cv/ #cv --> some patchign related stuff I think +rm -rf $ORACLE_HOME/has/ #has --> no clue +rm -rf $ORACLE_HOME/jdk/ #jdk --> Java jdk +rm -rf $ORACLE_HOME/jlib/ #jlib --> Java libraries +rm -rf $ORACLE_HOME/mgw/ #mgw --> Message gateway +rm -rf $ORACLE_HOME/odbc/ #odbc --> ODBC +rm -rf $ORACLE_HOME/olap/ #olap --> OLAP +rm -rf $ORACLE_HOME/ord/ #ord --> Multimedia I think +rm -rf $ORACLE_HOME/oui/ #oui --> Oracle Universal installer +rm -rf $ORACLE_HOME/owm/ #owm --> Workspace manger +rm -rf $ORACLE_HOME/perl/ #perl --> perl +rm -rf $ORACLE_HOME/precomp/ #precomp --> Not much clue either +rm -rf $ORACLE_HOME/sdk/ #sdk --> some more java I believe +rm -rf $ORACLE_HOME/sqlpatch/ #sqlpatch --> patching related stuff +rm -rf $ORACLE_HOME/usm/ #usm --> Universal storage management +rm -rf $ORACLE_HOME/rdbms/admin/cdb_cloud +rm -rf $ORACLE_HOME/rdbms/xml/em +rm -rf $ORACLE_HOME/relnotes +find $ORACLE_HOME -name '*.zip' -type f -delete +find $ORACLE_HOME -name '*.txt' -type f -delete +find $ORACLE_HOME -name '*O' -type f -delete +find $ORACLE_HOME -path '*/install/*' -delete +find $ORACLE_HOME -name 'install' -type d -delete + diff --git a/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/createDB-slim.sh b/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/createDB-slim.sh new file mode 100755 index 0000000000..3ca6392cc5 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/createDB-slim.sh @@ -0,0 +1,97 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# +# Since: November, 2016 +# Author: gerald.venzl@oracle.com +# Description: Creates an Oracle Database based on following parameters: +# $ORACLE_SID: The Oracle SID and CDB name +# $ORACLE_PDB: The PDB name +# $ORACLE_PWD: The Oracle password +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +set -e + +# Check whether ORACLE_SID is passed on +export ORACLE_SID=${1:-ORCLCDB} + +# Check whether ORACLE_PDB is passed on +export ORACLE_PDB=${2:-ORCLPDB1} + +# Create network related config files (sqlnet.ora, tnsnames.ora, listener.ora) +mkdir -p $ORACLE_HOME/network/admin +echo "NAME.DIRECTORY_PATH= (TNSNAMES, EZCONNECT, HOSTNAME)" > $ORACLE_HOME/network/admin/sqlnet.ora + +# Listener.ora +echo "LISTENER = +(DESCRIPTION_LIST = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + ) +) + +DEDICATED_THROUGH_BROKER_LISTENER=ON +DIAG_ADR_ENABLED = off +" > $ORACLE_HOME/network/admin/listener.ora + +# Start LISTENER and run DBCA +lsnrctl start + +echo "$ORACLE_SID=localhost:1521/$ORACLE_SID" > $ORACLE_HOME/network/admin/tnsnames.ora +echo "$ORACLE_PDB= + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = $ORACLE_PDB) + ) + )" >> $ORACLE_HOME/network/admin/tnsnames.ora + +# make some required directories it not exists +mkdir -p $ORACLE_BASE/oradata/$ORACLE_SID +mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump +mkdir -p $ORACLE_BASE/fast_recovery_area + +# Check init-db.tar format +if [ -f /opt/oracle/scripts/setup/init-db.tar ]; then + (cd /opt/oracle/scripts/setup;tar xf init-db.tar) +fi; + +# Check init-db.tar.gz format +if [ -f /opt/oracle/scripts/setup/init-db.tar.gz ]; then + (cd /opt/oracle/scripts/setup;tar xfz init-db.tar.gz) +fi; + +# Check whether database already exists +if [ -f /opt/oracle/scripts/setup/spfile.bks ]; then + # start process of restore from rman full backup, first spfile + rman target /<> /etc/oratab +fi; diff --git a/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/Dockerfile.slim b/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/Dockerfile.slim new file mode 100644 index 0000000000..11108bf5e6 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/Dockerfile.slim @@ -0,0 +1,111 @@ +# LICENSE UPL 1.0 +# +# Copyright (c) 2018, 2020 Oracle and/or its affiliates. +# +# ORACLE DOCKERFILES PROJECT +# -------------------------- +# This is the Dockerfile for Oracle Database 18c +# +# REQUIRED FILES TO BUILD THIS IMAGE +# ---------------------------------- +# (1) db_home.zip +# Download Oracle Database 18c Enterprise Edition or Standard Edition 2 for Linux x64 +# from http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html +# +# HOW TO BUILD THIS IMAGE +# ----------------------- +# Put all downloaded files in the same directory as this Dockerfile +# Run: +# $ docker build --build-arg DB_EDITION=ee -t oracle/database:12.2.0.1-ee-slim -f Dockerfile.slim . +# +# Pull base image +# --------------- + +# Labels +# ------ +ARG DB_EDITION + +FROM oracle/database:12.2.0.1-${DB_EDITION} AS db-base +FROM oraclelinux:7-slim as base + +LABEL "provider"="Oracle" \ + "issues"="https://github.com/oracle/docker-images/issues" \ + "volume.data"="/opt/oracle/oradata" \ + "volume.setup.location1"="/opt/oracle/scripts/setup" \ + "volume.setup.location2"="/docker-entrypoint-initdb.d/setup" \ + "volume.startup.location1"="/opt/oracle/scripts/startup" \ + "volume.startup.location2"="/docker-entrypoint-initdb.d/startup" \ + "port.listener"="1521" \ + "port.oemexpress"="5500" + +# Environment variables required for this build (do NOT change) +# ------------------------------------------------------------- +ENV ORACLE_BASE=/opt/oracle \ + ORACLE_HOME=/opt/oracle/product/12.2.0.1/dbhome_1 \ + INSTALL_DIR=/opt/install \ + INSTALL_FILE_1="LINUX.linuxx64_12201_database.zip" \ + INSTALL_RSP="db_inst.rsp" \ + CONFIG_RSP="dbca.rsp.tmpl" \ + PWD_FILE="setPassword.sh" \ + RUN_FILE="runOracle.sh" \ + START_FILE="startDB.sh" \ + CREATE_DB_FILE="createDB-slim.sh" \ + CLR_FILE="cleanup.sh" \ + SETUP_LINUX_FILE="setupLinuxEnv.sh" \ + CHECK_SPACE_FILE="checkSpace.sh" \ + CHECK_DB_FILE="checkDBStatus.sh" \ + USER_SCRIPTS_FILE="runUserScripts.sh" \ + INSTALL_DB_BINARIES_FILE="installDBBinaries.sh" + +# Use second ENV so that variable get substituted +ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ + LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ + CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib + +# Copy files needed during both installation and runtime +# ------------- +COPY $SETUP_LINUX_FILE $CHECK_SPACE_FILE $CLR_FILE $INSTALL_DIR/ +COPY $RUN_FILE $START_FILE $CREATE_DB_FILE $CONFIG_RSP $PWD_FILE $CHECK_DB_FILE $USER_SCRIPTS_FILE $ORACLE_BASE/ + +RUN chmod ug+x $INSTALL_DIR/*.sh && \ + sync && \ + $INSTALL_DIR/$CHECK_SPACE_FILE && \ + $INSTALL_DIR/$SETUP_LINUX_FILE + +############################################# +# ------------------------------------------- +# Start new stage for installing the database +# ------------------------------------------- +############################################# + +FROM base AS builder + +USER oracle +COPY --from=db-base $ORACLE_BASE $ORACLE_BASE + +USER root +RUN $INSTALL_DIR/$CLR_FILE && \ + rm -rf $INSTALL_DIR + +############################################# +# ------------------------------------------- +# Start new layer for database runtime +# ------------------------------------------- +############################################# + +FROM base + +USER root +COPY --chown=oracle:dba --from=builder $ORACLE_BASE $ORACLE_BASE +COPY --chown=oracle:dba --from=db-base /etc/oratab /etc/oratab +COPY --chown=oracle:dba --from=db-base /etc/oratab /opt/oracle +COPY --chown=root:root --from=db-base /opt/ORCLfmap /opt/ORCLfmap + +USER oracle +WORKDIR /home/oracle + +HEALTHCHECK --interval=1m --start-period=5m \ + CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1 + +# Define default command to start Oracle Database. +CMD exec $ORACLE_BASE/$RUN_FILE diff --git a/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/cleanup.sh b/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/cleanup.sh new file mode 100755 index 0000000000..ca7683f1f3 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/cleanup.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# Remove not needed components +rm -rf $ORACLE_HOME/apex +rm -rf $ORACLE_HOME/jdbc +# ZDLRA installer files +rm -rf $ORACLE_HOME/lib/ra*.zip +rm -rf $ORACLE_HOME/ords +rm -rf $ORACLE_HOME/sqldeveloper +rm -rf $ORACLE_HOME/ucp +# as we won't install patches +rm -rf $ORACLE_HOME/lib/*.a +find $ORACLE_HOME -name '*.a' -type f -delete +# OUI backup +rm -rf $ORACLE_HOME/inventory/backup/* +# Network tools help +rm -rf $ORACLE_HOME/network/tools/help/mgr/help_* +# Temp location +rm -rf /tmp/* +# Advised by Gerald Venzl +echo "Cleanup Advised by Gerald Venzl" +rm -rf $ORACLE_HOME/.patch_storage/* +rm -rf $ORACLE_HOME/R/* +rm -rf $ORACLE_HOME/assistants/* +rm -rf $ORACLE_HOME/cfgtoollogs/* +rm -rf $ORACLE_HOME/dmu/* +rm -rf $ORACLE_HOME/inventory/* +rm -rf $ORACLE_HOME/javavm/* +rm -rf $ORACLE_HOME/md/* +rm -rf $ORACLE_HOME/suptools/* +echo "Additional Cleanup by Jacek Gebal" +#additional cleanup- removes 1.2GB of DB-sources size - for small images only (no Java) +rm -rf $ORACLE_HOME/OPatch/ #OPatch --> Patching +rm -rf $ORACLE_HOME/crs/ #crs --> some clusterware single instance failover things +rm -rf $ORACLE_HOME/ctx/ #ctx --> Oracle Text (also used for JSON index) +rm -rf $ORACLE_HOME/cv/ #cv --> some patchign related stuff I think +rm -rf $ORACLE_HOME/has/ #has --> no clue +rm -rf $ORACLE_HOME/jdk/ #jdk --> Java jdk +rm -rf $ORACLE_HOME/jlib/ #jlib --> Java libraries +rm -rf $ORACLE_HOME/mgw/ #mgw --> Message gateway +rm -rf $ORACLE_HOME/odbc/ #odbc --> ODBC +rm -rf $ORACLE_HOME/olap/ #olap --> OLAP +rm -rf $ORACLE_HOME/ord/ #ord --> Multimedia I think +rm -rf $ORACLE_HOME/oui/ #oui --> Oracle Universal installer +rm -rf $ORACLE_HOME/owm/ #owm --> Workspace manger +rm -rf $ORACLE_HOME/perl/ #perl --> perl +rm -rf $ORACLE_HOME/precomp/ #precomp --> Not much clue either +rm -rf $ORACLE_HOME/sdk/ #sdk --> some more java I believe +rm -rf $ORACLE_HOME/sqlpatch/ #sqlpatch --> patching related stuff +rm -rf $ORACLE_HOME/usm/ #usm --> Universal storage management +rm -rf $ORACLE_HOME/rdbms/admin/cdb_cloud +rm -rf $ORACLE_HOME/rdbms/xml/em +rm -rf $ORACLE_HOME/relnotes +find $ORACLE_HOME -name '*.zip' -type f -delete +find $ORACLE_HOME -name '*.txt' -type f -delete +find $ORACLE_HOME -name '*O' -type f -delete +find $ORACLE_HOME -path '*/install/*' -delete +find $ORACLE_HOME -name 'install' -type d -delete + diff --git a/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/createDB-slim.sh b/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/createDB-slim.sh new file mode 100755 index 0000000000..3ca6392cc5 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/createDB-slim.sh @@ -0,0 +1,97 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# +# Since: November, 2016 +# Author: gerald.venzl@oracle.com +# Description: Creates an Oracle Database based on following parameters: +# $ORACLE_SID: The Oracle SID and CDB name +# $ORACLE_PDB: The PDB name +# $ORACLE_PWD: The Oracle password +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +set -e + +# Check whether ORACLE_SID is passed on +export ORACLE_SID=${1:-ORCLCDB} + +# Check whether ORACLE_PDB is passed on +export ORACLE_PDB=${2:-ORCLPDB1} + +# Create network related config files (sqlnet.ora, tnsnames.ora, listener.ora) +mkdir -p $ORACLE_HOME/network/admin +echo "NAME.DIRECTORY_PATH= (TNSNAMES, EZCONNECT, HOSTNAME)" > $ORACLE_HOME/network/admin/sqlnet.ora + +# Listener.ora +echo "LISTENER = +(DESCRIPTION_LIST = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + ) +) + +DEDICATED_THROUGH_BROKER_LISTENER=ON +DIAG_ADR_ENABLED = off +" > $ORACLE_HOME/network/admin/listener.ora + +# Start LISTENER and run DBCA +lsnrctl start + +echo "$ORACLE_SID=localhost:1521/$ORACLE_SID" > $ORACLE_HOME/network/admin/tnsnames.ora +echo "$ORACLE_PDB= + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = $ORACLE_PDB) + ) + )" >> $ORACLE_HOME/network/admin/tnsnames.ora + +# make some required directories it not exists +mkdir -p $ORACLE_BASE/oradata/$ORACLE_SID +mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump +mkdir -p $ORACLE_BASE/fast_recovery_area + +# Check init-db.tar format +if [ -f /opt/oracle/scripts/setup/init-db.tar ]; then + (cd /opt/oracle/scripts/setup;tar xf init-db.tar) +fi; + +# Check init-db.tar.gz format +if [ -f /opt/oracle/scripts/setup/init-db.tar.gz ]; then + (cd /opt/oracle/scripts/setup;tar xfz init-db.tar.gz) +fi; + +# Check whether database already exists +if [ -f /opt/oracle/scripts/setup/spfile.bks ]; then + # start process of restore from rman full backup, first spfile + rman target /<> /etc/oratab +fi; diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile.slim b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile.slim new file mode 100644 index 0000000000..e2c5e25313 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile.slim @@ -0,0 +1,111 @@ +# LICENSE UPL 1.0 +# +# Copyright (c) 2018, 2020 Oracle and/or its affiliates. +# +# ORACLE DOCKERFILES PROJECT +# -------------------------- +# This is the Dockerfile for Oracle Database 18c +# +# REQUIRED FILES TO BUILD THIS IMAGE +# ---------------------------------- +# (1) db_home.zip +# Download Oracle Database 18c Enterprise Edition or Standard Edition 2 for Linux x64 +# from http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html +# +# HOW TO BUILD THIS IMAGE +# ----------------------- +# Put all downloaded files in the same directory as this Dockerfile +# Run: +# $ docker build --build-arg DB_EDITION=ee -t oracle/database:18.3.0-ee-slim -f Dockerfile.slim . +# +# Pull base image +# --------------- + +# Labels +# ------ +ARG DB_EDITION + +FROM oracle/database:18.3.0-${DB_EDITION} AS db-base +FROM oraclelinux:7-slim as base + +LABEL "provider"="Oracle" \ + "issues"="https://github.com/oracle/docker-images/issues" \ + "volume.data"="/opt/oracle/oradata" \ + "volume.setup.location1"="/opt/oracle/scripts/setup" \ + "volume.setup.location2"="/docker-entrypoint-initdb.d/setup" \ + "volume.startup.location1"="/opt/oracle/scripts/startup" \ + "volume.startup.location2"="/docker-entrypoint-initdb.d/startup" \ + "port.listener"="1521" \ + "port.oemexpress"="5500" + +# Environment variables required for this build (do NOT change) +# ------------------------------------------------------------- +ENV ORACLE_BASE=/opt/oracle \ + ORACLE_HOME=/opt/oracle/product/18c/dbhome_1 \ + INSTALL_DIR=/opt/install \ + INSTALL_FILE_1="LINUX.X64_180000_db_home.zip" \ + INSTALL_RSP="db_inst.rsp" \ + CONFIG_RSP="dbca.rsp.tmpl" \ + PWD_FILE="setPassword.sh" \ + RUN_FILE="runOracle.sh" \ + START_FILE="startDB.sh" \ + CREATE_DB_FILE="createDB-slim.sh" \ + CLR_FILE="cleanup.sh" \ + SETUP_LINUX_FILE="setupLinuxEnv.sh" \ + CHECK_SPACE_FILE="checkSpace.sh" \ + CHECK_DB_FILE="checkDBStatus.sh" \ + USER_SCRIPTS_FILE="runUserScripts.sh" \ + INSTALL_DB_BINARIES_FILE="installDBBinaries.sh" + +# Use second ENV so that variable get substituted +ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ + LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ + CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib + +# Copy files needed during both installation and runtime +# ------------- +COPY $SETUP_LINUX_FILE $CHECK_SPACE_FILE $CLR_FILE $INSTALL_DIR/ +COPY $RUN_FILE $START_FILE $CREATE_DB_FILE $CONFIG_RSP $PWD_FILE $CHECK_DB_FILE $USER_SCRIPTS_FILE $ORACLE_BASE/ + +RUN chmod ug+x $INSTALL_DIR/*.sh && \ + sync && \ + $INSTALL_DIR/$CHECK_SPACE_FILE && \ + $INSTALL_DIR/$SETUP_LINUX_FILE + +############################################# +# ------------------------------------------- +# Start new stage for installing the database +# ------------------------------------------- +############################################# + +FROM base AS builder + +USER oracle +COPY --from=db-base $ORACLE_BASE $ORACLE_BASE + +USER root +RUN $INSTALL_DIR/$CLR_FILE && \ + rm -rf $INSTALL_DIR + +############################################# +# ------------------------------------------- +# Start new layer for database runtime +# ------------------------------------------- +############################################# + +FROM base + +USER root +COPY --chown=oracle:dba --from=builder $ORACLE_BASE $ORACLE_BASE +COPY --chown=oracle:dba --from=db-base /etc/oratab /etc/oratab +COPY --chown=oracle:dba --from=db-base /etc/oratab /opt/oracle +COPY --chown=root:root --from=db-base /opt/ORCLfmap /opt/ORCLfmap + +USER oracle +WORKDIR /home/oracle + +HEALTHCHECK --interval=1m --start-period=5m \ + CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1 + +# Define default command to start Oracle Database. +CMD exec $ORACLE_BASE/$RUN_FILE diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/cleanup.sh b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/cleanup.sh new file mode 100755 index 0000000000..ca7683f1f3 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/cleanup.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# Remove not needed components +rm -rf $ORACLE_HOME/apex +rm -rf $ORACLE_HOME/jdbc +# ZDLRA installer files +rm -rf $ORACLE_HOME/lib/ra*.zip +rm -rf $ORACLE_HOME/ords +rm -rf $ORACLE_HOME/sqldeveloper +rm -rf $ORACLE_HOME/ucp +# as we won't install patches +rm -rf $ORACLE_HOME/lib/*.a +find $ORACLE_HOME -name '*.a' -type f -delete +# OUI backup +rm -rf $ORACLE_HOME/inventory/backup/* +# Network tools help +rm -rf $ORACLE_HOME/network/tools/help/mgr/help_* +# Temp location +rm -rf /tmp/* +# Advised by Gerald Venzl +echo "Cleanup Advised by Gerald Venzl" +rm -rf $ORACLE_HOME/.patch_storage/* +rm -rf $ORACLE_HOME/R/* +rm -rf $ORACLE_HOME/assistants/* +rm -rf $ORACLE_HOME/cfgtoollogs/* +rm -rf $ORACLE_HOME/dmu/* +rm -rf $ORACLE_HOME/inventory/* +rm -rf $ORACLE_HOME/javavm/* +rm -rf $ORACLE_HOME/md/* +rm -rf $ORACLE_HOME/suptools/* +echo "Additional Cleanup by Jacek Gebal" +#additional cleanup- removes 1.2GB of DB-sources size - for small images only (no Java) +rm -rf $ORACLE_HOME/OPatch/ #OPatch --> Patching +rm -rf $ORACLE_HOME/crs/ #crs --> some clusterware single instance failover things +rm -rf $ORACLE_HOME/ctx/ #ctx --> Oracle Text (also used for JSON index) +rm -rf $ORACLE_HOME/cv/ #cv --> some patchign related stuff I think +rm -rf $ORACLE_HOME/has/ #has --> no clue +rm -rf $ORACLE_HOME/jdk/ #jdk --> Java jdk +rm -rf $ORACLE_HOME/jlib/ #jlib --> Java libraries +rm -rf $ORACLE_HOME/mgw/ #mgw --> Message gateway +rm -rf $ORACLE_HOME/odbc/ #odbc --> ODBC +rm -rf $ORACLE_HOME/olap/ #olap --> OLAP +rm -rf $ORACLE_HOME/ord/ #ord --> Multimedia I think +rm -rf $ORACLE_HOME/oui/ #oui --> Oracle Universal installer +rm -rf $ORACLE_HOME/owm/ #owm --> Workspace manger +rm -rf $ORACLE_HOME/perl/ #perl --> perl +rm -rf $ORACLE_HOME/precomp/ #precomp --> Not much clue either +rm -rf $ORACLE_HOME/sdk/ #sdk --> some more java I believe +rm -rf $ORACLE_HOME/sqlpatch/ #sqlpatch --> patching related stuff +rm -rf $ORACLE_HOME/usm/ #usm --> Universal storage management +rm -rf $ORACLE_HOME/rdbms/admin/cdb_cloud +rm -rf $ORACLE_HOME/rdbms/xml/em +rm -rf $ORACLE_HOME/relnotes +find $ORACLE_HOME -name '*.zip' -type f -delete +find $ORACLE_HOME -name '*.txt' -type f -delete +find $ORACLE_HOME -name '*O' -type f -delete +find $ORACLE_HOME -path '*/install/*' -delete +find $ORACLE_HOME -name 'install' -type d -delete + diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/createDB-slim.sh b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/createDB-slim.sh new file mode 100755 index 0000000000..3ca6392cc5 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/createDB-slim.sh @@ -0,0 +1,97 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# +# Since: November, 2016 +# Author: gerald.venzl@oracle.com +# Description: Creates an Oracle Database based on following parameters: +# $ORACLE_SID: The Oracle SID and CDB name +# $ORACLE_PDB: The PDB name +# $ORACLE_PWD: The Oracle password +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +set -e + +# Check whether ORACLE_SID is passed on +export ORACLE_SID=${1:-ORCLCDB} + +# Check whether ORACLE_PDB is passed on +export ORACLE_PDB=${2:-ORCLPDB1} + +# Create network related config files (sqlnet.ora, tnsnames.ora, listener.ora) +mkdir -p $ORACLE_HOME/network/admin +echo "NAME.DIRECTORY_PATH= (TNSNAMES, EZCONNECT, HOSTNAME)" > $ORACLE_HOME/network/admin/sqlnet.ora + +# Listener.ora +echo "LISTENER = +(DESCRIPTION_LIST = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + ) +) + +DEDICATED_THROUGH_BROKER_LISTENER=ON +DIAG_ADR_ENABLED = off +" > $ORACLE_HOME/network/admin/listener.ora + +# Start LISTENER and run DBCA +lsnrctl start + +echo "$ORACLE_SID=localhost:1521/$ORACLE_SID" > $ORACLE_HOME/network/admin/tnsnames.ora +echo "$ORACLE_PDB= + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = $ORACLE_PDB) + ) + )" >> $ORACLE_HOME/network/admin/tnsnames.ora + +# make some required directories it not exists +mkdir -p $ORACLE_BASE/oradata/$ORACLE_SID +mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump +mkdir -p $ORACLE_BASE/fast_recovery_area + +# Check init-db.tar format +if [ -f /opt/oracle/scripts/setup/init-db.tar ]; then + (cd /opt/oracle/scripts/setup;tar xf init-db.tar) +fi; + +# Check init-db.tar.gz format +if [ -f /opt/oracle/scripts/setup/init-db.tar.gz ]; then + (cd /opt/oracle/scripts/setup;tar xfz init-db.tar.gz) +fi; + +# Check whether database already exists +if [ -f /opt/oracle/scripts/setup/spfile.bks ]; then + # start process of restore from rman full backup, first spfile + rman target /<> /etc/oratab +fi; diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.slim b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.slim index d0fe364997..fe65cf9ec4 100644 --- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.slim +++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.slim @@ -22,11 +22,21 @@ # # Pull base image # --------------- +FROM oracle/database:18.4.0-xe AS db-xe FROM oraclelinux:7-slim AS baseOS -# Maintainer -# ---------- -MAINTAINER Gerald Venzl +# Labels +# ------ +LABEL "provider"="Oracle" \ + "issues"="https://github.com/oracle/docker-images/issues" \ + "volume.data"="/opt/oracle/oradata" \ + "volume.setup.location1"="/opt/oracle/scripts/setup" \ + "volume.setup.location2"="/docker-entrypoint-initdb.d/setup" \ + "volume.startup.location1"="/opt/oracle/scripts/startup" \ + "volume.startup.location2"="/docker-entrypoint-initdb.d/startup" \ + "port.listener"="1521" \ + "port.oemexpress"="5500" \ + "port.apex"="8080" # Environment variables required for this build (do NOT change) # ------------------------------------------------------------- @@ -50,30 +60,18 @@ RUN yum -y install openssl file oracle-database-preinstall-18c && \ rm -rf /var/cache/yum FROM baseOS AS baseInstall -# Copy binaries +# Copy Oracle XE installation # ------------- -COPY $CHECK_SPACE_FILE $RUN_FILE $PWD_FILE $CLR_FILE $CHECK_DB_FILE $CONF_FILE $INSTALL_DIR/ +COPY $CLR_FILE $INSTALL_DIR/ -RUN chmod ug+x $INSTALL_DIR/*.sh && \ - sync && \ - $INSTALL_DIR/$CHECK_SPACE_FILE && \ - cd $INSTALL_DIR && \ - yum -y localinstall $INSTALL_FILE_1 && \ - $INSTALL_DIR/$CLR_FILE && \ - rm -rf /var/cache/yum && \ - mkdir -p $ORACLE_BASE/scripts/setup && \ - mkdir $ORACLE_BASE/scripts/startup && \ - ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d && \ - mkdir -p $ORACLE_BASE/oradata /home/oracle && \ - chown -R oracle:oinstall $ORACLE_BASE /home/oracle && \ - mv $INSTALL_DIR/$RUN_FILE $ORACLE_BASE/ && \ - mv $INSTALL_DIR/$PWD_FILE $ORACLE_BASE/ && \ - mv $INSTALL_DIR/$CHECK_DB_FILE $ORACLE_BASE/ && \ - mv $INSTALL_DIR/$CONF_FILE /etc/sysconfig/ && \ - ln -s $ORACLE_BASE/$PWD_FILE / && \ - cd $HOME && \ - rm -rf $INSTALL_DIR && \ - chmod ug+x $ORACLE_BASE/*.sh +COPY --from=db-xe --chown=oracle:oinstall $ORACLE_BASE/ $ORACLE_BASE/ +COPY --from=db-xe --chown=oracle:oinstall /etc/oratab /etc/oratab +COPY --from=db-xe --chown=root:root /etc/init.d/oracle-xe-18c /etc/init.d/oracle-xe-18c +COPY --from=db-xe --chown=root:root /etc/sysconfig/$CONF_FILE /etc/sysconfig/$CONF_FILE +COPY --from=db-xe --chown=root:root /opt/ORCLfmap /opt/ORCLfmap + +RUN chmod +x $INSTALL_DIR/$CLR_FILE && \ + $INSTALL_DIR/$CLR_FILE FROM baseOS @@ -81,6 +79,8 @@ COPY --from=baseInstall $ORACLE_BASE/ $ORACLE_BASE/ COPY --from=baseInstall /etc/oratab /etc/oratab COPY --from=baseInstall /etc/init.d/oracle-xe-18c /etc/init.d/oracle-xe-18c COPY --from=baseInstall /etc/sysconfig/$CONF_FILE /etc/sysconfig/$CONF_FILE +COPY --from=baseInstall /opt/ORCLfmap /opt/ORCLfmap +COPY $RUN_FILE $PWD_FILE $CHECK_DB_FILE $CONF_FILE $ORACLE_BASE/ RUN mkdir -p /home/oracle && \ chown -R oracle:oinstall /home/oracle && \ diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile.slim b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile.slim new file mode 100644 index 0000000000..8c937157ee --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile.slim @@ -0,0 +1,111 @@ +# LICENSE UPL 1.0 +# +# Copyright (c) 2018, 2020 Oracle and/or its affiliates. +# +# ORACLE DOCKERFILES PROJECT +# -------------------------- +# This is the Dockerfile for Oracle Database 18c +# +# REQUIRED FILES TO BUILD THIS IMAGE +# ---------------------------------- +# (1) db_home.zip +# Download Oracle Database 18c Enterprise Edition or Standard Edition 2 for Linux x64 +# from http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html +# +# HOW TO BUILD THIS IMAGE +# ----------------------- +# Put all downloaded files in the same directory as this Dockerfile +# Run: +# $ docker build --build-arg DB_EDITION=ee -t oracle/database:19.3.0-ee-slim -f Dockerfile.slim . +# +# Pull base image +# --------------- + +# Labels +# ------ +ARG DB_EDITION + +FROM oracle/database:19.3.0-${DB_EDITION} AS db-base +FROM oraclelinux:7-slim as base + +LABEL "provider"="Oracle" \ + "issues"="https://github.com/oracle/docker-images/issues" \ + "volume.data"="/opt/oracle/oradata" \ + "volume.setup.location1"="/opt/oracle/scripts/setup" \ + "volume.setup.location2"="/docker-entrypoint-initdb.d/setup" \ + "volume.startup.location1"="/opt/oracle/scripts/startup" \ + "volume.startup.location2"="/docker-entrypoint-initdb.d/startup" \ + "port.listener"="1521" \ + "port.oemexpress"="5500" + +# Environment variables required for this build (do NOT change) +# ------------------------------------------------------------- +ENV ORACLE_BASE=/opt/oracle \ + ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 \ + INSTALL_DIR=/opt/install \ + INSTALL_FILE_1="LINUX.X64_193000_db_home.zip" \ + INSTALL_RSP="db_inst.rsp" \ + CONFIG_RSP="dbca.rsp.tmpl" \ + PWD_FILE="setPassword.sh" \ + RUN_FILE="runOracle.sh" \ + START_FILE="startDB.sh" \ + CREATE_DB_FILE="createDB-slim.sh" \ + CLR_FILE="cleanup.sh" \ + SETUP_LINUX_FILE="setupLinuxEnv.sh" \ + CHECK_SPACE_FILE="checkSpace.sh" \ + CHECK_DB_FILE="checkDBStatus.sh" \ + USER_SCRIPTS_FILE="runUserScripts.sh" \ + INSTALL_DB_BINARIES_FILE="installDBBinaries.sh" + +# Use second ENV so that variable get substituted +ENV PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch/:/usr/sbin:$PATH \ + LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib \ + CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib + +# Copy files needed during both installation and runtime +# ------------- +COPY $SETUP_LINUX_FILE $CHECK_SPACE_FILE $CLR_FILE $INSTALL_DIR/ +COPY $RUN_FILE $START_FILE $CREATE_DB_FILE $CONFIG_RSP $PWD_FILE $CHECK_DB_FILE $USER_SCRIPTS_FILE $ORACLE_BASE/ + +RUN chmod ug+x $INSTALL_DIR/*.sh && \ + sync && \ + $INSTALL_DIR/$CHECK_SPACE_FILE && \ + $INSTALL_DIR/$SETUP_LINUX_FILE + +############################################# +# ------------------------------------------- +# Start new stage for installing the database +# ------------------------------------------- +############################################# + +FROM base AS builder + +USER oracle +COPY --from=db-base $ORACLE_BASE $ORACLE_BASE + +USER root +RUN $INSTALL_DIR/$CLR_FILE && \ + rm -rf $INSTALL_DIR + +############################################# +# ------------------------------------------- +# Start new layer for database runtime +# ------------------------------------------- +############################################# + +FROM base + +USER root +COPY --chown=oracle:dba --from=builder $ORACLE_BASE $ORACLE_BASE +COPY --chown=oracle:dba --from=db-base /etc/oratab /etc/oratab +COPY --chown=oracle:dba --from=db-base /etc/oratab /opt/oracle +COPY --chown=root:root --from=db-base /opt/ORCLfmap /opt/ORCLfmap + +USER oracle +WORKDIR /home/oracle + +HEALTHCHECK --interval=1m --start-period=5m \ + CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1 + +# Define default command to start Oracle Database. +CMD exec $ORACLE_BASE/$RUN_FILE diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.3.0/cleanup.sh b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/cleanup.sh new file mode 100755 index 0000000000..ca7683f1f3 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/cleanup.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# Remove not needed components +rm -rf $ORACLE_HOME/apex +rm -rf $ORACLE_HOME/jdbc +# ZDLRA installer files +rm -rf $ORACLE_HOME/lib/ra*.zip +rm -rf $ORACLE_HOME/ords +rm -rf $ORACLE_HOME/sqldeveloper +rm -rf $ORACLE_HOME/ucp +# as we won't install patches +rm -rf $ORACLE_HOME/lib/*.a +find $ORACLE_HOME -name '*.a' -type f -delete +# OUI backup +rm -rf $ORACLE_HOME/inventory/backup/* +# Network tools help +rm -rf $ORACLE_HOME/network/tools/help/mgr/help_* +# Temp location +rm -rf /tmp/* +# Advised by Gerald Venzl +echo "Cleanup Advised by Gerald Venzl" +rm -rf $ORACLE_HOME/.patch_storage/* +rm -rf $ORACLE_HOME/R/* +rm -rf $ORACLE_HOME/assistants/* +rm -rf $ORACLE_HOME/cfgtoollogs/* +rm -rf $ORACLE_HOME/dmu/* +rm -rf $ORACLE_HOME/inventory/* +rm -rf $ORACLE_HOME/javavm/* +rm -rf $ORACLE_HOME/md/* +rm -rf $ORACLE_HOME/suptools/* +echo "Additional Cleanup by Jacek Gebal" +#additional cleanup- removes 1.2GB of DB-sources size - for small images only (no Java) +rm -rf $ORACLE_HOME/OPatch/ #OPatch --> Patching +rm -rf $ORACLE_HOME/crs/ #crs --> some clusterware single instance failover things +rm -rf $ORACLE_HOME/ctx/ #ctx --> Oracle Text (also used for JSON index) +rm -rf $ORACLE_HOME/cv/ #cv --> some patchign related stuff I think +rm -rf $ORACLE_HOME/has/ #has --> no clue +rm -rf $ORACLE_HOME/jdk/ #jdk --> Java jdk +rm -rf $ORACLE_HOME/jlib/ #jlib --> Java libraries +rm -rf $ORACLE_HOME/mgw/ #mgw --> Message gateway +rm -rf $ORACLE_HOME/odbc/ #odbc --> ODBC +rm -rf $ORACLE_HOME/olap/ #olap --> OLAP +rm -rf $ORACLE_HOME/ord/ #ord --> Multimedia I think +rm -rf $ORACLE_HOME/oui/ #oui --> Oracle Universal installer +rm -rf $ORACLE_HOME/owm/ #owm --> Workspace manger +rm -rf $ORACLE_HOME/perl/ #perl --> perl +rm -rf $ORACLE_HOME/precomp/ #precomp --> Not much clue either +rm -rf $ORACLE_HOME/sdk/ #sdk --> some more java I believe +rm -rf $ORACLE_HOME/sqlpatch/ #sqlpatch --> patching related stuff +rm -rf $ORACLE_HOME/usm/ #usm --> Universal storage management +rm -rf $ORACLE_HOME/rdbms/admin/cdb_cloud +rm -rf $ORACLE_HOME/rdbms/xml/em +rm -rf $ORACLE_HOME/relnotes +find $ORACLE_HOME -name '*.zip' -type f -delete +find $ORACLE_HOME -name '*.txt' -type f -delete +find $ORACLE_HOME -name '*O' -type f -delete +find $ORACLE_HOME -path '*/install/*' -delete +find $ORACLE_HOME -name 'install' -type d -delete + diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.3.0/createDB-slim.sh b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/createDB-slim.sh new file mode 100755 index 0000000000..3ca6392cc5 --- /dev/null +++ b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/createDB-slim.sh @@ -0,0 +1,97 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# +# Since: November, 2016 +# Author: gerald.venzl@oracle.com +# Description: Creates an Oracle Database based on following parameters: +# $ORACLE_SID: The Oracle SID and CDB name +# $ORACLE_PDB: The PDB name +# $ORACLE_PWD: The Oracle password +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +set -e + +# Check whether ORACLE_SID is passed on +export ORACLE_SID=${1:-ORCLCDB} + +# Check whether ORACLE_PDB is passed on +export ORACLE_PDB=${2:-ORCLPDB1} + +# Create network related config files (sqlnet.ora, tnsnames.ora, listener.ora) +mkdir -p $ORACLE_HOME/network/admin +echo "NAME.DIRECTORY_PATH= (TNSNAMES, EZCONNECT, HOSTNAME)" > $ORACLE_HOME/network/admin/sqlnet.ora + +# Listener.ora +echo "LISTENER = +(DESCRIPTION_LIST = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + ) +) + +DEDICATED_THROUGH_BROKER_LISTENER=ON +DIAG_ADR_ENABLED = off +" > $ORACLE_HOME/network/admin/listener.ora + +# Start LISTENER and run DBCA +lsnrctl start + +echo "$ORACLE_SID=localhost:1521/$ORACLE_SID" > $ORACLE_HOME/network/admin/tnsnames.ora +echo "$ORACLE_PDB= + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = $ORACLE_PDB) + ) + )" >> $ORACLE_HOME/network/admin/tnsnames.ora + +# make some required directories it not exists +mkdir -p $ORACLE_BASE/oradata/$ORACLE_SID +mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump +mkdir -p $ORACLE_BASE/fast_recovery_area + +# Check init-db.tar format +if [ -f /opt/oracle/scripts/setup/init-db.tar ]; then + (cd /opt/oracle/scripts/setup;tar xf init-db.tar) +fi; + +# Check init-db.tar.gz format +if [ -f /opt/oracle/scripts/setup/init-db.tar.gz ]; then + (cd /opt/oracle/scripts/setup;tar xfz init-db.tar.gz) +fi; + +# Check whether database already exists +if [ -f /opt/oracle/scripts/setup/spfile.bks ]; then + # start process of restore from rman full backup, first spfile + rman target /<> /etc/oratab +fi; From 3a2f8406c5ea36a94bd293d8b85583c9f34e8730 Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Wed, 22 Jul 2020 16:23:30 -0300 Subject: [PATCH 30/31] buildImages.sh script with -l flag --- .../dockerfiles/buildDockerImage.sh | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh b/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh index 77a118c240..907b56eff9 100755 --- a/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh +++ b/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh @@ -12,7 +12,7 @@ usage() { cat << EOF -Usage: buildDockerImage.sh -v [version] [-e | -s | -x] [-i] [-o] [Docker build option] +Usage: buildDockerImage.sh -v [version] [-e | -s | -x] [-i] [-o] [-l] [Docker build option] Builds a Docker Image for Oracle Database. Parameters: @@ -21,6 +21,7 @@ Parameters: -e: creates image based on 'Enterprise Edition' -s: creates image based on 'Standard Edition 2' -x: creates image based on 'Express Edition' + -l: creates slim images based on 'Enterprise Edition' or 'Express Edition' -i: ignores the MD5 checksums -o: passes on Docker build option @@ -97,13 +98,14 @@ DOCKEROPS="" MIN_DOCKER_VERSION="17.09" MIN_PODMAN_VERSION="1.6.0" DOCKERFILE="Dockerfile" +SLIM=0 if [ "$#" -eq 0 ]; then usage; exit 1; fi -while getopts "hesxiv:o:" optname; do +while getopts "hlesxiv:o:" optname; do case "$optname" in "h") usage @@ -121,6 +123,9 @@ while getopts "hesxiv:o:" optname; do "x") EXPRESS=1 ;; + "l") + SLIM=1 + ;; "v") VERSION="$OPTARG" ;; @@ -161,13 +166,18 @@ elif [ $EXPRESS -eq 1 ]; then fi; # Which Dockerfile should be used? -if [ "$VERSION" == "12.1.0.2" ] || [ "$VERSION" == "11.2.0.2" ] || [ "$VERSION" == "18.4.0" ]; then - DOCKERFILE="$DOCKERFILE.$EDITION" +if [ $SLIM -eq 1 ]; then + DOCKERFILE="$DOCKERFILE.slim" + # Oracle Database Image Nameorigin + IMAGE_NAME="oracle/database:$VERSION-$EDITION-slim"; +else + if [ "$VERSION" == "12.1.0.2" ] || [ "$VERSION" == "11.2.0.2" ] || [ "$VERSION" == "18.4.0" ]; then + DOCKERFILE="$DOCKERFILE.$EDITION" + fi; + # Oracle Database Image Nameorigin + IMAGE_NAME="oracle/database:$VERSION-$EDITION"; fi; -# Oracle Database Image Name -IMAGE_NAME="oracle/database:$VERSION-$EDITION" - # Go into version folder cd "$VERSION" || { echo "Could not find version directory '$VERSION'"; From 3bd6d14ce48eb219d391c77162dfc367a110d480 Mon Sep 17 00:00:00 2001 From: Marcelo Ochoa Date: Wed, 24 Feb 2021 10:22:21 -0300 Subject: [PATCH 31/31] rename build script --- .../dockerfiles/{buildDockerImage.sh => buildContainerImage.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename OracleDatabase/SingleInstance/dockerfiles/{buildDockerImage.sh => buildContainerImage.sh} (100%) diff --git a/OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh b/OracleDatabase/SingleInstance/dockerfiles/buildContainerImage.sh similarity index 100% rename from OracleDatabase/SingleInstance/dockerfiles/buildDockerImage.sh rename to OracleDatabase/SingleInstance/dockerfiles/buildContainerImage.sh