diff --git a/smp-docker/compose/weblogic-oracle/docker-compose.yml b/smp-docker/compose/weblogic-oracle/docker-compose.yml index d10f300b730445a9a3b5563d605b82804203fe73..a19816edc4f93ad871affc7bdabfb5655700a51a 100644 --- a/smp-docker/compose/weblogic-oracle/docker-compose.yml +++ b/smp-docker/compose/weblogic-oracle/docker-compose.yml @@ -1,11 +1,14 @@ version: "3.0" services: database: - image: oracle/database:11.2.0.2-xe + image: smp-oradb-19.3.0-se2:${SMP_VERSION} container_name: smp_oracle_db + environment: + - ORACLE_CHARACTERSET=AL32UTF8 # set database encoding + - NLS_LANG=.AL32UTF8 # set sqlplus encoding for stating up scripts volumes: - - ./properties/db-scripts:/u01/app/oracle/scripts/setup # init script. - - shared-status-folder:/u01/status/ + - ./properties/db-scripts:/docker-entrypoint-initdb.d/startup # init script. + - ./status-folder:/u01/status/ ports: - 1921:1521 shm_size: '1gb' @@ -13,7 +16,7 @@ services: depends_on: - database # command: [bash, -c, "for i in `seq 10`; do timeout 1 bash -c '</dev/tcp/database/1521'; if [ $$? -eq 0 ] ; then break;fi;sleep 1; done;"] - command: [bash, -c, "for i in `seq 150`; do timeout 1 bash -c 'echo \" $$(ls /u01/status/)\"'; if [ -f '/u01/status/database.log' ] && [ \"$$( cat /u01/status/database.log )\" == 'DATABASE IS READY TO USE!' ] ; then break;fi; echo \"$$i. Wait for database!\"; sleep 2; done; /u01/oracle/startAdminServer.sh"] + command: [bash, -c, "for i in `seq 180`; do timeout 1 bash -c 'echo \" $$(ls /u01/status/)\"'; if [ -f '/u01/status/database.status' ] && [ \"$$( cat /u01/status/database.status )\" == 'DATABASE IS READY TO USE!' ] ; then break;fi; echo \"$$i. Wait for database!\"; sleep 10; done; /u01/oracle/startAdminServer.sh"] image: smp-weblogic-122:${SMP_VERSION} container_name: wls-smp hostname: wlsadmin @@ -21,7 +24,7 @@ services: JAVA_OPTIONS: "-Dweblogic.webservice.i18n.charset=utf-8" volumes: - ./properties/weblogic:/u01/oracle/properties - - shared-status-folder:/u01/status/ + - ./status-folder:/u01/status/ ports: - 7901:7001 volumes: diff --git a/smp-docker/compose/weblogic-oracle/properties/db-scripts/01_create_user.sql b/smp-docker/compose/weblogic-oracle/properties/db-scripts/01_create_user.sql index 13d1bd2e4f36e8bbd8dfe33bd24d426f070658d4..a2a865796395a5e878d271e1d2f7859bab8780cf 100644 --- a/smp-docker/compose/weblogic-oracle/properties/db-scripts/01_create_user.sql +++ b/smp-docker/compose/weblogic-oracle/properties/db-scripts/01_create_user.sql @@ -1,10 +1,9 @@ -create tablespace smp_tblspace datafile 'smp_tblspace.dat' size 10M autoextend on; -create temporary tablespace smp_tblspace_temp tempfile 'smp_tblspace_temp.dat' size 5M autoextend on; -create user smp identified by test default tablespace smp_tblspace temporary tablespace smp_tblspace_temp; +ALTER SESSION SET CONTAINER=ORCLPDB1; +CREATE USER smp IDENTIFIED BY "test" DEFAULT TABLESPACE users QUOTA UNLIMITED ON users; +GRANT CREATE SESSION TO smp; +GRANT CREATE TABLE TO smp; +GRANT CREATE VIEW TO smp; +GRANT CREATE SEQUENCE TO smp; +GRANT SELECT ON PENDING_TRANS$ TO smp; -grant create session to smp; -grant create sequence to smp; -grant create table to smp; -grant unlimited tablespace to smp; -exit; diff --git a/smp-docker/compose/weblogic-oracle/runCompose.sh b/smp-docker/compose/weblogic-oracle/runCompose.sh index 7b9fc9ec328d3bd2524008ec32573b9de65a3e15..151e924bc88c572e40d99dcd7b01ae78e042b953 100755 --- a/smp-docker/compose/weblogic-oracle/runCompose.sh +++ b/smp-docker/compose/weblogic-oracle/runCompose.sh @@ -8,12 +8,18 @@ PREFIX="smp-wls-orcl" SMP_VERSION= +ORA_VERSION="19.3.0" +ORA_EDITION="se2" +ORA_SERVICE="ORCLPDB1" +ORACLE_PDB="ORCLPDB1" +SMP_DB_USERNAME=smp; +SMP_DB_PASSWORD=test; # clear volume and containers - to run restart from strach -# READ argumnets +# READ arguments while getopts i:v: option do case "${option}" @@ -37,8 +43,43 @@ echo "Working Directory: ${WORKING_DIR}" echo "*************************************************************************" cd "$WORKING_DIR" + + + +function createDatabaseSchemaForUser() { + + echo "Clear file [$3] to recreate schema for user creation!" + echo "" > "$3" + echo "Create database schema/user: $1" + if [ -n "$ORACLE_PDB" ]; then + echo "ALTER SESSION SET CONTAINER=$ORACLE_PDB;" >>"$3" + fi + { + # magic with double quotes - first end " then put '"' and then add variable to "$Var" and repeat the stuff :) + echo "CREATE USER $1 IDENTIFIED BY "'"'"$2"'"'" DEFAULT TABLESPACE users QUOTA UNLIMITED ON users; " + echo "GRANT CREATE SESSION TO $1;" + echo "GRANT CREATE TABLE TO $1;" + echo "GRANT CREATE VIEW TO $1;" + echo "GRANT CREATE SEQUENCE TO $1;" + echo "GRANT SELECT ON PENDING_TRANS$ TO $1;" + echo "" + } >>"$3" +} + + +function clearOldContainers { + echo "Clear containers and volumes" + docker-compose -p "${PREFIX}" rm -s -f -v + docker volume rm "${PREFIX}_shared-status-folder" +} + + + + +createDatabaseSchemaForUser $SMP_DB_USERNAME $SMP_DB_PASSWORD ./properties/db-scripts/01_create_user.sql + # create database init script from -echo "CONNECT smp/test@//localhost:1521/xe;" > ./properties/db-scripts/02_oracle10g.sql +echo "CONNECT smp/test@//localhost:1521/${ORA_SERVICE};" > ./properties/db-scripts/02_oracle10g.sql cat "${SMP_INIT_DATABASE}" >> ./properties/db-scripts/02_oracle10g.sql @@ -50,29 +91,20 @@ if [ ! -f "${SMP_INIT_DATABASE_DATA}" ] exit 1; else # copy artefact to docker build folder - echo "CONNECT smp/test@//localhost:1521/xe;" > ./properties/db-scripts/03_oracle10g-data.sql + echo "CONNECT smp/test@//localhost:1521/${ORA_SERVICE};" > ./properties/db-scripts/03_oracle10g-data.sql cat "${SMP_INIT_DATABASE_DATA}" >> ./properties/db-scripts/03_oracle10g-data.sql fi - - -function clearOldContainers { - echo "Clear containers and volumes" - docker-compose -p "${PREFIX}" rm -s -f -v - docker volume rm "${PREFIX}_shared-status-folder" -} - - -# -# Always delete shared-status-folder else weblogic will start to quick! -# because statuses are sync over shared-status-folder folders and it could contain status from previous run. - +# Because statuses are synchronized through folder: ./status-folder it could contain a state from a previous start. +# Set content of the file database.status to "Database starting"! +echo "Database starting" > ./status-folder/database.status clearOldContainers # start export SMP_VERSION="${SMP_VERSION}" docker-compose -p ${PREFIX} up -d --force-recreate + # wait until service is up -for i in `seq 100`; do timeout 1 bash -c ' curl --head --silent --fail http://localhost:7901/smp/'; if [ $? -eq 0 ] ; then break;fi; echo "$i. Wait for weblogic to start!"; sleep 5; done; +for i in `seq 150`; do timeout 10 bash -c ' curl --head --silent --fail http://localhost:7901/smp/'; if [ $? -eq 0 ] ; then break;fi; echo "$i. Wait for weblogic to start!"; sleep 5; done; diff --git a/smp-docker/compose/weblogic-oracle/status-folder/database.status b/smp-docker/compose/weblogic-oracle/status-folder/database.status new file mode 100644 index 0000000000000000000000000000000000000000..4e22a70d041f0bdbac1b06601968f72252191bbd --- /dev/null +++ b/smp-docker/compose/weblogic-oracle/status-folder/database.status @@ -0,0 +1 @@ +Database stopped diff --git a/smp-docker/compose/weblogic-oracle/stopClearCompose.sh b/smp-docker/compose/weblogic-oracle/stopClearCompose.sh index d54c2ad37b052985f9ecc850eaaff1a58595ce5d..6d0e5e6c2b5240c80844e23e611b8b5a46e5780b 100755 --- a/smp-docker/compose/weblogic-oracle/stopClearCompose.sh +++ b/smp-docker/compose/weblogic-oracle/stopClearCompose.sh @@ -11,6 +11,7 @@ PREFIX="smp-wls-orcl" function clearOldContainers { + echo "Database stopped" > ./status-folder/database.status echo "Clear containers and volumes" docker-compose -p "${PREFIX}" rm -s -f -v docker volume rm "${PREFIX}_shared-status-folder" diff --git a/smp-docker/images/build-docker-images.sh b/smp-docker/images/build-docker-images.sh index 769af6d534dbffefacc645d721163bba2e0cf3bf..3ef7c02d1d959eefc43e6d3a35ce4c08ffd17a16 100755 --- a/smp-docker/images/build-docker-images.sh +++ b/smp-docker/images/build-docker-images.sh @@ -1,7 +1,7 @@ #!/bin/bash -# Script builds docker images for SMP oracle/weblogic environment. Docker images for database and weblogic are from -# https://github.com/oracle/docker-images +# Script builds docker images for SMP oracle/weblogic environment. Docker images for database and weblogic are from +# https://github.com/oracle/docker-images # Prerequisites: # 1. From oracle download: @@ -11,16 +11,22 @@ # and put them to folder ${ORACLE_ARTEFACTS} # # 2. build SMP mvn clean install -# 3. run the scripts with arguments +# 3. run the scripts with arguments # build-docker-images.sh -f build-docker-images.sh -f ${oracle_artefact_folder} - +ORA_VERSION="19.3.0" +ORA_EDITION="se2" +ORA_SERVICE="ORCLPDB1" -ORACLE_DB_FILE="oracle-xe-11.2.0-1.0.x86_64.rpm.zip" +ORACLE_DB11_FILE="oracle-xe-11.2.0-1.0.x86_64.rpm.zip" +ORACLE_DB19_FILE="LINUX.X64_193000_db_home.zip" +ORACLE_DOCKERFILE="Dockerfile.xe" + +ORACLE_DB_FILE="${ORACLE_DB11_FILE}" SERVER_JDK_FILE="server-jre-8u211-linux-x64.tar.gz" WEBLOGIC_122_QUICK_FILE="fmw_12.2.1.3.0_wls_quick_Disk1_1of1.zip" SMP_VERSION= -ORACLE_ARTEFACTS="/CEF/oracle-install" +ORACLE_ARTEFACTS="/CEF/repo" SMP_ARTEFACTS="../../smp-webapp/target/" SMP_ARTEFACTS_CLEAR="false" @@ -29,22 +35,19 @@ SMP_IMAGE_PUBLISH="false" DOCKER_USER=$bamboo_DOCKER_USER DOCKER_PASSWORD=$bamboo_DOCKER_PASSWORD +# READ argumnets +while getopts v:o:s:c:p: option; do + case "${option}" in -# READ argumnets -while getopts v:o:s:c:p: option -do - case "${option}" - in - v) SMP_VERSION=${OPTARG};; - o) ORACLE_ARTEFACTS=${OPTARG};; - s) SMP_ARTEFACTS=${OPTARG};; - c) SMP_ARTEFACTS_CLEAR=${OPTARG};; - p) SMP_IMAGE_PUBLISH=${OPTARG};; + v) SMP_VERSION=${OPTARG} ;; + o) ORACLE_ARTEFACTS=${OPTARG} ;; + s) SMP_ARTEFACTS=${OPTARG} ;; + c) SMP_ARTEFACTS_CLEAR=${OPTARG} ;; + p) SMP_IMAGE_PUBLISH=${OPTARG} ;; esac done -if [[ -z "${SML_VERSION}" ]] -then +if [[ -z "${SML_VERSION}" ]]; then # get version from setup file #cd "${SMP_ARTEFACTS}" #SMP_VERSION="$(ls smp-*-setup.zip | sed -e 's/.*smp-//g' | sed -e 's/-setup\.zip$//g')" @@ -52,7 +55,7 @@ then # go back to dirname fi -DIRNAME=`dirname "$0"` +DIRNAME=$(dirname "$0") cd "$DIRNAME" DIRNAME="$(pwd -P)" echo "*****************************************************************" @@ -62,60 +65,66 @@ echo "* Oracle artefact folders: $ORACLE_ARTEFACTS" echo "*****************************************************************" echo "" +# ----------------------------------------------------------------------------- +# validate all necessary artefacts and prepare files to build images +# ----------------------------------------------------------------------------- +validateAndPrepareArtefacts() { + case "${ORA_VERSION}" in + "19.3.0") + ORACLE_DB_FILE="${ORACLE_DB19_FILE}" + ORACLE_DOCKERFILE="Dockerfile" + ;; + "11.2.0.2") + ORACLE_DB_FILE="${ORACLE_DB11_FILE}" + ORACLE_DOCKERFILE="Dockerfile.xe" + ;; + esac + + + export ORA_VERSION + export ORA_EDITION + export ORA_SERVICE -# ----------------------------------------------------------------------------- -# validate all necessary artefacts and prepare files to build images -# ----------------------------------------------------------------------------- - validateAndPrepareArtefacts() { - # check oracle database - if [[ ! -f "${ORACLE_ARTEFACTS}/Oracle/OracleDatabase/11.2.0.2/${ORACLE_DB_FILE}" ]] - then - echo "Oracle database artefacts '${ORACLE_ARTEFACTS}/Oracle/OracleDatabase/11.2.0.2/${ORACLE_DB_FILE}' not found." - exit 1; + if [[ ! -f "${ORACLE_ARTEFACTS}/Oracle/OracleDatabase/${ORA_VERSION}/${ORACLE_DB_FILE}" ]]; then + echo "Oracle database artefacts '${ORACLE_ARTEFACTS}/Oracle/OracleDatabase/${ORA_VERSION}/${ORACLE_DB_FILE}' not found." + exit 1 else # copy artefact to docker build folder - cp "${ORACLE_ARTEFACTS}/Oracle/OracleDatabase/11.2.0.2/${ORACLE_DB_FILE}" ./oracle/oracle-db-11.2.0.2/ + cp "${ORACLE_ARTEFACTS}/Oracle/OracleDatabase/${ORA_VERSION}/${ORACLE_DB_FILE}" ./oracle/oracle-db-${ORA_VERSION}/ fi # check server JDK - if [[ ! -f "${ORACLE_ARTEFACTS}/Oracle/Java/${SERVER_JDK_FILE}" ]] - then + if [[ ! -f "${ORACLE_ARTEFACTS}/Oracle/Java/${SERVER_JDK_FILE}" ]]; then echo "Server JDK artefacts '${ORACLE_ARTEFACTS}/Oracle/Java/${SERVER_JDK_FILE}' not found." - exit 1; + exit 1 else # copy artefact to docker build folder cp "${ORACLE_ARTEFACTS}/Oracle/Java/${SERVER_JDK_FILE}" ./oracle/OracleJava/java-8/ fi - # check weblogic - if [[ ! -f "${ORACLE_ARTEFACTS}/${WEBLOGIC_122_QUICK_FILE}" ]] - then + # check weblogic + if [[ ! -f "${ORACLE_ARTEFACTS}/${WEBLOGIC_122_QUICK_FILE}" ]]; then echo "Weblogic artefacts '${ORACLE_ARTEFACTS}/${WEBLOGIC_122_QUICK_FILE}' not found." - exit 1; + exit 1 else # copy artefact to docker build folder - cp "${ORACLE_ARTEFACTS}/${WEBLOGIC_122_QUICK_FILE}" ./oracle/weblogic-12.2.1.3/ + cp "${ORACLE_ARTEFACTS}/${WEBLOGIC_122_QUICK_FILE}" ./oracle/weblogic-12.2.1.3/ fi - - if [[ ! -d "./tomcat-mysql/artefacts/" ]] - then + if [[ ! -d "./tomcat-mysql/artefacts/" ]]; then mkdir -p "./tomcat-mysql/artefacts/" fi - if [[ ! -d "./tomcat-mysql-smp-sml/artefacts/" ]] - then + if [[ ! -d "./tomcat-mysql-smp-sml/artefacts/" ]]; then mkdir -p "./tomcat-mysql-smp-sml/artefacts" fi - - # SMP artefats - if [[ ! -f "${SMP_ARTEFACTS}/smp.war" ]] - then + # SMP artefats + if [[ ! -f "${SMP_ARTEFACTS}/smp.war" ]]; then echo "SMP artefact '${SMP_ARTEFACTS}/smp.war' not found. Was project built!" - exit 1; + exit 1 else # copy artefact to docker build folder # for weblogic @@ -125,11 +134,10 @@ echo "" cp "${SMP_ARTEFACTS}/smp.war" ./tomcat-mysql-smp-sml/artefacts/smp.war fi - # SMP setup zip - if [[ ! -f "${SMP_ARTEFACTS}/smp-${SMP_VERSION}-setup.zip" ]] - then + # SMP setup zip + if [[ ! -f "${SMP_ARTEFACTS}/smp-${SMP_VERSION}-setup.zip" ]]; then echo "SMP setup boundle '${SMP_ARTEFACTS}/smp-${SMP_VERSION}-setup.zip' not found. Was project built!" - exit 1; + exit 1 else # copy artefact to docker build folder cp "${SMP_ARTEFACTS}/smp-${SMP_VERSION}-setup.zip" ./weblogic-12.2.1.3-smp/smp-setup.zip @@ -137,64 +145,58 @@ echo "" cp "${SMP_ARTEFACTS}/smp-${SMP_VERSION}-setup.zip" ./tomcat-mysql-smp-sml/artefacts/smp-setup.zip fi - - } - # ----------------------------------------------------------------------------- -# build docker images -# ----------------------------------------------------------------------------- - buildImages() { - - # ----------------------------------------------------------------------------- - # build docker image for oracle database - # ----------------------------------------------------------------------------- - # oracle 1.2.0.2-xe (https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2) - docker build -f ./oracle/oracle-db-11.2.0.2/Dockerfile.xe -t "smp-oradb-11.2.0.2-xe:${SMP_VERSION}" ./oracle/oracle-db-11.2.0.2/ +# build docker images +# ----------------------------------------------------------------------------- +buildImages() { - # ----------------------------------------------------------------------------- - # build docker image for oracle database - # ----------------------------------------------------------------------------- + # ----------------------------------------------------------------------------- + # build docker image for oracle database + # ----------------------------------------------------------------------------- + # oracle 1.2.0.2-xe (https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2) + docker build -f ./oracle/oracle-db-${ORA_VERSION}/${ORACLE_DOCKERFILE} -t "smp-oradb-${ORA_VERSION}-${ORA_EDITION}:${SMP_VERSION}" --build-arg DB_EDITION=${ORA_EDITION} ./oracle/oracle-db-${ORA_VERSION}/ - # create docker OS image with java (https://github.com/oracle/docker-images/tree/master/OracleJava/java-8) - docker build -t oracle/serverjre:8 ./oracle/OracleJava/java-8/ + # ----------------------------------------------------------------------------- + # build docker image for oracle database + # ----------------------------------------------------------------------------- - # create weblogic basic (https://github.com/oracle/docker-images/tree/master/OracleWebLogic/dockerfiles/12.2.1.3) - docker build -f ./oracle/weblogic-12.2.1.3/Dockerfile.developer -t oracle/weblogic:12.2.1.3-developer ./oracle/weblogic-12.2.1.3/ + # create docker OS image with java (https://github.com/oracle/docker-images/tree/master/OracleJava/java-8) + docker build -t oracle/serverjre:8 ./oracle/OracleJava/java-8/ - # create weblogic domain-home-in-image (https://github.com/oracle/docker-images/tree/master/OracleWebLogic/samples/12213-domain-home-in-image./) - ./oracle/weblogic-12213-domain-home-in-image/container-scripts/setEnv.sh ./oracle/weblogic-12213-domain-home-in-image/properties/docker-build/domain.properties - docker build $BUILD_ARG --force-rm=true -t oracle/12213-domain-home-in-image ./oracle/weblogic-12213-domain-home-in-image/ + # create weblogic basic (https://github.com/oracle/docker-images/tree/master/OracleWebLogic/dockerfiles/12.2.1.3) + docker build -f ./oracle/weblogic-12.2.1.3/Dockerfile.developer -t oracle/weblogic:12.2.1.3-developer ./oracle/weblogic-12.2.1.3/ + # create weblogic domain-home-in-image (https://github.com/oracle/docker-images/tree/master/OracleWebLogic/samples/12213-domain-home-in-image./) + ./oracle/weblogic-12213-domain-home-in-image/container-scripts/setEnv.sh ./oracle/weblogic-12213-domain-home-in-image/properties/docker-build/domain.properties + docker build $BUILD_ARG --force-rm=true -t oracle/12213-domain-home-in-image ./oracle/weblogic-12213-domain-home-in-image/ - # build SMP deployment. - docker build -t "smp-weblogic-122:${SMP_VERSION}" ./weblogic-12.2.1.3-smp/ --build-arg SMP_VERSION="$SMP_VERSION" + # build SMP deployment. + docker build -t "smp-weblogic-122:${SMP_VERSION}" ./weblogic-12.2.1.3-smp/ --build-arg SMP_VERSION="$SMP_VERSION" - # build tomcat mysql image deployment. - docker build -t "smp-tomcat-mysql:${SMP_VERSION}" ./tomcat-mysql/ --build-arg SMP_VERSION=${SMP_VERSION} + # build tomcat mysql image deployment. + docker build -t "smp-tomcat-mysql:${SMP_VERSION}" ./tomcat-mysql/ --build-arg SMP_VERSION=${SMP_VERSION} - # build tomcat mysql image deployment. - docker build -t "smp-sml-tomcat-mysql:${SMP_VERSION}" ./tomcat-mysql-smp-sml/ --build-arg SMP_VERSION=${SMP_VERSION} + # build tomcat mysql image deployment. + docker build -t "smp-sml-tomcat-mysql:${SMP_VERSION}" ./tomcat-mysql-smp-sml/ --build-arg SMP_VERSION=${SMP_VERSION} } -function pushImageToDockerhub { - - if [[ "V$SMP_IMAGE_PUBLISH" == "Vtrue" ]] - then - # login to docker - docker login --username="${DOCKER_USER}" --password="${DOCKER_PASSWORD}" - # push images - pushImageIfExisting "smp-tomcat-mysql:${SMP_VERSION}" - pushImageIfExisting "smp-sml-tomcat-mysql:${SMP_VERSION}" - pushImageIfExisting "smp-weblogic-122:${SMP_VERSION}" - pushImageIfExisting "smp-oradb-11.2.0.2-xe:${SMP_VERSION}" - fi -} +function pushImageToDockerhub() { + if [[ "V$SMP_IMAGE_PUBLISH" == "Vtrue" ]]; then + # login to docker + docker login --username="${DOCKER_USER}" --password="${DOCKER_PASSWORD}" + # push images + pushImageIfExisting "smp-tomcat-mysql:${SMP_VERSION}" + pushImageIfExisting "smp-sml-tomcat-mysql:${SMP_VERSION}" + pushImageIfExisting "smp-weblogic-122:${SMP_VERSION}" + pushImageIfExisting "smp-oradb-11.2.0.2-xe:${SMP_VERSION}" + fi +} -function pushImageIfExisting { +function pushImageIfExisting() { if [[ "x$(docker images -q "${1}")" != "x" ]]; then echo "Pushing image ${1}" docker tag "${1}" "${DOCKER_USER}"/"${1}" @@ -206,30 +208,27 @@ function pushImageIfExisting { } # ----------------------------------------------------------------------------- -# clean -# ----------------------------------------------------------------------------- - cleanArtefacts() { - rm "./oracle/oracle-db-11.2.0.2/${ORACLE_DB_FILE}" # clean - rm "./oracle/OracleJava/java-8/${SERVER_JDK_FILE}" # clean +# clean +# ----------------------------------------------------------------------------- +cleanArtefacts() { + rm "./oracle/oracle-db-${ORA_VERSION}/${ORACLE_DB_FILE}" # clean + rm "./oracle/OracleJava/java-8/${SERVER_JDK_FILE}" # clean rm "./oracle/weblogic-12.2.1.3/${WEBLOGIC_122_QUICK_FILE}" # clean rm "./weblogic-12.2.1.3-smp/smp.war" rm "./weblogic-12.2.1.3-smp/smp-setup.zip" - # clear also the tomcat/mysql image + # clear also the tomcat/mysql image rm -rf "./tomcat-mysql/artefacts/*.*" rm -rf "./tomcat-mysql-smp-sml/artefacts/*.*" - if [[ "V$SMP_ARTEFACTS_CLEAR" == "Vtrue" ]] - then - rm -rf "${SMP_ARTEFACTS}/smp-setup.zip" - rm -rf "${SMP_ARTEFACTS}/smp.war" + if [[ "V$SMP_ARTEFACTS_CLEAR" == "Vtrue" ]]; then + rm -rf "${SMP_ARTEFACTS}/smp-setup.zip" + rm -rf "${SMP_ARTEFACTS}/smp.war" fi } - validateAndPrepareArtefacts buildImages pushImageToDockerhub cleanArtefacts - diff --git a/smp-docker/images/oracle/README.md b/smp-docker/images/oracle/README.md index f40d7246456a7ed204a853ea6690a0867b839062..b73cbdce2826610be04b499b1f6fe9687382d3cc 100644 --- a/smp-docker/images/oracle/README.md +++ b/smp-docker/images/oracle/README.md @@ -2,7 +2,7 @@ Folder contains oracle images needed to build database and weblogic from [Oracle docker git](https://github.com/oracle/docker-images/). In order to build those images following files must be downloaded from Oracle page - - OracleDB: oracle-xe-11.2.0-1.0.x86_64.rpm.zip + - OracleDB 11xe: oracle-xe-11.2.0-1.0.x86_64.rpm.zip or - OracleDB 19c: LINUX.X64_193000_db_home.zip - Server JDK 1.8: server-jre-8u211-linux-x64.tar.gz (https://github.com/oracle/docker-images/tree/master/OracleJava) - weblogic 12.2.1.3: fmw_12.2.1.3.0_wls_quick_Disk1_1of1.zip diff --git a/smp-docker/images/oracle/oracle-db-11.2.0.2/runOracle.sh b/smp-docker/images/oracle/oracle-db-11.2.0.2/runOracle.sh index 19031c083f0283f5b37cace02d4fc0c7c264346e..d5b06fde4d83e445d80ecb3bdc86e813e96e2b62 100644 --- a/smp-docker/images/oracle/oracle-db-11.2.0.2/runOracle.sh +++ b/smp-docker/images/oracle/oracle-db-11.2.0.2/runOracle.sh @@ -202,7 +202,7 @@ fi; $ORACLE_BASE/$CHECK_DB_FILE if [ $? -eq 0 ]; then echo "#########################" - echo "DATABASE IS READY TO USE!" |& tee /u01/status/database.log + echo "DATABASE IS READY TO USE!" |& tee /u01/status/database.status echo "#########################" # Execute custom provided startup scripts @@ -211,7 +211,7 @@ if [ $? -eq 0 ]; then else echo "#####################################" echo "########### E R R O R ###############" - echo "DATABASE SETUP WAS NOT SUCCESSFUL!" |& tee /u01/status/database.log + echo "DATABASE SETUP WAS NOT SUCCESSFUL!" |& tee /u01/status/database.status echo "Please check output for further info!" echo "########### E R R O R ###############" echo "#####################################" diff --git a/smp-docker/images/oracle/oracle-db-19.3.0/Checksum.ee b/smp-docker/images/oracle/oracle-db-19.3.0/Checksum.ee new file mode 100644 index 0000000000000000000000000000000000000000..cf4bf5bc3e4f47f9a19d378ccac3980947f00879 --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.0/Checksum.ee @@ -0,0 +1 @@ +1858bd0d281c60f4ddabd87b1c214a4f LINUX.X64_193000_db_home.zip diff --git a/smp-docker/images/oracle/oracle-db-19.3.0/Checksum.se2 b/smp-docker/images/oracle/oracle-db-19.3.0/Checksum.se2 new file mode 100644 index 0000000000000000000000000000000000000000..cf4bf5bc3e4f47f9a19d378ccac3980947f00879 --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.0/Checksum.se2 @@ -0,0 +1 @@ +1858bd0d281c60f4ddabd87b1c214a4f LINUX.X64_193000_db_home.zip diff --git a/smp-docker/images/oracle/oracle-db-19.3.0/Dockerfile b/smp-docker/images/oracle/oracle-db-19.3.0/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..12acbc8c5244b0c991672db89440312d4b62d7ca --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.0/Dockerfile @@ -0,0 +1,121 @@ +# LICENSE UPL 1.0 +# +# Copyright (c) 2018, 2020 Oracle and/or its affiliates. +# +# ORACLE DOCKERFILES PROJECT +# -------------------------- +# This is the Dockerfile for Oracle Database 19c +# +# REQUIRED FILES TO BUILD THIS IMAGE +# ---------------------------------- +# (1) db_home.zip +# Download Oracle Database 19c 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.3.0-${EDITION} . +# +# Pull base image +# --------------- +FROM oraclelinux:7-slim as base + +# 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" + +# Argument to control removal of components not needed after db software installation +ARG SLIMMING=true + +# 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.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" \ + RELINK_BINARY_FILE="relinkOracleBinary.sh" \ + SLIMMING=$SLIMMING + +# 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 $RELINK_BINARY_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 + +# 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 + +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/smp-docker/images/oracle/oracle-db-19.3.0/checkDBStatus.sh b/smp-docker/images/oracle/oracle-db-19.3.0/checkDBStatus.sh new file mode 100755 index 0000000000000000000000000000000000000000..a96fe77e912040be33327dbf5a9f53b544dae308 --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.0/checkDBStatus.sh @@ -0,0 +1,40 @@ +#!/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`" +OPEN_MODE="READ WRITE" +ORAENV_ASK=NO +source oraenv + +# Check Oracle at least one PDB has open_mode "READ WRITE" and store it in status +status=`sqlplus -s / as sysdba << EOF + set heading off; + set pagesize 0; + SELECT DISTINCT open_mode FROM v\\$pdbs WHERE open_mode = '$OPEN_MODE'; + exit; +EOF` + +# Store return code from SQL*Plus +ret=$? + +# SQL Plus execution was successful and PDB is open +if [ $ret -eq 0 ] && [ "$status" = "$OPEN_MODE" ]; then + exit 0; +# PDB is not open +elif [ "$status" != "$OPEN_MODE" ]; then + exit 1; +# SQL Plus execution failed +else + exit 2; +fi; diff --git a/smp-docker/images/oracle/oracle-db-19.3.0/checkSpace.sh b/smp-docker/images/oracle/oracle-db-19.3.0/checkSpace.sh new file mode 100755 index 0000000000000000000000000000000000000000..9eda76d39d633fbca2dcb7ee52c9c26c391b8b2a --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.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 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/smp-docker/images/oracle/oracle-db-19.3.0/createDB.sh b/smp-docker/images/oracle/oracle-db-19.3.0/createDB.sh new file mode 100755 index 0000000000000000000000000000000000000000..1b3894b29b05a71c7f0543934097bfeb67430e97 --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.0/createDB.sh @@ -0,0 +1,99 @@ +#!/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} + +# Checking if only one of INIT_SGA_SIZE & INIT_PGA_SIZE is provided by the user +if [[ "${INIT_SGA_SIZE}" != "" && "${INIT_PGA_SIZE}" == "" ]] || [[ "${INIT_SGA_SIZE}" == "" && "${INIT_PGA_SIZE}" != "" ]]; then + echo "ERROR: Provide both the values, INIT_SGA_SIZE and INIT_PGA_SIZE or neither of them. Exiting."; + exit 1; +fi; + +# 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 both INIT_SGA_SIZE & INIT_PGA_SIZE aren't provided by user +if [[ "${INIT_SGA_SIZE}" == "" && "${INIT_PGA_SIZE}" == "" ]]; then + # 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; +else + sed -i -e "s|totalMemory=2048||g" $ORACLE_BASE/dbca.rsp + sed -i -e "s|initParams=.*|&,sga_target=${INIT_SGA_SIZE}M,pga_aggregate_target=${INIT_PGA_SIZE}M|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, enable EM global port +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; + EXEC DBMS_XDB_CONFIG.SETGLOBALPORTENABLED (TRUE); + exit; +EOF + +# Remove temporary response file +rm $ORACLE_BASE/dbca.rsp diff --git a/smp-docker/images/oracle/oracle-db-19.3.0/db_inst.rsp b/smp-docker/images/oracle/oracle-db-19.3.0/db_inst.rsp new file mode 100644 index 0000000000000000000000000000000000000000..afd579b9d7f12f431136539c5fe8cc5cf518a528 --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.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_v19.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/smp-docker/images/oracle/oracle-db-19.3.0/dbca.rsp.tmpl b/smp-docker/images/oracle/oracle-db-19.3.0/dbca.rsp.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..eb1c91d1f2534b45d540ef89d1e0e040a5fa8ea7 --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.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_v19.0.0 + +#----------------------------------------------------------------------------- +# Name : gdbName +# Datatype : String +# Description : Global database name of the database +# Valid values : <db_name>.<db_domain> - when database domain isn't NULL +# <db_name> - 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 : <db_name> 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/smp-docker/images/oracle/oracle-db-19.3.0/installDBBinaries.sh b/smp-docker/images/oracle/oracle-db-19.3.0/installDBBinaries.sh new file mode 100755 index 0000000000000000000000000000000000000000..b9ebc55f98222c661d88ce5bda466c9e2f34a03d --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.0/installDBBinaries.sh @@ -0,0 +1,87 @@ +#!/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 + +if $SLIMMING; then + # 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 +fi diff --git a/smp-docker/images/oracle/oracle-db-19.3.0/relinkOracleBinary.sh b/smp-docker/images/oracle/oracle-db-19.3.0/relinkOracleBinary.sh new file mode 100644 index 0000000000000000000000000000000000000000..5fc748b8e10bce33aa0f61186319280b8702c2bd --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.0/relinkOracleBinary.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 2020 Oracle and/or its affiliates. All rights reserved. +# +# Since: March, 2020 +# Author: rishabh.y.gupta@oracle.com +# Description: Relinks oracle binary in accordance with the edition passed by the user. +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +LIB_EDITION="$(/usr/bin/ar t $ORACLE_HOME/lib/libedtn$($ORACLE_HOME/bin/oraversion -majorVersion).a)" +LIB_EDITION=$(echo ${LIB_EDITION} | cut -d. -f1) +LIB_EDITION=${LIB_EDITION: -3} + +if [ "${LIB_EDITION}" == "ent" ]; then + CURRENT_EDITION="ENTERPRISE" +fi + +if [ "${LIB_EDITION}" == "std" ]; then + CURRENT_EDITION="STANDARD" +fi + +# If datafiles already exists +if [ -d $ORACLE_BASE/oradata/$ORACLE_SID ]; then + datafiles_edition=$(ls $ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/.docker_* | rev | cut -d_ -f1 | rev) + if [ "${ORACLE_EDITION}" != "" ] && [ "${ORACLE_EDITION,,}" != $datafiles_edition ]; then + echo "The datafiles being used were created with $datafiles_edition edition software home. Please pass -e ORACLE_EDITION=$datafiles_edition to the docker run cmd."; + exit 1; + elif [ "${ORACLE_EDITION}" == "" ] && [ "${CURRENT_EDITION,,}" != $datafiles_edition ]; then + echo "The current software home is of ${CURRENT_EDITION,,} edition whereas the datafiles being used were created with $datafiles_edition edition software home. Please pass -e ORACLE_EDITION=$datafiles_edition to the docker run cmd."; + exit 1; + fi +fi + +if [ "${ORACLE_EDITION}" != "" ]; then + if [ "${CURRENT_EDITION}" != "${ORACLE_EDITION^^}" ]; then + echo "Relinking oracle binary for edition: ${ORACLE_EDITION}"; + cmd="make -f ${ORACLE_HOME}/rdbms/lib/ins_rdbms.mk edition_${ORACLE_EDITION,,} ioracle"; + echo "$cmd"; + $cmd; + CURRENT_EDITION=${ORACLE_EDITION^^} + fi +fi + +echo "ORACLE EDITION: ${CURRENT_EDITION}" +touch $ORACLE_HOME/install/.docker_${CURRENT_EDITION,,} diff --git a/smp-docker/images/oracle/oracle-db-19.3.0/runOracle.sh b/smp-docker/images/oracle/oracle-db-19.3.0/runOracle.sh new file mode 100755 index 0000000000000000000000000000000000000000..169ef6bf810924a296a787a2bd06b2e48af6ac80 --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.0/runOracle.sh @@ -0,0 +1,205 @@ +#!/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/ + mv $ORACLE_HOME/install/.docker_* $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 <<EOF + shutdown immediate; + exit; +EOF + lsnrctl stop +} + +########### SIGTERM handler ############ +function _term() { + echo "Stopping container." + echo "SIGTERM received, shutting down database!" + sqlplus / as sysdba <<EOF + shutdown immediate; + exit; +EOF + lsnrctl stop +} + +################################### +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # +############# MAIN ################ +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # +################################### + +# Check whether container has enough memory +# Github issue #219: Prevent integer overflow, +# only check if memory digits are less than 11 (single GB range and below) +if [ `cat /sys/fs/cgroup/memory/memory.limit_in_bytes | wc -c` -lt 11 ]; then + if [ `cat /sys/fs/cgroup/memory/memory.limit_in_bytes` -lt 2147483648 ]; then + echo "Error: The container doesn't have enough memory allocated." + echo "A database container needs at least 2 GB of memory." + echo "You currently only have $((`cat /sys/fs/cgroup/memory/memory.limit_in_bytes`/1024/1024/1024)) GB allocated to the container." + exit 1; + fi; +fi; + +# Check that hostname doesn't container any "_" +# Github issue #711 +if hostname | grep -q "_"; then + echo "Error: The hostname must not container any '_'". + echo "Your current hostname is '$(hostname)'" +fi; + +# Set SIGINT handler +trap _int SIGINT + +# Set SIGTERM handler +trap _term SIGTERM + +# Default for ORACLE SID +if [ "$ORACLE_SID" == "" ]; then + export ORACLE_SID=ORCLCDB +else + # Make ORACLE_SID upper case + # Github issue # 984 + export ORACLE_SID=${ORACLE_SID^^} + + # Check whether SID is no longer than 12 bytes + # Github issue #246: Cannot start OracleDB image + if [ "${#ORACLE_SID}" -gt 12 ]; then + echo "Error: The ORACLE_SID must only be up to 12 characters long." + exit 1; + fi; + + # Check whether SID is alphanumeric + # Github issue #246: Cannot start OracleDB image + if [[ "$ORACLE_SID" =~ [^a-zA-Z0-9] ]]; then + echo "Error: The ORACLE_SID must be alphanumeric." + exit 1; + fi; +fi; + +# Default for ORACLE PDB +export ORACLE_PDB=${ORACLE_PDB:-ORCLPDB1} + +# Make ORACLE_PDB upper case +# Github issue # 984 +export ORACLE_PDB=${ORACLE_PDB^^} + +# Default for ORACLE CHARACTERSET +export ORACLE_CHARACTERSET=${ORACLE_CHARACTERSET:-AL32UTF8} + +# Call relinkOracleBinary.sh before the database is created or started +. "$ORACLE_BASE/$RELINK_BINARY_FILE" + +# 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 + mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump + fi; + + # Start database + $ORACLE_BASE/$START_FILE; + +else + # Remove database config files, if they exist + rm -f $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora + rm -f $ORACLE_HOME/dbs/orapw$ORACLE_SID + rm -f $ORACLE_HOME/network/admin/sqlnet.ora + rm -f $ORACLE_HOME/network/admin/listener.ora + rm -f $ORACLE_HOME/network/admin/tnsnames.ora + + # Create database + $ORACLE_BASE/$CREATE_DB_FILE $ORACLE_SID $ORACLE_PDB $ORACLE_PWD || exit 1; + + # Move database operational files to oradata + moveFiles; + + # Execute custom provided setup scripts + $ORACLE_BASE/$USER_SCRIPTS_FILE $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 + $ORACLE_BASE/$USER_SCRIPTS_FILE $ORACLE_BASE/scripts/startup + + echo "DATABASE IS READY TO USE!" > /u01/status/database.status + +else + echo "#####################################" + echo "########### E R R O R ###############" + echo "DATABASE SETUP WAS NOT SUCCESSFUL!" |& tee /u01/status/database.status + echo "Please check output for further info!" + echo "########### E R R O R ###############" + echo "#####################################" +fi; + +# Tail on alert log and wait (otherwise container will exit) +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/smp-docker/images/oracle/oracle-db-19.3.0/runUserScripts.sh b/smp-docker/images/oracle/oracle-db-19.3.0/runUserScripts.sh new file mode 100755 index 0000000000000000000000000000000000000000..3ebf2305b07c2765db8bb0ab5d0a70e89d7c5d3f --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.0/runUserScripts.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# LICENSE UPL 1.0 +# +# Copyright (c) 1982-2018 Oracle and/or its affiliates. All rights reserved. +# +# Since: July, 2017 +# Author: gerald.venzl@oracle.com +# Description: Runs user shell and SQL scripts +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +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" | $ORACLE_HOME/bin/sqlplus -s "/ as sysdba" @"$f"; echo ;; + *) echo "$0: ignoring $f" ;; + esac + echo ""; + done + + echo "DONE: Executing user defined scripts" + echo ""; + +fi; \ No newline at end of file diff --git a/smp-docker/images/oracle/oracle-db-19.3.0/setPassword.sh b/smp-docker/images/oracle/oracle-db-19.3.0/setPassword.sh new file mode 100755 index 0000000000000000000000000000000000000000..cd140cd38f76eb4041a1c488129268fc30ad32ef --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.0/setPassword.sh @@ -0,0 +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 + +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 + diff --git a/smp-docker/images/oracle/oracle-db-19.3.0/setupLinuxEnv.sh b/smp-docker/images/oracle/oracle-db-19.3.0/setupLinuxEnv.sh new file mode 100755 index 0000000000000000000000000000000000000000..42994830ab7fa5e1c7a5bcda3473b1cc60a39454 --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.0/setupLinuxEnv.sh @@ -0,0 +1,26 @@ +#!/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. +# + +# Setup filesystem and oracle user +# Adjust file permissions, go to /opt/oracle as user 'oracle' to proceed with Oracle installation +# ------------------------------------------------------------ +mkdir -p $ORACLE_BASE/scripts/setup && \ +mkdir $ORACLE_BASE/scripts/startup && \ +ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d && \ +mkdir $ORACLE_BASE/oradata && \ +mkdir -p $ORACLE_HOME && \ +chmod ug+x $ORACLE_BASE/*.sh && \ +yum -y install oracle-database-preinstall-19c openssl && \ +rm -rf /var/cache/yum && \ +ln -s $ORACLE_BASE/$PWD_FILE /home/oracle/ && \ +echo oracle:oracle | chpasswd && \ +chown -R oracle:dba $ORACLE_BASE diff --git a/smp-docker/images/oracle/oracle-db-19.3.0/startDB.sh b/smp-docker/images/oracle/oracle-db-19.3.0/startDB.sh new file mode 100755 index 0000000000000000000000000000000000000000..2a88ecd7f60567141891ddefb28498252fd2974a --- /dev/null +++ b/smp-docker/images/oracle/oracle-db-19.3.0/startDB.sh @@ -0,0 +1,28 @@ +#!/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: Starts the Listener and Oracle Database. +# The ORACLE_HOME and the PATH has to be set. +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# + +# Check that ORACLE_HOME is set +if [ "$ORACLE_HOME" == "" ]; then + script_name=`basename "$0"` + echo "$script_name: ERROR - ORACLE_HOME is not set. Please set ORACLE_HOME and PATH before invoking this script." + exit 1; +fi; + +# Start Listener +lsnrctl start + +# Start database +sqlplus / as sysdba << EOF + STARTUP; + exit; +EOF diff --git a/smp-docker/images/weblogic-12.2.1.3-smp/container-scripts/datasource.properties.oracle b/smp-docker/images/weblogic-12.2.1.3-smp/container-scripts/datasource.properties.oracle index 01c54656ac1547b23da86aa816587869aca97842..8ec8cf756a8176828005b97ad544d6e409353446 100644 --- a/smp-docker/images/weblogic-12.2.1.3-smp/container-scripts/datasource.properties.oracle +++ b/smp-docker/images/weblogic-12.2.1.3-smp/container-scripts/datasource.properties.oracle @@ -2,7 +2,7 @@ dsname=cipaeDeliveryDs dsdbname=default;create=true dsjndiname=jdbc/cipaeDeliveryDs dsdriver=oracle.jdbc.OracleDriver -dsurl=jdbc:oracle:thin:@//database:1521/xe +dsurl=jdbc:oracle:thin:@//database:1521/ORCLPDB1 dsusername=smp dspassword=test dstestquery=SQL ISVALID