From f7e115c350ada888952b80878fb7707535ee0516 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 24 Jan 2021 16:30:48 -0700 Subject: [PATCH 001/192] Build full image Signed-off-by: gvenzl --- Dockerfile.11202.full | 38 +++++ install.11202.sh | 320 ++++++++++++++++++++++++++++++++++++++++++ runDB.sh | 172 +++++++++++++++++++++++ xe.11202.rsp | 5 + 4 files changed, 535 insertions(+) create mode 100644 Dockerfile.11202.full create mode 100644 install.11202.sh create mode 100644 runDB.sh create mode 100644 xe.11202.rsp diff --git a/Dockerfile.11202.full b/Dockerfile.11202.full new file mode 100644 index 0000000..977e52e --- /dev/null +++ b/Dockerfile.11202.full @@ -0,0 +1,38 @@ +# +# Since: January, 2021 +# Author: gvenzl +# Name: Dockerfile.11202.full +# Description: Dockerfile to build the full Oracle DB XE 11.2.0.2 as it comes. +# No functionality is removed, just log files, etc. cleaned up. +# Additional required packages, such as gcc and make are installed +# (needed for native PL/SQL execution, etc.) +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM centos:centos8 + +ENV ORACLE_BASE=/u01/app/oracle \ + ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe \ + ORACLE_SID=XE \ + PATH=${PATH}:/u01/app/oracle/product/11.2.0/xe/bin + +COPY oracle-xe-11.2.0-1.0.x86_64.rpm xe.11202.rsp install.11202.sh runDB.sh /install/ + +RUN /install/install.11202.sh "FULL" + +USER oracle +WORKDIR ${ORACLE_BASE} + +CMD exec ${ORACLE_BASE}/runDB.sh \ No newline at end of file diff --git a/install.11202.sh b/install.11202.sh new file mode 100644 index 0000000..a899278 --- /dev/null +++ b/install.11202.sh @@ -0,0 +1,320 @@ +#!/bin/bash +# Since: January, 2021 +# Author: gvenzl +# Name: install.11202.sh +# Description: Install script for Oracle DB XE 11.2.0.2 +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +echo "BUILDER: started" + +# Build mode ("SLIM", "NORMAL", "FULL") +BUILD_MODE=${1:-"NORMAL"} + +echo "BUILDER: BUILD_MODE=${BUILD_MODE}" + +# Set data file sizes +if [ "${BUILD_MODE}" == "FULL" ]; then + REDO_SIZE=50 +elif [ "${BUILD_MODE}" == "NORMAL" ]; then + REDO_SIZE=20 +elif [ "${BUILD_MODE}" == "SLIM" ]; then + REDO_SIZE=10 +fi; + +echo "BUILDER: installing additional packages" + +# Install required system packages +dnf -y install libaio libnsl bc + +# Install GCC and other packages for full installation +if [ "${BUILD_MODE}" == "FULL" ]; then + dnf -y install glibc make binutils gcc +fi; + +# Fake 2 GB swap configuration +free() { echo "Swap: 0 0 2048"; } +export -f free + +################################ +###### Install Database ######## +################################ + +echo "BUILDER: installing database binaries" + +# Install Oracle DB binaries +rpm -iv /install/oracle-xe-11.2.0-1.0.x86_64.rpm + +# Remove fake 2 GB swap configuration +unset -f cat free + +# Remove memory_target parameter (not supported by default in containers) +sed -i '/memory_target/d' "${ORACLE_HOME}"/config/scripts/init.ora +sed -i '/memory_target/d' "${ORACLE_HOME}"/config/scripts/initXETemp.ora + +# Add SGA_TARGET and PGA_AGGREGATE_TARGET to pfile +sed -i '$ a sga_target=768m' "${ORACLE_HOME}"/config/scripts/init.ora +sed -i '$ a sga_target=768m' "${ORACLE_HOME}"/config/scripts/init"${ORACLE_SID}"Temp.ora +sed -i '$ a pga_aggregate_target=256m' "${ORACLE_HOME}"/config/scripts/init.ora +sed -i '$ a pga_aggregate_target=256m' "${ORACLE_HOME}"/config/scripts/init"${ORACLE_SID}"Temp.ora + +# Set random password +ORACLE_PASSWORD=$(date +%s | base64 | head -c 8) +sed -i "s/###ORACLE_PASSWORD###/${ORACLE_PASSWORD}/g" /install/xe.11202.rsp + +echo "BUILDER: configuring database" + +# Configure database +/etc/init.d/oracle-xe configure responseFile=/install/xe.11202.rsp + +echo "BUILDER: post config database steps" + +# Perform further Database setup operations +su -p oracle -c "sqlplus -s / as sysdba << EOF + -- Enable remote HTTP access + EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE); + + -- Remove original redo logs from fast_recovery_area and create new ones + ALTER DATABASE ADD LOGFILE GROUP 3 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log') SIZE ${REDO_SIZE}m; + ALTER DATABASE ADD LOGFILE GROUP 4 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log') SIZE ${REDO_SIZE}m; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT; + ALTER DATABASE DROP LOGFILE GROUP 1; + ALTER DATABASE DROP LOGFILE GROUP 2; + ALTER DATABASE ADD LOGFILE GROUP 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') SIZE ${REDO_SIZE}m; + ALTER DATABASE ADD LOGFILE GROUP 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') SIZE ${REDO_SIZE}m; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT; + ALTER DATABASE DROP LOGFILE GROUP 3; + ALTER DATABASE DROP LOGFILE GROUP 4; + + -- Set fast recovery area inside oradata folder + HOST mkdir '${ORACLE_BASE}'/oradata/'${ORACLE_SID}'/fast_recovery_area + ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '${ORACLE_BASE}/oradata/${ORACLE_SID}/fast_recovery_area'; + HOST rm -r ${ORACLE_BASE}/fast_recovery_area + + -- Enable shared server + --TODO + + exit; +EOF" + +# Manual redo logs aren't deleted automatically (REDO GROUP 3 and 4 above) +# Need to be deleted manually + +rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo03.log +rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo04.log + +# If not building the FULL image, remove and shrink additional components +if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then + su -p oracle -c "sqlplus -s / as sysdba << EOF + -- Remove APEX + @${ORACLE_HOME}/apex/apxremov.sql + + exit; +EOF" + + #TODO + # Uninstall components + #if [ "${BUILD_MODE}" == "SLIM" ]; then + #fi; + + #TODO!!! + # Shrink datafiles + SYSAUX_SIZE=610 + TEMP_SIZE=2 + UNDO_SIZE=155 + USERS_SIZE=$([[ "${BUILD_MODE}" == "SLIM" ]] && echo "1" || echo "10") + + su -p oracle -c "sqlplus -s / as sysdba << EOF + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/sysaux.dbf' RESIZE ${SYSAUX_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/sysaux.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/XE/temp.dbf' RESIZE ${TEMP_SIZE}M; + ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/XE/temp.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/undotbs1.dbf' RESIZE ${UNDO_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/undotbs1.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/users.dbf' RESIZE ${USERS_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/users.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + exit; +EOF" + +fi; + +echo "BUILDER: graceful database shutdown" + +# Shutdown database gracefully (listener is not yet running) +su -p oracle -c "sqlplus -s / as sysdba << EOF + -- Shutdown database gracefully + shutdown immediate; + exit; +EOF" + +# create or replace directory XMLDIR as '${ORACLE_HOME}/rdbms/xml'; + +############################ +### Create network files ### +############################ + +# listener.ora +echo \ +"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" + +# tnsnames.ora +echo \ +"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" + +# sqlnet.ora +echo "NAME.DIRECTORY_PATH= (EZCONNECT, TNSNAMES)" > "${ORACLE_HOME}/network/admin/sqlnet.ora" + +chown -R oracle:dba "${ORACLE_HOME}/network/admin" + +#################### +### bash_profile ### +#################### + +echo "BUILDER: creating .bash_profile" + +# Create .bash_profile for oracle user +echo \ +"export ORACLE_BASE=${ORACLE_BASE} +export ORACLE_HOME=/\${ORACLE_BASE}/product/11.2.0/xe +export ORACLE_SID=XE +export PATH=\${PATH}:\${ORACLE_HOME}/bin +" >> "${ORACLE_BASE}/.bash_profile" +chown oracle:dba "${ORACLE_BASE}/.bash_profile" + +######################## +### Install run file ### +######################## + +echo "BUILDER: install run file" + +# Move run file to ${ORACLE_BASE} +mv /install/runDB.sh "${ORACLE_BASE}/" +chown oracle:dba "${ORACLE_BASE}/runDB.sh" +chmod u+x "${ORACLE_BASE}/runDB.sh" + +######################### +####### Cleanup ######### +######################### + +echo "BUILDER: cleanup" + +# Remove install directory +rm -r /install + +# Cleanup XE files not needed for being in a container but were installed by the rpm +rm -r /etc/kde/xdg/menus/OracleXE +rm -r /usr/share/applications/oraclexe* +rm -r /usr/share/desktop-menu-files/oraclexe* +rm -r /usr/share/gnome/vfolders/oraclexe* +rm -r /usr/share/pixmaps/oraclexe* +/sbin/chkconfig --del oracle-xe +rm /etc/init.d/oracle-xe + +# Remove SYS audit files created during install +rm "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/adump/*.aud + +# Remove Data Pump log file +rm "${ORACLE_BASE}/admin/${ORACLE_SID}/dpdump/dp.log" + +# Remove diag files +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/lck/* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/metadata/* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/"${ORACLE_SID}"_* +rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/lck/* +rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/metadata/* +rm -r "${ORACLE_BASE}"/oradiag_oracle/* + +# Remove Oracle DB install logs +rm "${ORACLE_HOME}"/config/log/* + +if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then + + # Remove APEX directory + rm -r "${ORACLE_HOME}"/apex + + # Remove demo directory + rm -r "${ORACLE_HOME}"/demo + + # Remove JDBC drivers + rm "${ORACLE_HOME}"/jdbc/lib/*.jar + rm "${ORACLE_HOME}"/jlib/*.jar + + # Remove TNS samples + rm "${ORACLE_HOME}"/network/admin/samples/* + + # Remove NLS demo + rm "${ORACLE_HOME}"/nls/demo/* + + # Remove components from ORACLE_HOME + if [ "${BUILD_MODE}" == "SLIM" ]; then + dnf -y remove bc + #TODO + fi; + +fi; + +# Remove dnf cache +dnf clean all diff --git a/runDB.sh b/runDB.sh new file mode 100644 index 0000000..4cdb756 --- /dev/null +++ b/runDB.sh @@ -0,0 +1,172 @@ +#!/bin/bash +# +# Since: January, 2021 +# Author: gvenzl +# Name: run.sh +# Description: Run the Oracle Database +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +# Stop container when SIGINT or SIGTERM is received +########### stop database helper function ############ +function stop_database() { + echo "CONTAINER: shutdown request received." + echo "CONTAINER: shutting down database!" + sqlplus -s / as sysdba < Date: Sun, 24 Jan 2021 17:39:20 -0700 Subject: [PATCH 002/192] Introduce password reset (ER #2) Signed-off-by: gvenzl --- Dockerfile.11202.full | 4 ++-- README.md | 23 ++++++++++++++++++++++- install.11202.sh | 14 ++++++++++---- resetPassword | 32 ++++++++++++++++++++++++++++++++ runDB.sh | 6 +----- 5 files changed, 67 insertions(+), 12 deletions(-) mode change 100644 => 100755 install.11202.sh create mode 100755 resetPassword mode change 100644 => 100755 runDB.sh diff --git a/Dockerfile.11202.full b/Dockerfile.11202.full index 977e52e..7f3a5cd 100644 --- a/Dockerfile.11202.full +++ b/Dockerfile.11202.full @@ -26,9 +26,9 @@ FROM centos:centos8 ENV ORACLE_BASE=/u01/app/oracle \ ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe \ ORACLE_SID=XE \ - PATH=${PATH}:/u01/app/oracle/product/11.2.0/xe/bin + PATH=${PATH}:/u01/app/oracle/product/11.2.0/xe/bin:/u01/app/oracle -COPY oracle-xe-11.2.0-1.0.x86_64.rpm xe.11202.rsp install.11202.sh runDB.sh /install/ +COPY oracle-xe-11.2.0-1.0.x86_64.rpm xe.11202.rsp install.11202.sh runDB.sh resetPassword /install/ RUN /install/install.11202.sh "FULL" diff --git a/README.md b/README.md index 97f0eac..d9814fe 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,23 @@ # oci-oracle-xe -Build scripts for all kinds of Oracle Database XE Container / Docker images. +Oracle Database Express Edition Container / Docker images. + +The images are compatible with `podman` and `docker`. + +## Image flavors + +| Flavor | Description | | Use cases | +| ------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | +| 11.2.0.2-slim | An image focussed on smalles possible image size sacrificing on additional functionality. | Best for where small images sizes are important but advanced functionality of Oracle Database is not needed. | +| 11.2.0.2 | A well-balanced image between image size and functionality. Recommended for most use cases. | Recommended for most use cases. | +| 11.2.0.2-full | An image containing all functionality as provided by the Oracle Database installation. | Best for extensions or customizations. | + +For more information see [Image flavor details](#image-flavor-details). + +## Quick start + +### Reset passwords +``` +docker exec resetPassword +``` + +### Image flavor details \ No newline at end of file diff --git a/install.11202.sh b/install.11202.sh old mode 100644 new mode 100755 index a899278..d5bb778 --- a/install.11202.sh +++ b/install.11202.sh @@ -248,12 +248,18 @@ chown oracle:dba "${ORACLE_BASE}/.bash_profile" ### Install run file ### ######################## -echo "BUILDER: install run file" +echo "BUILDER: install run files" # Move run file to ${ORACLE_BASE} -mv /install/runDB.sh "${ORACLE_BASE}/" -chown oracle:dba "${ORACLE_BASE}/runDB.sh" -chmod u+x "${ORACLE_BASE}/runDB.sh" +mv /install/runDB.sh "${ORACLE_BASE}"/ +mv /install/resetPassword "${ORACLE_BASE}"/ + +chown oracle:dba "${ORACLE_BASE}"/*.sh \ + "${ORACLE_BASE}"/resetPassword + +chmod u+x "${ORACLE_BASE}"/*.sh \ + "${ORACLE_BASE}"/resetPassword + ######################### ####### Cleanup ######### diff --git a/resetPassword b/resetPassword new file mode 100755 index 0000000..8a54685 --- /dev/null +++ b/resetPassword @@ -0,0 +1,32 @@ +#!/bin/bash +# +# Since: January, 2021 +# Author: gvenzl +# Name: run.sh +# Description: Run the Oracle Database +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +PASSWORD=${1} + +sqlplus -s / as sysdba << EOF + ALTER USER SYS IDENTIFIED BY "${PASSWORD}"; + ALTER USER SYSTEM IDENTIFIED BY "${PASSWORD}"; + exit; +EOF diff --git a/runDB.sh b/runDB.sh old mode 100644 new mode 100755 index 4cdb756..f7a4062 --- a/runDB.sh +++ b/runDB.sh @@ -151,11 +151,7 @@ EOF # Set Oracle password if it is passed on (mandatory for first database startup) if [ -n "${ORACLE_PASSWORD:-}" ]; then echo "CONTAINER: Resetting SYS and SYSTEM passwords." - sqlplus -s / as sysdba << EOF - ALTER USER SYS IDENTIFIED BY "${ORACLE_PASSWORD}"; - ALTER USER SYSTEM IDENTIFIED BY "${ORACLE_PASSWORD}"; - exit; -EOF + resetPassword ${ORACLE_PASSWORD} fi; echo "" From ab6e8c21186bf6dbd3efe5ad6735a77b2eef6cd9 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 24 Jan 2021 22:38:56 -0700 Subject: [PATCH 003/192] Introduce healthcheck (ER #1) Signed-off-by: gvenzl --- Dockerfile.11202.full | 4 +++- healthcheck.sh | 39 +++++++++++++++++++++++++++++++++++++++ install.11202.sh | 36 +++++++++++++++++++----------------- 3 files changed, 61 insertions(+), 18 deletions(-) create mode 100644 healthcheck.sh diff --git a/Dockerfile.11202.full b/Dockerfile.11202.full index 7f3a5cd..040331a 100644 --- a/Dockerfile.11202.full +++ b/Dockerfile.11202.full @@ -28,11 +28,13 @@ ENV ORACLE_BASE=/u01/app/oracle \ ORACLE_SID=XE \ PATH=${PATH}:/u01/app/oracle/product/11.2.0/xe/bin:/u01/app/oracle -COPY oracle-xe-11.2.0-1.0.x86_64.rpm xe.11202.rsp install.11202.sh runDB.sh resetPassword /install/ +COPY oracle-xe-11.2.0-1.0.x86_64.rpm xe.11202.rsp install.11202.sh runDB.sh resetPassword healthcheck.sh /install/ RUN /install/install.11202.sh "FULL" USER oracle WORKDIR ${ORACLE_BASE} +HEALTHCHECK CMD-SHELL "${ORACLE_BASE}"/healthcheck.sh >/dev/null || exit 1 + CMD exec ${ORACLE_BASE}/runDB.sh \ No newline at end of file diff --git a/healthcheck.sh b/healthcheck.sh new file mode 100644 index 0000000..058a462 --- /dev/null +++ b/healthcheck.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# Since: January, 2021 +# Author: gvenzl +# Name: healthcheck.sh +# Description: Checks the health of the database +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +ORACLE_CDB=${1:-} + +db_status=$(sqlplus -s / << EOF + set heading off; + set pagesize 0; + SELECT status FROM v\$instance; + exit; +EOF +) + +if [ "${db_status}" == "OPEN" ]; then + exit 0; +else + exit 1; +fi; diff --git a/install.11202.sh b/install.11202.sh index d5bb778..ddaa1ac 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -86,7 +86,7 @@ echo "BUILDER: configuring database" echo "BUILDER: post config database steps" # Perform further Database setup operations -su -p oracle -c "sqlplus -s / as sysdba << EOF +su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Enable remote HTTP access EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE); @@ -107,15 +107,16 @@ su -p oracle -c "sqlplus -s / as sysdba << EOF ALTER DATABASE DROP LOGFILE GROUP 4; -- Set fast recovery area inside oradata folder - HOST mkdir '${ORACLE_BASE}'/oradata/'${ORACLE_SID}'/fast_recovery_area + HOST mkdir "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/fast_recovery_area ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '${ORACLE_BASE}/oradata/${ORACLE_SID}/fast_recovery_area'; - HOST rm -r ${ORACLE_BASE}/fast_recovery_area + HOST rm -r "${ORACLE_BASE}"/fast_recovery_area - -- Enable shared server - --TODO + -- Setup healthcheck user + CREATE USER OPS\$ORACLE IDENTIFIED EXTERNALLY; + GRANT CONNECT, SELECT_CATALOG_ROLE TO OPS\$ORACLE; exit; -EOF" +EOF # Manual redo logs aren't deleted automatically (REDO GROUP 3 and 4 above) # Need to be deleted manually @@ -125,12 +126,12 @@ rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo04.log # If not building the FULL image, remove and shrink additional components if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then - su -p oracle -c "sqlplus -s / as sysdba << EOF + su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Remove APEX @${ORACLE_HOME}/apex/apxremov.sql exit; -EOF" +EOF #TODO # Uninstall components @@ -144,7 +145,7 @@ EOF" UNDO_SIZE=155 USERS_SIZE=$([[ "${BUILD_MODE}" == "SLIM" ]] && echo "1" || echo "10") - su -p oracle -c "sqlplus -s / as sysdba << EOF + su -p oracle -c "sqlplus -s / as sysdba" << EOF ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/sysaux.dbf' RESIZE ${SYSAUX_SIZE}M; ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/sysaux.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; @@ -160,19 +161,20 @@ EOF" ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/users.dbf' RESIZE ${USERS_SIZE}M; ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/users.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + exit; -EOF" +EOF fi; echo "BUILDER: graceful database shutdown" # Shutdown database gracefully (listener is not yet running) -su -p oracle -c "sqlplus -s / as sysdba << EOF +su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Shutdown database gracefully shutdown immediate; exit; -EOF" +EOF # create or replace directory XMLDIR as '${ORACLE_HOME}/rdbms/xml'; @@ -238,9 +240,9 @@ echo "BUILDER: creating .bash_profile" # Create .bash_profile for oracle user echo \ "export ORACLE_BASE=${ORACLE_BASE} -export ORACLE_HOME=/\${ORACLE_BASE}/product/11.2.0/xe +export ORACLE_HOME=\${ORACLE_BASE}/product/11.2.0/xe export ORACLE_SID=XE -export PATH=\${PATH}:\${ORACLE_HOME}/bin +export PATH=\${PATH}:\${ORACLE_HOME}/bin:\${ORACLE_BASE} " >> "${ORACLE_BASE}/.bash_profile" chown oracle:dba "${ORACLE_BASE}/.bash_profile" @@ -248,10 +250,10 @@ chown oracle:dba "${ORACLE_BASE}/.bash_profile" ### Install run file ### ######################## -echo "BUILDER: install run files" +echo "BUILDER: install operational files" -# Move run file to ${ORACLE_BASE} -mv /install/runDB.sh "${ORACLE_BASE}"/ +# Move operational files to ${ORACLE_BASE} +mv /install/*.sh "${ORACLE_BASE}"/ mv /install/resetPassword "${ORACLE_BASE}"/ chown oracle:dba "${ORACLE_BASE}"/*.sh \ From 7492decde8a5f57f43a7b29339451f51ee4ca049 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 24 Jan 2021 22:39:25 -0700 Subject: [PATCH 004/192] Shutdown listener before database Signed-off-by: gvenzl --- runDB.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/runDB.sh b/runDB.sh index f7a4062..7a1f159 100755 --- a/runDB.sh +++ b/runDB.sh @@ -28,11 +28,12 @@ set -Eeuo pipefail function stop_database() { echo "CONTAINER: shutdown request received." echo "CONTAINER: shutting down database!" + + lsnrctl stop sqlplus -s / as sysdba <'." exit 1; fi; fi; From 5c3726c2386bcf98825f0ba954ee9960a1da046a Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 24 Jan 2021 22:42:08 -0700 Subject: [PATCH 005/192] Fix healthcheck typo Signed-off-by: gvenzl --- Dockerfile.11202.full | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.11202.full b/Dockerfile.11202.full index 040331a..81f7f5c 100644 --- a/Dockerfile.11202.full +++ b/Dockerfile.11202.full @@ -35,6 +35,6 @@ RUN /install/install.11202.sh "FULL" USER oracle WORKDIR ${ORACLE_BASE} -HEALTHCHECK CMD-SHELL "${ORACLE_BASE}"/healthcheck.sh >/dev/null || exit 1 +HEALTHCHECK CMD "${ORACLE_BASE}"/healthcheck.sh >/dev/null || exit 1 CMD exec ${ORACLE_BASE}/runDB.sh \ No newline at end of file From 5f03d3268275fcbdfa43fab237796af05c81bd78 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 24 Jan 2021 22:42:20 -0700 Subject: [PATCH 006/192] Update description header Signed-off-by: gvenzl --- resetPassword | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resetPassword b/resetPassword index 8a54685..2f02f3a 100755 --- a/resetPassword +++ b/resetPassword @@ -2,8 +2,8 @@ # # Since: January, 2021 # Author: gvenzl -# Name: run.sh -# Description: Run the Oracle Database +# Name: resetPassword +# Description: Resets the password for database accounts # # Copyright 2021 Gerald Venzl # From bc7f413de224388b60acbd830248dcb86f64c4ea Mon Sep 17 00:00:00 2001 From: gvenzl Date: Mon, 25 Jan 2021 22:27:45 -0700 Subject: [PATCH 007/192] Use build args for Dockerfile Signed-off-by: gvenzl --- Dockerfile.11202.full => Dockerfile.11202 | 25 ++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) rename Dockerfile.11202.full => Dockerfile.11202 (55%) diff --git a/Dockerfile.11202.full b/Dockerfile.11202 similarity index 55% rename from Dockerfile.11202.full rename to Dockerfile.11202 index 81f7f5c..05d8632 100644 --- a/Dockerfile.11202.full +++ b/Dockerfile.11202 @@ -1,12 +1,25 @@ # # Since: January, 2021 # Author: gvenzl -# Name: Dockerfile.11202.full -# Description: Dockerfile to build the full Oracle DB XE 11.2.0.2 as it comes. -# No functionality is removed, just log files, etc. cleaned up. -# Additional required packages, such as gcc and make are installed +# Name: Dockerfile.11202 +# Description: Dockerfile to build Oracle DB XE 11.2.0.2. +# The Dockerfile supports building different flavors of images. +# These flavors can be controlled via the build argument "BUILD_MODE" which +# supports three modes, as follows: +# +# FULL: No database functionality is removed, just log and trace files from the +# database installation itself. +# Additional required packages, such as 'gcc' and 'make' are installed # (needed for native PL/SQL execution, etc.) # +# NORMAL: Following functionalities have been removed: +# * gcc & make (needed for native PL/SQL execution, etc.) +# * APEX +# +# SLIM: Following functionalities have been removed: +# * Everything that has been removed in the NORMAL image, plus: +# * Oracle Text +# # Copyright 2021 Gerald Venzl # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -23,6 +36,8 @@ FROM centos:centos8 +ARG BUILD_MODE + ENV ORACLE_BASE=/u01/app/oracle \ ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe \ ORACLE_SID=XE \ @@ -30,7 +45,7 @@ ENV ORACLE_BASE=/u01/app/oracle \ COPY oracle-xe-11.2.0-1.0.x86_64.rpm xe.11202.rsp install.11202.sh runDB.sh resetPassword healthcheck.sh /install/ -RUN /install/install.11202.sh "FULL" +RUN /install/install.11202.sh "${BUILD_MODE}" USER oracle WORKDIR ${ORACLE_BASE} From c7cf9b493d8d20963eb5dd42b1ca09287475c4a7 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Mon, 25 Jan 2021 22:50:55 -0700 Subject: [PATCH 008/192] Update Description Signed-off-by: gvenzl --- Dockerfile.11202 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile.11202 b/Dockerfile.11202 index 05d8632..2fa4032 100644 --- a/Dockerfile.11202 +++ b/Dockerfile.11202 @@ -11,6 +11,8 @@ # database installation itself. # Additional required packages, such as 'gcc' and 'make' are installed # (needed for native PL/SQL execution, etc.) +# Database configuration is as per default installation, except for the +# location of the fast_recovery_area and redo logs. # # NORMAL: Following functionalities have been removed: # * gcc & make (needed for native PL/SQL execution, etc.) From 75da1393284c0292a329f52bb8283012bfbbd3c0 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Thu, 28 Jan 2021 11:00:53 -0700 Subject: [PATCH 009/192] Add password profile, restructure db file sizes Signed-off-by: gvenzl --- install.11202.sh | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index ddaa1ac..73e4f35 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -30,12 +30,17 @@ BUILD_MODE=${1:-"NORMAL"} echo "BUILDER: BUILD_MODE=${BUILD_MODE}" # Set data file sizes +SYSAUX_SIZE=610 +TEMP_SIZE=2 +UNDO_SIZE=155 if [ "${BUILD_MODE}" == "FULL" ]; then REDO_SIZE=50 elif [ "${BUILD_MODE}" == "NORMAL" ]; then REDO_SIZE=20 + USERS_SIZE=10 elif [ "${BUILD_MODE}" == "SLIM" ]; then REDO_SIZE=10 + USERS_SIZE=1 fi; echo "BUILDER: installing additional packages" @@ -118,18 +123,26 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF exit; EOF -# Manual redo logs aren't deleted automatically (REDO GROUP 3 and 4 above) +# Non-managed (OMF) redo logs aren't deleted automatically (REDO GROUP 3 and 4 above) # Need to be deleted manually rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo03.log rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo04.log +################################### +######## FULL INSTALL DONE ######## +################################### + # If not building the FULL image, remove and shrink additional components if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Disable password profile checks + ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; + -- Remove APEX @${ORACLE_HOME}/apex/apxremov.sql - + exit; EOF @@ -140,10 +153,6 @@ EOF #TODO!!! # Shrink datafiles - SYSAUX_SIZE=610 - TEMP_SIZE=2 - UNDO_SIZE=155 - USERS_SIZE=$([[ "${BUILD_MODE}" == "SLIM" ]] && echo "1" || echo "10") su -p oracle -c "sqlplus -s / as sysdba" << EOF ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/sysaux.dbf' RESIZE ${SYSAUX_SIZE}M; From 8612ea48efd34b8d234abf135e44f1b0560aa582 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Thu, 28 Jan 2021 11:19:07 -0700 Subject: [PATCH 010/192] Transition to OL8 slim Signed-off-by: gvenzl --- Dockerfile.11202 | 2 +- install.11202.sh | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Dockerfile.11202 b/Dockerfile.11202 index 2fa4032..ca4c93c 100644 --- a/Dockerfile.11202 +++ b/Dockerfile.11202 @@ -36,7 +36,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM centos:centos8 +FROM oraclelinux:8-slim ARG BUILD_MODE diff --git a/install.11202.sh b/install.11202.sh index 73e4f35..37bd4f4 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -45,12 +45,15 @@ fi; echo "BUILDER: installing additional packages" +# Required for install procedures +microdnf -y install bc procps-ng util-linux + # Install required system packages -dnf -y install libaio libnsl bc +microdnf -y install libaio libnsl # Install GCC and other packages for full installation if [ "${BUILD_MODE}" == "FULL" ]; then - dnf -y install glibc make binutils gcc + microdnf -y install glibc make binutils gcc fi; # Fake 2 GB swap configuration @@ -327,11 +330,11 @@ if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove components from ORACLE_HOME if [ "${BUILD_MODE}" == "SLIM" ]; then - dnf -y remove bc + microdnf -y remove bc procps-ng util-linux #TODO fi; fi; # Remove dnf cache -dnf clean all +microdnf clean all From ca4e81bbdbc39fd9582e96919b4d8e2ea8bac31b Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 30 Jan 2021 13:32:03 -0700 Subject: [PATCH 011/192] Introducing a image build script Signed-off-by: gvenzl --- buildContainerImage.sh | 102 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100755 buildContainerImage.sh diff --git a/buildContainerImage.sh b/buildContainerImage.sh new file mode 100755 index 0000000..6bb820c --- /dev/null +++ b/buildContainerImage.sh @@ -0,0 +1,102 @@ +#!/bin/bash +# Since: January, 2021 +# Author: gvenzl +# Name: buildContainerImage.sh +# Description: Build a Container image +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +VERSION="11.2.0.2" +FLAVOR="NORMAL" +IMAGE_NAME="gvenzl/oracle-xe" + +function usage() { + cat << EOF + +Usage: buildContainerImage.sh [-f | -n | -s] [-v version] [-o] [container build option] +Builds a container image for Oracle Database XE. + +Parameters: + -f: creates a 'full' image + -n: creates a normal image (default) + -s: creates a 'slim' image + -v: version of Oracle Database XE to build + Choose one of: 11.2.0.2, 18.4.0 + -o: passes on container build option + +* select only one flavor: -f, -n, or -s + +Apache License, Version 2.0 + +Copyright (c) 2021 Gerald Venzl + +EOF + +} + +while getopts "hfnsv:o:" optname; do + case "${optname}" in + "h") + usage + exit 0; + ;; + "v") + VERSION="${OPTARG}" + ;; + "f") + FLAVOR="FULL" + ;; + "n") + FLAVOR="NORMAL" + ;; + "s") + FLAVOR="SLIM" + ;; + "o") + eval "BUILD_OPTS=(${OPTARG})" + ;; + "?") + usage; + exit 1; + ;; + *) + # Should not occur + echo "Unknown error while processing options inside buildContainerImage.sh" + ;; + esac; +done; + +# Checking SHASUM + +SHASUM_RET=$(shasum -a 256 oracle-xe*.rpm) +if [ "${VERSION}" == "11.2.0.2" ] && [ "${SHASUM_RET%% *}" != "6629c8f014402fbc9db844421a6a0d2c71580838f4ac0e8df6659b62bb905268" ] || + [ "${VERSION}" == "18.4.0" ] && [ "${SHASUM_RET%% *}" != "" ]; then + echo "BUILDER: WARNING! SHA sum of RPM does not match with what's expected!" + echo "BUILDER: WARNING! Verify that the .rpm file is not corrupt!" +fi; + +IMAGE_NAME="${IMAGE_NAME}:${VERSION}" + +if [ "${FLAVOR}" != "NORMAL" ]; then + IMAGE_NAME="${IMAGE_NAME}-${FLAVOR,,}" +fi; + +echo "BUILDER: building image $IMAGE_NAME" + +buildah bud -f Dockerfile."${VERSION//./}" -t "${IMAGE_NAME}" --build-arg BUILD_MODE="${FLAVOR}" From ed85a1b813c892c32778fe6211b44072e85638db Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 30 Jan 2021 19:14:44 -0700 Subject: [PATCH 012/192] Full completed, normal and slim TBD Signed-off-by: gvenzl --- install.11202.sh | 161 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 116 insertions(+), 45 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 37bd4f4..fa1ab81 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -30,6 +30,7 @@ BUILD_MODE=${1:-"NORMAL"} echo "BUILDER: BUILD_MODE=${BUILD_MODE}" # Set data file sizes +SYSTEM_SIZE=353 SYSAUX_SIZE=610 TEMP_SIZE=2 UNDO_SIZE=155 @@ -40,13 +41,13 @@ elif [ "${BUILD_MODE}" == "NORMAL" ]; then USERS_SIZE=10 elif [ "${BUILD_MODE}" == "SLIM" ]; then REDO_SIZE=10 - USERS_SIZE=1 + USERS_SIZE=2 fi; echo "BUILDER: installing additional packages" # Required for install procedures -microdnf -y install bc procps-ng util-linux +microdnf -y install bc procps-ng util-linux net-tools # Install required system packages microdnf -y install libaio libnsl @@ -72,15 +73,32 @@ rpm -iv /install/oracle-xe-11.2.0-1.0.x86_64.rpm # Remove fake 2 GB swap configuration unset -f cat free +# Change installation directory to /opt/oracle +# Move $ORACLE_BASE under the new $ORACLE_BASE parent directory (i.e. /opt/ for /opt/oracle) +#mv /u01/app/oracle "${ORACLE_BASE%%/oracle}" +#chown -R oracle:dba /u01 +# Symlink /u01/app/oracle --> /opt/oracle +# This is so that the hard coded shared libraries paths in the binaries (sqlplus, etc.) can be resolved (check 'ldd sqlplus') +#ln -s "${ORACLE_BASE}" /u01/app/ +# Replace absolute path with $ORACLE_BASE variable for /etc/init.d/oracle-xe (used to configure DB later on) +#sed -i "s|/u01/app/oracle|\${ORACLE_BASE}|g" /etc/init.d/oracle-xe +# SQL*Plus and other files (.ora, etc) don't do variable expansion, replace absolute path /u01/app/oracle with value of $ORACLE_BASE +#for file in $(grep -rIl "/u01/app/oracle" "${ORACLE_HOME}"); do +# sed -i "s|/u01/app/oracle|${ORACLE_BASE}|g" "${file}" +#done; +# Oracle DB directories need to be recreated: +#DATA_PUMP_DIR /u01/app/oracle/admin/XE/dpdump/ +#XMLDIR /u01/app/oracle/product/11.2.0/xe/rdbms/xml + # Remove memory_target parameter (not supported by default in containers) -sed -i '/memory_target/d' "${ORACLE_HOME}"/config/scripts/init.ora -sed -i '/memory_target/d' "${ORACLE_HOME}"/config/scripts/initXETemp.ora +sed -i "/memory_target/d" "${ORACLE_HOME}"/config/scripts/init.ora +sed -i "/memory_target/d" "${ORACLE_HOME}"/config/scripts/init"${ORACLE_SID}"Temp.ora # Add SGA_TARGET and PGA_AGGREGATE_TARGET to pfile -sed -i '$ a sga_target=768m' "${ORACLE_HOME}"/config/scripts/init.ora -sed -i '$ a sga_target=768m' "${ORACLE_HOME}"/config/scripts/init"${ORACLE_SID}"Temp.ora -sed -i '$ a pga_aggregate_target=256m' "${ORACLE_HOME}"/config/scripts/init.ora -sed -i '$ a pga_aggregate_target=256m' "${ORACLE_HOME}"/config/scripts/init"${ORACLE_SID}"Temp.ora +sed -i "$ a sga_target=768m" "${ORACLE_HOME}"/config/scripts/init.ora +sed -i "$ a sga_target=768m" "${ORACLE_HOME}"/config/scripts/init"${ORACLE_SID}"Temp.ora +sed -i "$ a pga_aggregate_target=256m" "${ORACLE_HOME}"/config/scripts/init.ora +sed -i "$ a pga_aggregate_target=256m" "${ORACLE_HOME}"/config/scripts/init"${ORACLE_SID}"Temp.ora # Set random password ORACLE_PASSWORD=$(date +%s | base64 | head -c 8) @@ -97,7 +115,7 @@ echo "BUILDER: post config database steps" su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Enable remote HTTP access EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE); - + -- Remove original redo logs from fast_recovery_area and create new ones ALTER DATABASE ADD LOGFILE GROUP 3 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log') SIZE ${REDO_SIZE}m; ALTER DATABASE ADD LOGFILE GROUP 4 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log') SIZE ${REDO_SIZE}m; @@ -113,12 +131,12 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF ALTER SYSTEM CHECKPOINT; ALTER DATABASE DROP LOGFILE GROUP 3; ALTER DATABASE DROP LOGFILE GROUP 4; - + -- Set fast recovery area inside oradata folder HOST mkdir "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/fast_recovery_area ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '${ORACLE_BASE}/oradata/${ORACLE_SID}/fast_recovery_area'; HOST rm -r "${ORACLE_BASE}"/fast_recovery_area - + -- Setup healthcheck user CREATE USER OPS\$ORACLE IDENTIFIED EXTERNALLY; GRANT CONNECT, SELECT_CATALOG_ROLE TO OPS\$ORACLE; @@ -145,38 +163,79 @@ if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then -- Remove APEX @${ORACLE_HOME}/apex/apxremov.sql + DROP PUBLIC SYNONYM HTMLDB_SYSTEM; + DROP PACKAGE HTMLDB_SYSTEM; + + -- Remove HR schema + DROP USER HR cascade; exit; EOF #TODO # Uninstall components - #if [ "${BUILD_MODE}" == "SLIM" ]; then - #fi; + if [ "${BUILD_MODE}" == "SLIM" ]; then + su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Remove XDB + SELECT '#TODO' FROM DUAL; +EOF + # Spatial + # Text + # XDB + fi; - #TODO!!! # Shrink datafiles su -p oracle -c "sqlplus -s / as sysdba" << EOF - ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/sysaux.dbf' RESIZE ${SYSAUX_SIZE}M; - ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/sysaux.dbf' + + --------------------------- + -- Shrink SYSAUX tablespace + --------------------------- + + -- Create new temporary SYSAUX tablespace + --CREATE TABLESPACE SYSAUX_TEMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux_temp.dbf' + --SIZE 250M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED; + + -- Move tables to temporary SYSAUX tablespace + --#TODO + --BEGIN + -- FOR cur IN (SELECT owner || '.' || table_name AS name FROM all_tables WHERE tablespace_name = 'SYSAUX') LOOP + -- EXECUTE IMMEDIATE 'ALTER TABLE ' || cur.name || ' MOVE TABLESPACE SYSAUX_TEMP'; + -- END LOOP; + --END; + --/ + + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux.dbf' RESIZE ${SYSAUX_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; - - ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/XE/temp.dbf' RESIZE ${TEMP_SIZE}M; - ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/XE/temp.dbf' + + -- Shrink SYSTEM tablespace + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/system.dbf' RESIZE ${SYSTEM_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/system.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; - ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/undotbs1.dbf' RESIZE ${UNDO_SIZE}M; - ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/undotbs1.dbf' + -- Shrink TEMP tablespace + ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp.dbf' RESIZE ${TEMP_SIZE}M; + ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; - ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/users.dbf' RESIZE ${USERS_SIZE}M; - ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/XE/users.dbf' + -- Shrink USERS tablespace + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/users.dbf' RESIZE ${USERS_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/users.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; - + + -- Shrink UNDO tablespace + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs1.dbf' RESIZE ${UNDO_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs1.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + exit; EOF +# create or replace directory XMLDIR as '${ORACLE_HOME}/rdbms/xml'; + fi; echo "BUILDER: graceful database shutdown" @@ -188,12 +247,12 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF exit; EOF -# create or replace directory XMLDIR as '${ORACLE_HOME}/rdbms/xml'; - ############################ ### Create network files ### ############################ +echo "BUILDER: creating network files" + # listener.ora echo \ "SID_LIST_LISTENER = @@ -208,28 +267,28 @@ echo \ LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = - (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_${ORACLE_SID})) (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) ) ) -DEFAULT_SERVICE_LISTENER = (XE)" > "${ORACLE_HOME}/network/admin/listener.ora" +DEFAULT_SERVICE_LISTENER = (${ORACLE_SID})" > "${ORACLE_HOME}/network/admin/listener.ora" # tnsnames.ora echo \ -"XE = +"${ORACLE_SID} = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) - (SERVICE_NAME = XE) + (SERVICE_NAME = ${ORACLE_SID}) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = - (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_${ORACLE_SID})) ) (CONNECT_DATA = (SID = PLSExtProc) @@ -274,7 +333,6 @@ chown oracle:dba "${ORACLE_BASE}"/*.sh \ chmod u+x "${ORACLE_BASE}"/*.sh \ "${ORACLE_BASE}"/resetPassword - ######################### ####### Cleanup ######### ######################### @@ -297,7 +355,7 @@ rm /etc/init.d/oracle-xe rm "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/adump/*.aud # Remove Data Pump log file -rm "${ORACLE_BASE}/admin/${ORACLE_SID}/dpdump/dp.log" +rm "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/dpdump/dp.log # Remove diag files rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/lck/* @@ -315,26 +373,39 @@ if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove APEX directory rm -r "${ORACLE_HOME}"/apex - # Remove demo directory - rm -r "${ORACLE_HOME}"/demo - # Remove JDBC drivers - rm "${ORACLE_HOME}"/jdbc/lib/*.jar - rm "${ORACLE_HOME}"/jlib/*.jar + rm -r "${ORACLE_HOME}"/jdbc + rm -r "${ORACLE_HOME}"/jlib - # Remove TNS samples - rm "${ORACLE_HOME}"/network/admin/samples/* + # Remove ODBC samples + rm -r "${ORACLE_HOME}"/odbc - # Remove NLS demo - rm "${ORACLE_HOME}"/nls/demo/* - # Remove components from ORACLE_HOME if [ "${BUILD_MODE}" == "SLIM" ]; then - microdnf -y remove bc procps-ng util-linux - #TODO + + # Remove demo directory + rm -r "${ORACLE_HOME}"/demo + + # Remove TNS samples + rm -r "${ORACLE_HOME}"/network/admin/samples + + # Remove NLS demo + rm -r "${ORACLE_HOME}"/nls/demo + fi; fi; +# Remove build packages +# Unfortunately microdnf does not automatically uninstall dependencies that have been +# installed with a package, so if you were to uninstall just util-linux, for example, +# it does not automatically also remove gzip and cracklib again. +microdnf -y remove bc libtirpc libnsl2 libfdisk libutempter gzip cracklib libpwquality \ + pam util-linux dbus-libs dbus-tools pam libpwquality dbus-common \ + dbus-daemon libpcap iptables-libs libseccomp kmod-libs acl \ + device-mapper device-mapper-libs cryptsetup-libs \ + elfutils-default-yama-scope elfutils-libs systemd-pam systemd dbus \ + procps-ng net-tools util-linux + # Remove dnf cache microdnf clean all From 411a4d4a2238be3140ea0ed4b8588dc349c1b491 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 30 Jan 2021 19:15:52 -0700 Subject: [PATCH 013/192] Update ReadMe Signed-off-by: gvenzl --- README.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d9814fe..9570ba5 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,13 @@ The images are compatible with `podman` and `docker`. ## Image flavors -| Flavor | Description | | Use cases | +| Flavor | Description | Use cases | | ------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | -| 11.2.0.2-slim | An image focussed on smalles possible image size sacrificing on additional functionality. | Best for where small images sizes are important but advanced functionality of Oracle Database is not needed. | +| 11.2.0.2-slim | An image focussed on smallest possible image size sacrificing on additional functionality. | Best for where small images sizes are important but advanced functionality of Oracle Database is not needed. | | 11.2.0.2 | A well-balanced image between image size and functionality. Recommended for most use cases. | Recommended for most use cases. | | 11.2.0.2-full | An image containing all functionality as provided by the Oracle Database installation. | Best for extensions or customizations. | -For more information see [Image flavor details](#image-flavor-details). +For more information, see [Image flavor details](#image-flavor-details). ## Quick start @@ -20,4 +20,48 @@ For more information see [Image flavor details](#image-flavor-details). docker exec resetPassword ``` -### Image flavor details \ No newline at end of file +## Image flavor details + +There are three flavors of the image: + * FULL (`-full` tag appended) + * NORMAL (no tag appended) + * SLIM (`-slim` tag appended) + +### Full image flavor + +The full image provides an Oracle Database XE installation "as is", meaning as provided by the RPM install file. +A couple of modifications have been performed to make the installation more suitable for running inside a container: + +* The `REDO` logs have been relocated into `$ORACLE_BASE/oradata/$ORACLE_SID/` +* The fast recovery area has been relocated into `$ORACLE_BASE/oradata/$ORACLE_SID/` +* `DBMS_XDB.SETLISTENERLOCALACCESS()` has been set to `FALSE` +* An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) + +### Normal image flavor + +The normal image has all customizations that the full image has. +Additionally, it also includes the following changes: + +#### Database components +* Oracle APEX has been removed (you can download and install the latest and greatest from [apex.oracle.com](https://apex.oracle.com)) +* The `HR` schema and folder have been removed +* The jdbc drivers have been removed + +#### Operating system + +* The following Linux packages are not installed: `binutils`, `gcc`, `glibc`, `make` + +#### Data files + +| Tablespace | Size | Autoextend | Max size | +| ---------- | -----: | ---------: | ----------- | +| `REDO` | 20 MB | `N/A` | `N/A` | +| `TEMP` | 2 MB | 10 MB | `UNLIMITED` | +| `UNDO` | 10 MB | 10 MB | `UNLIMITED` | +| `USERS` | 10 MB | 10 MB | `UNLIMITED` | + +#### Others + +* The `DEFAULT` profile has the following set: + * `FAILED_LOGIN_ATTEMPTS=UNLIMITED` + * `PASSWORD_LIFE_TIME=UNLIMITED` From fc1138f432bfcc1675abaf24ab0234cf6d0638ff Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 30 Jan 2021 19:16:14 -0700 Subject: [PATCH 014/192] Add test scripts Signed-off-by: gvenzl --- tests/all_build_tests.sh | 25 +++++++++ tests/build_Dockerfile_11202.sh | 41 ++++++++++++++ tests/build_Dockerfile_1840.sh | 41 ++++++++++++++ tests/functions.sh | 95 +++++++++++++++++++++++++++++++++ tests/run_container_11202.sh | 25 +++++++++ 5 files changed, 227 insertions(+) create mode 100644 tests/all_build_tests.sh create mode 100644 tests/build_Dockerfile_11202.sh create mode 100644 tests/build_Dockerfile_1840.sh create mode 100644 tests/functions.sh create mode 100644 tests/run_container_11202.sh diff --git a/tests/all_build_tests.sh b/tests/all_build_tests.sh new file mode 100644 index 0000000..3593b27 --- /dev/null +++ b/tests/all_build_tests.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# Since: January, 2021 +# Author: gvenzl +# Name: all_build_tests.sh +# Description: Script for all build tests for Oracle DB XE +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +./build_Dockerfile_11202.sh diff --git a/tests/build_Dockerfile_11202.sh b/tests/build_Dockerfile_11202.sh new file mode 100644 index 0000000..2eaee59 --- /dev/null +++ b/tests/build_Dockerfile_11202.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Since: January, 2021 +# Author: gvenzl +# Name: build_Dockerfile_11202.sh +# Description: Build test scripts for Oracle DB XE 11.2.0.2 +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +CURRENT_DIR=${PWD} + +cd ../ + +echo "TEST: Building 11.2.0.2 FULL image" +./buildContainerImage.sh -v 11.2.0.2 -f +echo "DONE: Building 11.2.0.2 FULL image" + +echo "TEST: Building 11.2.0.2 NORMAL image" +./buildContainerImage.sh -v 11.2.0.2 +echo "DONE: Building 11.2.0.2 NORMAL image" + +echo "TEST: Building 11.2.0.2 SLIM image" +./buildContainerImage.sh -v 11.2.0.2 -s +echo "TEST: Building 11.2.0.2 SLIM image" + +cd "${CURRENT_DIR}" diff --git a/tests/build_Dockerfile_1840.sh b/tests/build_Dockerfile_1840.sh new file mode 100644 index 0000000..5babc22 --- /dev/null +++ b/tests/build_Dockerfile_1840.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Since: January, 2021 +# Author: gvenzl +# Name: build_Dockerfile_1840.sh +# Description: Build test scripts for Oracle DB XE 18.4.0 +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +CURRENT_DIR=${PWD} + +cd ../ + +echo "TEST: Building 18.4.0 FULL image" +./buildContainerImage.sh -v 18.4.0 -f +echo "DONE: Building 18.4.0 FULL image" + +echo "TEST: Building 18.4.0 NORMAL image" +./buildContainerImage.sh -v 18.4.0 +echo "DONE: Building 18.4.0 NORMAL image" + +echo "TEST: Building 18.4.0 SLIM image" +./buildContainerImage.sh -v 19.4.0 -s +echo "DONE: Building 18.4.0 SLIM image" + +cd "${CURRENT_DIR}" diff --git a/tests/functions.sh b/tests/functions.sh new file mode 100644 index 0000000..feb66fa --- /dev/null +++ b/tests/functions.sh @@ -0,0 +1,95 @@ +#!/bin/bash +# Since: January, 2021 +# Author: gvenzl +# Name: functions.sh +# Description: Helper functions for test scripts +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Function: checkDB +# Checks whether the Oracle DB is up and running. +# +# Parameters: +# CONTAINER_NAME: The name of the podman container + +function checkDB { + + CONTAINER_NAME="${1}" + + tries=0 + max_tries=10 + + # Wait until container is ready + while [ ${tries} -lt ${max_tries} ]; do + # Sleep until DB is up and running + sleep 5; + + # Is the database ready for use? + podman logs ${CONTAINER_NAME} | grep 'DATABASE IS READY TO USE' >/dev/null; + if [ "$?" == "0" ]; then + return 0; + fi; + + ((tries++)) + + done; + + return 1; +} + +# Function: run_container_test +# Runs a container (podman run) test +# +# Parameters: +# TEST_NAME: The test name +# CONTAINER_NAME: The container name +# IMAGE: The image to start the container from + +function runContainerTest { + TEST_NAME="${1}" + CONTAINER_NAME="${2}" + IMAGE="${3}" + + echo "TEST ${TEST_NAME}: Started" + echo "" + + # Run and start container + podman run -d --name "${CONTAINER_NAME}" -e ORACLE_PASSWORD=LetsTest1 "${IMAGE}" + + # Check whether Oracle DB came up successfully + checkDB "${CONTAINER_NAME}" + TEST_OK=$? + + if [ "${TEST_OK}" != "0" ]; then + # Print logs of failed test + podman logs "${CONTAINER_NAME}"; + + echo ""; + echo "TEST ${TEST_NAME}: FAILED!"; + echo ""; + + podman rm -f "${CONTAINER_NAME}" + + exit 1; + else + echo "TEST ${TEST_NAME}: OK"; + echo ""; + + podman rm -f "${CONTAINER_NAME}" + + return 0; + fi; + +} \ No newline at end of file diff --git a/tests/run_container_11202.sh b/tests/run_container_11202.sh new file mode 100644 index 0000000..809564c --- /dev/null +++ b/tests/run_container_11202.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# Since: January, 2021 +# Author: gvenzl +# Name: run_container_11202.sh +# Description: Run container test scripts for Oracle DB XE 11.2.0.2 +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +source ./functions.sh + +runContainerTest "11.2.0.2 FULL image" "11202-full" "gvenzl/oracle-xe:11.2.0.2-full" +runContainerTest "11.2.0.2 NORMAL image" "11202" "gvenzl/oracle-xe:11.2.0.2" +runContainerTest "11.2.0.2 SLIM image" "11202-slim" "gvenzl/oracle-xe:11.2.0.2-slim" From 28293088e8e726d12ba66978c47da57d9b07aa4c Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 31 Jan 2021 12:06:39 -0700 Subject: [PATCH 015/192] Add .gitignore Signed-off-by: gvenzl --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..75f3a14 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.rpm +*.zip +rpm/ From 76a94067cc9dde019a2734705c0adfca26284436 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 31 Jan 2021 12:56:29 -0700 Subject: [PATCH 016/192] Print DATABASE IS READY TO USE only after healthcheck succeeded (ER #6) Signed-off-by: gvenzl --- runDB.sh | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/runDB.sh b/runDB.sh index 7a1f159..8ef0c67 100755 --- a/runDB.sh +++ b/runDB.sh @@ -149,21 +149,29 @@ sqlplus -s / as sysdba << EOF exit; EOF -# Set Oracle password if it is passed on (mandatory for first database startup) -if [ -n "${ORACLE_PASSWORD:-}" ]; then - echo "CONTAINER: Resetting SYS and SYSTEM passwords." - resetPassword ${ORACLE_PASSWORD} +# Check whether database did come up successfully +if healthcheck.sh; then + # Set Oracle password if it is passed on (mandatory for first database startup) + if [ -n "${ORACLE_PASSWORD:-}" ]; then + echo "CONTAINER: Resetting SYS and SYSTEM passwords." + resetPassword "${ORACLE_PASSWORD}" + fi; + echo "" + echo "#########################" + echo "DATABASE IS READY TO USE!" + echo "#########################" + echo "" + echo "##################################################################" + echo "CONTAINER: The following output is now from the alert_${ORACLE_SID}.log file:" + echo "##################################################################" +else + echo "############################################" + echo "DATABASE STARTUP FAILED!" + echo "CHECK LOG OUTPUT ABOVE FOR MORE INFORMATION!" + echo "############################################" + exit 1; fi; -echo "" -echo "#########################" -echo "DATABASE IS READY TO USE!" -echo "#########################" -echo "" -echo "##################################################################" -echo "CONTAINER: The following output is now from the alert_${ORACLE_SID}.log file:" -echo "##################################################################" - tail -f "${ORACLE_BASE}"/diag/rdbms/*/"${ORACLE_SID}"/trace/alert_"${ORACLE_SID}".log & childPID=$! wait ${childPID} From 1ee4ac1020c513d98252e39a9e4c49cbc10727e2 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 31 Jan 2021 20:39:48 -0700 Subject: [PATCH 017/192] 18c Dockerfile Signed-off-by: gvenzl --- Dockerfile.1840 | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Dockerfile.1840 diff --git a/Dockerfile.1840 b/Dockerfile.1840 new file mode 100644 index 0000000..7f9420c --- /dev/null +++ b/Dockerfile.1840 @@ -0,0 +1,39 @@ +# +# Since: January, 2021 +# Author: gvenzl +# Name: Dockerfile.1840 +# Description: Dockerfile to build Oracle DB XE 18.4.0 +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM oraclelinux:8-slim + +ARG BUILD_MODE + +ENV ORACLE_BASE=/opt/oracle \ + ORACLE_HOME=/opt/oracle/product/18.4.0/xe \ + ORACLE_SID=XE \ + PATH=${PATH}:/opt/oracle/product/18.4.0/xe/bin:/opt/oracle + +COPY oracle-database-xe-18c-1.0-1.x86_64.rpm xe.1840.rsp install.1840.sh runDB.sh resetPassword healthcheck.sh /install/ + +RUN /install/install.1840.sh "${BUILD_MODE}" + +USER oracle +WORKDIR ${ORACLE_BASE} + +HEALTHCHECK CMD "${ORACLE_BASE}"/healthcheck.sh >/dev/null || exit 1 + +CMD exec ${ORACLE_BASE}/runDB.sh \ No newline at end of file From dcfb11dd12c98fe9b046d75d1340e6f6b37efb77 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 7 Feb 2021 12:20:01 -0700 Subject: [PATCH 018/192] Full install DB configured Signed-off-by: gvenzl --- Dockerfile.1840 | 8 ++-- install.1840.sh | 98 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 4 deletions(-) create mode 100644 install.1840.sh diff --git a/Dockerfile.1840 b/Dockerfile.1840 index 7f9420c..c41c61c 100644 --- a/Dockerfile.1840 +++ b/Dockerfile.1840 @@ -23,11 +23,11 @@ FROM oraclelinux:8-slim ARG BUILD_MODE ENV ORACLE_BASE=/opt/oracle \ - ORACLE_HOME=/opt/oracle/product/18.4.0/xe \ + ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE \ ORACLE_SID=XE \ - PATH=${PATH}:/opt/oracle/product/18.4.0/xe/bin:/opt/oracle - -COPY oracle-database-xe-18c-1.0-1.x86_64.rpm xe.1840.rsp install.1840.sh runDB.sh resetPassword healthcheck.sh /install/ + PATH=${PATH}:/opt/oracle/product/18c/dbhomeXE/bin:/opt/oracle + +COPY oracle-database-xe-18c-1.0-1.x86_64.rpm install.1840.sh runDB.sh resetPassword healthcheck.sh /install/ RUN /install/install.1840.sh "${BUILD_MODE}" diff --git a/install.1840.sh b/install.1840.sh new file mode 100644 index 0000000..a9a957d --- /dev/null +++ b/install.1840.sh @@ -0,0 +1,98 @@ +#!/bin/bash +# Since: February, 2021 +# Author: gvenzl +# Name: install.1840.sh +# Description: Install script for Oracle DB XE 18.4.0 +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +echo "BUILDER: started" + +# Build mode ("SLIM", "NORMAL", "FULL") +BUILD_MODE=${1:-"NORMAL"} + +echo "BUILDER: BUILD_MODE=${BUILD_MODE}" + +if [ "${BUILD_MODE}" == "FULL" ]; then + REDO_SIZE=50 +fi; + +echo "BUILDER: Installing dependencies" + +# Installation dependencies +microdnf -y install bc binutils file elfutils-libelf ksh sysstat procps-ng smartmontools make net-tools hostname + +# Runtime dependencies +microdnf -y install libnsl glibc libaio libgcc libstdc++ + +################################ +###### Install Database ######## +################################ + +echo "BUILDER: installing database binaries" + +# Install Oracle XE +rpm -iv --nodeps /install/oracle-database-xe-18c-1.0-1.x86_64.rpm + +# Set 'oracle' user home directory to ${ORACE_BASE} +usermod -d ${ORACLE_BASE} oracle + +# Add listener port and skip validations to conf file +sed -i "s/LISTENER_PORT=/LISTENER_PORT=1521/g" /etc/sysconfig/oracle-xe-18c.conf +sed -i "s/SKIP_VALIDATIONS=false/SKIP_VALIDATIONS=true/g" /etc/sysconfig/oracle-xe-18c.conf + +echo "BUILDER: configuring database" + +# Set random password +ORACLE_PASSWORD=$(date +%s | base64 | head -c 8) +/etc/init.d/oracle-xe-18c configure < Date: Sun, 7 Feb 2021 12:20:39 -0700 Subject: [PATCH 019/192] Add checksum verification for 18c Signed-off-by: gvenzl --- buildContainerImage.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/buildContainerImage.sh b/buildContainerImage.sh index 6bb820c..aaa8ee0 100755 --- a/buildContainerImage.sh +++ b/buildContainerImage.sh @@ -22,7 +22,7 @@ # Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ set -Eeuo pipefail -VERSION="11.2.0.2" +VERSION="18.4.0" FLAVOR="NORMAL" IMAGE_NAME="gvenzl/oracle-xe" @@ -83,14 +83,18 @@ while getopts "hfnsv:o:" optname; do done; # Checking SHASUM +echo "BUILDER: verifying checksum of rpm file - please wait..." -SHASUM_RET=$(shasum -a 256 oracle-xe*.rpm) -if [ "${VERSION}" == "11.2.0.2" ] && [ "${SHASUM_RET%% *}" != "6629c8f014402fbc9db844421a6a0d2c71580838f4ac0e8df6659b62bb905268" ] || - [ "${VERSION}" == "18.4.0" ] && [ "${SHASUM_RET%% *}" != "" ]; then +SHASUM_RET=$(shasum -a 256 oracle*xe*"${VERSION%%.*}"*.rpm) + +if [[ ( "${VERSION}" == "11.2.0.2" && "${SHASUM_RET%% *}" != "6629c8f014402fbc9db844421a6a0d2c71580838f4ac0e8df6659b62bb905268" ) || + ( "${VERSION}" == "18.4.0" && "${SHASUM_RET%% *}" != "4df0318d72a0b97f5468b36919a23ec07533f5897b324843108e0376566d50c8" ) ]]; then echo "BUILDER: WARNING! SHA sum of RPM does not match with what's expected!" echo "BUILDER: WARNING! Verify that the .rpm file is not corrupt!" fi; +echo "BUILDER: checksum verification done" + IMAGE_NAME="${IMAGE_NAME}:${VERSION}" if [ "${FLAVOR}" != "NORMAL" ]; then From 554dc76a5a8e42c67f1e71bc0d986c85a604921c Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 7 Feb 2021 19:13:43 -0700 Subject: [PATCH 020/192] Add parameter to ignore checksum Signed-off-by: gvenzl --- buildContainerImage.sh | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/buildContainerImage.sh b/buildContainerImage.sh index aaa8ee0..dacd9ff 100755 --- a/buildContainerImage.sh +++ b/buildContainerImage.sh @@ -25,11 +25,12 @@ set -Eeuo pipefail VERSION="18.4.0" FLAVOR="NORMAL" IMAGE_NAME="gvenzl/oracle-xe" +SKIP_CHECKSUM="false" function usage() { cat << EOF -Usage: buildContainerImage.sh [-f | -n | -s] [-v version] [-o] [container build option] +Usage: buildContainerImage.sh [-f | -n | -s] [-v version] [-i] [-o] [container build option] Builds a container image for Oracle Database XE. Parameters: @@ -38,6 +39,7 @@ Parameters: -s: creates a 'slim' image -v: version of Oracle Database XE to build Choose one of: 11.2.0.2, 18.4.0 + -i: ignores checksum test -o: passes on container build option * select only one flavor: -f, -n, or -s @@ -50,7 +52,7 @@ EOF } -while getopts "hfnsv:o:" optname; do +while getopts "hfnsv:io:" optname; do case "${optname}" in "h") usage @@ -68,6 +70,9 @@ while getopts "hfnsv:o:" optname; do "s") FLAVOR="SLIM" ;; + "i") + SKIP_CHECKSUM="true" + ;; "o") eval "BUILD_OPTS=(${OPTARG})" ;; @@ -83,17 +88,22 @@ while getopts "hfnsv:o:" optname; do done; # Checking SHASUM -echo "BUILDER: verifying checksum of rpm file - please wait..." +if [ "${SKIP_CHECKSUM}" == "false" ]; then -SHASUM_RET=$(shasum -a 256 oracle*xe*"${VERSION%%.*}"*.rpm) + echo "BUILDER: verifying checksum of rpm file - please wait..." -if [[ ( "${VERSION}" == "11.2.0.2" && "${SHASUM_RET%% *}" != "6629c8f014402fbc9db844421a6a0d2c71580838f4ac0e8df6659b62bb905268" ) || - ( "${VERSION}" == "18.4.0" && "${SHASUM_RET%% *}" != "4df0318d72a0b97f5468b36919a23ec07533f5897b324843108e0376566d50c8" ) ]]; then - echo "BUILDER: WARNING! SHA sum of RPM does not match with what's expected!" - echo "BUILDER: WARNING! Verify that the .rpm file is not corrupt!" -fi; + SHASUM_RET=$(shasum -a 256 oracle*xe*"${VERSION%%.*}"*.rpm) -echo "BUILDER: checksum verification done" + if [[ ( "${VERSION}" == "11.2.0.2" && "${SHASUM_RET%% *}" != "6629c8f014402fbc9db844421a6a0d2c71580838f4ac0e8df6659b62bb905268" ) || + ( "${VERSION}" == "18.4.0" && "${SHASUM_RET%% *}" != "4df0318d72a0b97f5468b36919a23ec07533f5897b324843108e0376566d50c8" ) ]]; then + echo "BUILDER: WARNING! SHA sum of RPM does not match with what's expected!" + echo "BUILDER: WARNING! Verify that the .rpm file is not corrupt!" + fi; + + echo "BUILDER: checksum verification done" +else + echo "BUILDER: checksum verification ignored" +fi; IMAGE_NAME="${IMAGE_NAME}:${VERSION}" From 11cc39695ca0c4d67ee2c4a834aaf3b546869103 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 12 Feb 2021 17:31:12 -0700 Subject: [PATCH 021/192] 18c full install Signed-off-by: gvenzl --- install.1840.sh | 65 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 5 deletions(-) diff --git a/install.1840.sh b/install.1840.sh index a9a957d..54959ab 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -61,14 +61,30 @@ echo "BUILDER: configuring database" # Set random password ORACLE_PASSWORD=$(date +%s | base64 | head -c 8) -/etc/init.d/oracle-xe-18c configure <> "${ORACLE_BASE}"/.bash_profile +chown oracle:dba "${ORACLE_BASE}"/.bash_profile + +######################## +### Install run file ### +######################## + +echo "BUILDER: install operational files" + +# Move operational files to ${ORACLE_BASE} +mv /install/*.sh "${ORACLE_BASE}"/ +mv /install/resetPassword "${ORACLE_BASE}"/ + +chown oracle:dba "${ORACLE_BASE}"/*.sh \ + "${ORACLE_BASE}"/resetPassword + +chmod u+x "${ORACLE_BASE}"/*.sh \ + "${ORACLE_BASE}"/resetPassword + ######################### ####### Cleanup ######### ######################### @@ -94,5 +141,13 @@ echo "BUILDER: cleanup" # Remove install directory rm -r /install +# Remove installation dependencies +#microdnf -y remove dbus-libs libtirpc diffutils libnsl2 dbus-tools dbus-common dbus-daemon \ +# libpcap iptables-libs libseccomp libfdisk xz lm_sensors-libs libutempter \ +# kmod-libs gzip cracklib libpwquality pam util-linux findutils acl \ +# device-mapper device-mapper-libs cryptsetup-libs elfutils-default-yama-scope \ +# elfutils-libs systemd-pam systemd dbus smartmontools ksh sysstat procps-ng \ +# binutils file make bc net-tools hostname + # Remove dnf cache microdnf clean all From 31d697c874b92f6b885c0af347ae3d75ef0c9dbe Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 12 Feb 2021 18:03:26 -0700 Subject: [PATCH 022/192] Remove recovery_dest Signed-off-by: gvenzl --- install.11202.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 86d3313..359d49b 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -132,9 +132,9 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF ALTER DATABASE DROP LOGFILE GROUP 3; ALTER DATABASE DROP LOGFILE GROUP 4; - -- Set fast recovery area inside oradata folder - HOST mkdir "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/fast_recovery_area - ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '${ORACLE_BASE}/oradata/${ORACLE_SID}/fast_recovery_area'; + -- Remove fast recovery area + ALTER SYSTEM SET DB_RECOVERY_FILE_DEST=''; + ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=1; HOST rm -r "${ORACLE_BASE}"/fast_recovery_area -- Setup healthcheck user From 70a9c519c8a17ab84c6090fa649e500b7b77ec02 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 12 Feb 2021 19:54:23 -0700 Subject: [PATCH 023/192] Remove install log files Signed-off-by: gvenzl --- install.1840.sh | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/install.1840.sh b/install.1840.sh index 54959ab..6c30b4d 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -141,6 +141,36 @@ echo "BUILDER: cleanup" # Remove install directory rm -r /install +# Cleanup XE files not needed for being in a container but were installed by the rpm +/sbin/chkconfig --del oracle-xe-18c +rm /etc/init.d/oracle-xe-18c +rm -r /var/log/oracle-database-xe-18c +rm -r /tmp/* + +# Remove SYS audit directories and files created during install +rm -r "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/adump/* + +# Remove Data Pump log file +rm "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/dpdump/dp.log + +# Remove Oracle DB install logs +rm "${ORACLE_BASE}"/cfgtoollogs/dbca/XE/* +rm "${ORACLE_BASE}"/cfgtoollogs/netca/* +rm -r "${ORACLE_BASE}"/cfgtoollogs/sqlpatch/* +rm "${ORACLE_BASE}"/oraInventory/logs/* +rm "${ORACLE_HOME}"/cfgtoollogs/oui/* + +# Remove diag files +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/lck/* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/metadata/* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/"${ORACLE_SID}"_* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/drc"${ORACLE_SID}".log +rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/lck/* +rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/metadata/* + +# Remove systemd removal protection file +rm /etc/dnf/protected.d/systemd.conf + # Remove installation dependencies #microdnf -y remove dbus-libs libtirpc diffutils libnsl2 dbus-tools dbus-common dbus-daemon \ # libpcap iptables-libs libseccomp libfdisk xz lm_sensors-libs libutempter \ From 639466d15e1efed5c80a86cb54b2b5bb91f9d20c Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 14 Feb 2021 12:28:48 -0700 Subject: [PATCH 024/192] Remove installation phase only dependencies Signed-off-by: gvenzl --- install.1840.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/install.1840.sh b/install.1840.sh index 6c30b4d..24e5003 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -168,16 +168,16 @@ rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/drc"${ORACLE_SID}".log rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/lck/* rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/metadata/* -# Remove systemd removal protection file -rm /etc/dnf/protected.d/systemd.conf - # Remove installation dependencies -#microdnf -y remove dbus-libs libtirpc diffutils libnsl2 dbus-tools dbus-common dbus-daemon \ -# libpcap iptables-libs libseccomp libfdisk xz lm_sensors-libs libutempter \ -# kmod-libs gzip cracklib libpwquality pam util-linux findutils acl \ -# device-mapper device-mapper-libs cryptsetup-libs elfutils-default-yama-scope \ -# elfutils-libs systemd-pam systemd dbus smartmontools ksh sysstat procps-ng \ -# binutils file make bc net-tools hostname +# Use rpm instead of microdnf to allow removing packages regardless of dependencies specified by the Oracle XE RPM +rpm -e --nodeps dbus-libs libtirpc diffutils libnsl2 dbus-tools dbus-common dbus-daemon \ + libpcap iptables-libs libseccomp libfdisk xz lm_sensors-libs libutempter \ + kmod-libs gzip cracklib libpwquality pam util-linux findutils acl \ + device-mapper device-mapper-libs cryptsetup-libs elfutils-default-yama-scope \ + elfutils-libs systemd-pam systemd dbus smartmontools ksh sysstat procps-ng \ + binutils file make bc net-tools hostname + +rm /etc/sysctl.conf.rpmsave # Remove dnf cache microdnf clean all From 3f763bc2376a4f6b7d67e6350122670c302e3906 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 14 Feb 2021 12:38:07 -0700 Subject: [PATCH 025/192] Update ORACLE_HOME in .bash_profile Signed-off-by: gvenzl --- install.1840.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/install.1840.sh b/install.1840.sh index 24e5003..e4b0a3a 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -77,9 +77,11 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Like with every underscore parameter, DO NOT SET THIS PARAMETER EVER UNLESS YOU KNOW WHAT THE HECK YOU ARE DOING! ALTER SYSTEM SET "_CONTROLFILE_SPLIT_BRAIN_CHECK"=FALSE; + -- Reboot of DB SHUTDOWN IMMEDIATE; STARTUP; + -- Setup healthcheck user CREATE USER OPS\$ORACLE IDENTIFIED EXTERNALLY; GRANT CONNECT, SELECT_CATALOG_ROLE TO OPS\$ORACLE; @@ -110,7 +112,7 @@ echo "BUILDER: creating .bash_profile" # Create .bash_profile for oracle user echo \ "export ORACLE_BASE=${ORACLE_BASE} -export ORACLE_HOME=\${ORACLE_BASE}/product/11.2.0/xe +export ORACLE_HOME=\${ORACLE_BASE}/product/18c/dbhomeXE export ORACLE_SID=XE export PATH=\${PATH}:\${ORACLE_HOME}/bin:\${ORACLE_BASE} " >> "${ORACLE_BASE}"/.bash_profile From 199e723860d7fa7c42a3d98e487dd5df041d0242 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 19 Feb 2021 14:14:55 -0700 Subject: [PATCH 026/192] Resize redo logs Signed-off-by: gvenzl --- install.1840.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/install.1840.sh b/install.1840.sh index e4b0a3a..f76d8be 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -29,6 +29,7 @@ BUILD_MODE=${1:-"NORMAL"} echo "BUILDER: BUILD_MODE=${BUILD_MODE}" +# Set data file sizes if [ "${BUILD_MODE}" == "FULL" ]; then REDO_SIZE=50 fi; @@ -73,6 +74,30 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Disable common_user_prefix (needed for OS authenticated user) ALTER SYSTEM SET COMMON_USER_PREFIX='' SCOPE=SPFILE; + -- Remove original redo logs from fast_recovery_area and create new ones + ALTER DATABASE ADD LOGFILE GROUP 4 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log') SIZE ${REDO_SIZE}m; + ALTER DATABASE ADD LOGFILE GROUP 5 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo05.log') SIZE ${REDO_SIZE}m; + ALTER DATABASE ADD LOGFILE GROUP 6 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo06.log') SIZE ${REDO_SIZE}m; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT; + ALTER DATABASE DROP LOGFILE GROUP 1; + ALTER DATABASE DROP LOGFILE GROUP 2; + ALTER DATABASE DROP LOGFILE GROUP 3; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log + ALTER DATABASE ADD LOGFILE GROUP 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') SIZE ${REDO_SIZE}m REUSE; + ALTER DATABASE ADD LOGFILE GROUP 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') SIZE ${REDO_SIZE}m REUSE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT; + ALTER DATABASE DROP LOGFILE GROUP 4; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log + ALTER DATABASE DROP LOGFILE GROUP 5; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo05.log + ALTER DATABASE DROP LOGFILE GROUP 6; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo06.log + -- Disable controlfile splitbrain check -- Like with every underscore parameter, DO NOT SET THIS PARAMETER EVER UNLESS YOU KNOW WHAT THE HECK YOU ARE DOING! ALTER SYSTEM SET "_CONTROLFILE_SPLIT_BRAIN_CHECK"=FALSE; From 0bec3bb2e8b9a2a2052ea38a6bde093887806ffd Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 19 Feb 2021 20:20:12 -0700 Subject: [PATCH 027/192] Include network files Signed-off-by: gvenzl --- install.1840.sh | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/install.1840.sh b/install.1840.sh index f76d8be..1850632 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -102,6 +102,9 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Like with every underscore parameter, DO NOT SET THIS PARAMETER EVER UNLESS YOU KNOW WHAT THE HECK YOU ARE DOING! ALTER SYSTEM SET "_CONTROLFILE_SPLIT_BRAIN_CHECK"=FALSE; + -- Remove local_listener entry (using default 1521) + ALTER SYSTEM SET LOCAL_LISTENER=''; + -- Reboot of DB SHUTDOWN IMMEDIATE; STARTUP; @@ -128,6 +131,49 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF exit; EOF +############################ +### Create network files ### +############################ + +echo "BUILDER: creating network files" + +# listener.ora +echo \ +"LISTENER = + (DESCRIPTION_LIST = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) + ) + ) + +DEFAULT_SERVICE_LISTENER = ${ORACLE_SID}" > "${ORACLE_HOME}"/network/admin/listener.ora + +# tnsnames.ora +echo \ +"${ORACLE_SID} = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = ${ORACLE_SID}) + ) + ) + +${ORACLE_SID}PDB1 = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = ${ORACLE_SID}PDB1) + ) + )" > "${ORACLE_HOME}"/network/admin/tnsnames.ora + +# sqlnet.ora +echo "NAME.DIRECTORY_PATH= (EZCONNECT, TNSNAMES)" > "${ORACLE_HOME}"/network/admin/sqlnet.ora + +chown -R oracle:dba "${ORACLE_HOME}"/network/admin + #################### ### bash_profile ### #################### From 827a8e847e9b6eca095b803fddf2a6de8618d021 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 20 Feb 2021 14:38:49 -0700 Subject: [PATCH 028/192] ER #8: Set password only at initialization Signed-off-by: gvenzl --- runDB.sh | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/runDB.sh b/runDB.sh index 8ef0c67..4e831b1 100755 --- a/runDB.sh +++ b/runDB.sh @@ -47,8 +47,8 @@ function setup_env_vars() { else # Password is mandatory for first container start if [ -z "${ORACLE_PASSWORD:-}" ]; then - echo "Oracle Database password has to be specified at first database startup." - echo "Please specify a database password via the \$ORACLE_PASSWORD environment variable, for example, via '-e ORACLE_PASSWORD='." + echo "Oracle Database SYS and SYSTEM passwords have to be specified at first database startup." + echo "Please specify a password via the \$ORACLE_PASSWORD environment variable, for example, via '-e ORACLE_PASSWORD='." exit 1; fi; fi; @@ -148,13 +148,20 @@ sqlplus -s / as sysdba << EOF startup; exit; EOF +echo "" # Check whether database did come up successfully if healthcheck.sh; then - # Set Oracle password if it is passed on (mandatory for first database startup) - if [ -n "${ORACLE_PASSWORD:-}" ]; then + # Set Oracle password if it's the first DB startup + if [ -z "${DATABASE_ALREADY_EXISTS:-}" ]; then echo "CONTAINER: Resetting SYS and SYSTEM passwords." resetPassword "${ORACLE_PASSWORD}" + else + # Password was passed on for container start but DB is already initialized, ignoring. + if [ -n "${ORACLE_PASSWORD:-}" ]; then + echo "CONTAINER: WARNING: \$ORACLE_PASSWORD has been specified but the database is already initialized. The password will be ignored."; + echo "CONTAINER: WARNING: If you want to reset the password, please run the resetPassword command, e.g. 'docker|podman exec resetPassword '." + fi; fi; echo "" echo "#########################" From 62e3b9466823475c304143474d6455af1da655c2 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 20 Feb 2021 16:52:34 -0700 Subject: [PATCH 029/192] Use entrypoint rather cmd Signed-off-by: gvenzl --- Dockerfile.11202 | 2 +- Dockerfile.1840 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile.11202 b/Dockerfile.11202 index ca4c93c..d875883 100644 --- a/Dockerfile.11202 +++ b/Dockerfile.11202 @@ -54,4 +54,4 @@ WORKDIR ${ORACLE_BASE} HEALTHCHECK CMD "${ORACLE_BASE}"/healthcheck.sh >/dev/null || exit 1 -CMD exec ${ORACLE_BASE}/runDB.sh \ No newline at end of file +ENTRYPOINT ["runDB.sh"] \ No newline at end of file diff --git a/Dockerfile.1840 b/Dockerfile.1840 index c41c61c..88925bb 100644 --- a/Dockerfile.1840 +++ b/Dockerfile.1840 @@ -36,4 +36,4 @@ WORKDIR ${ORACLE_BASE} HEALTHCHECK CMD "${ORACLE_BASE}"/healthcheck.sh >/dev/null || exit 1 -CMD exec ${ORACLE_BASE}/runDB.sh \ No newline at end of file +ENTRYPOINT ["runDB.sh"] \ No newline at end of file From aaf93646210f4ffd5caf96f1919f0a425abe3b90 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 20 Feb 2021 19:36:57 -0700 Subject: [PATCH 030/192] Add build duration to build script Signed-off-by: gvenzl --- buildContainerImage.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/buildContainerImage.sh b/buildContainerImage.sh index dacd9ff..925bdc2 100755 --- a/buildContainerImage.sh +++ b/buildContainerImage.sh @@ -113,4 +113,11 @@ fi; echo "BUILDER: building image $IMAGE_NAME" +BUILD_START_TMS=$(date '+%s') + buildah bud -f Dockerfile."${VERSION//./}" -t "${IMAGE_NAME}" --build-arg BUILD_MODE="${FLAVOR}" + +BUILD_END_TMS=$(date '+%s') +BUILD_DURATION=$(( BUILD_END_TMS - BUILD_START_TMS )) + +echo "Build of container image ${IMAGE_NAME} completed in ${BUILD_DURATION} seconds." From 6391ef49c24a0a3c9bfe2902923d4a0474ce02af Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 20 Feb 2021 21:34:08 -0700 Subject: [PATCH 031/192] Compress data files in image Signed-off-by: gvenzl --- install.11202.sh | 21 ++++++++++++++++++--- install.1840.sh | 20 +++++++++++++++++--- runDB.sh | 5 +++++ 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 359d49b..501165c 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -46,11 +46,11 @@ fi; echo "BUILDER: installing additional packages" -# Required for install procedures +# Install installation dependencies microdnf -y install bc procps-ng util-linux net-tools -# Install required system packages -microdnf -y install libaio libnsl +# Install runtime dependencies +microdnf -y install libaio libnsl unzip # Install GCC and other packages for full installation if [ "${BUILD_MODE}" == "FULL" ]; then @@ -238,6 +238,10 @@ EOF fi; +################################### +########### DB SHUTDOWN ########### +################################### + echo "BUILDER: graceful database shutdown" # Shutdown database gracefully (listener is not yet running) @@ -247,6 +251,16 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF exit; EOF +############################### +### Compress Database files ### +############################### + +echo "BUILDER: compressing database data files" +cd "${ORACLE_BASE}"/oradata +zip -r "${ORACLE_SID}".zip "${ORACLE_SID}" +rm -r "${ORACLE_SID}" +cd - 1> /dev/null + ############################ ### Create network files ### ############################ @@ -350,6 +364,7 @@ rm -r /usr/share/gnome/vfolders/oraclexe* rm -r /usr/share/pixmaps/oraclexe* /sbin/chkconfig --del oracle-xe rm /etc/init.d/oracle-xe +rm -r /var/tmp/oradiag_oracle # Remove SYS audit files created during install rm "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/adump/*.aud diff --git a/install.1840.sh b/install.1840.sh index 1850632..afdc346 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -36,11 +36,11 @@ fi; echo "BUILDER: Installing dependencies" -# Installation dependencies +# Install installation dependencies microdnf -y install bc binutils file elfutils-libelf ksh sysstat procps-ng smartmontools make net-tools hostname -# Runtime dependencies -microdnf -y install libnsl glibc libaio libgcc libstdc++ +# Install runtime dependencies +microdnf -y install libnsl glibc libaio libgcc libstdc++ unzip ################################ ###### Install Database ######## @@ -122,6 +122,10 @@ EOF # TODO +################################### +########### DB SHUTDOWN ########### +################################### + echo "BUILDER: graceful database shutdown" # Shutdown database gracefully (listener is not yet running) @@ -131,6 +135,16 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF exit; EOF +############################### +### Compress Database files ### +############################### + +echo "BUILDER: compressing database data files" +cd "${ORACLE_BASE}"/oradata +zip -r "${ORACLE_SID}".zip "${ORACLE_SID}" +rm -r "${ORACLE_SID}" +cd - 1> /dev/null + ############################ ### Create network files ### ############################ diff --git a/runDB.sh b/runDB.sh index 4e831b1..733bc4f 100755 --- a/runDB.sh +++ b/runDB.sh @@ -57,6 +57,11 @@ function setup_env_vars() { # Create dbconfig directory structure function create_dbconfig() { + if [ -f "${ORACLE_BASE}"/oradata/"${ORACLE_SID}".zip ]; then + unzip "${ORACLE_BASE}"/oradata/"${ORACLE_SID}".zip -d "${ORACLE_BASE}"/oradata/ 1> /dev/null + rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}".zip + fi; + mkdir -p "${ORACLE_BASE}/oradata/dbconfig/${ORACLE_SID}" mv "${ORACLE_HOME}"/dbs/spfile"${ORACLE_SID}".ora "${ORACLE_BASE}"/oradata/dbconfig/"${ORACLE_SID}"/ From 93b19c1c07ba4feac28bfec6d3b48154f98c6ea6 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 21 Feb 2021 12:57:08 -0700 Subject: [PATCH 032/192] Implemented ORACLE_RANDOM_PASSWORD ER #9 Signed-off-by: gvenzl --- install.11202.sh | 2 +- install.1840.sh | 2 +- runDB.sh | 30 ++++++++++++++++++++++++++---- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 501165c..dfd3790 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -101,7 +101,7 @@ sed -i "$ a pga_aggregate_target=256m" "${ORACLE_HOME}"/config/scripts/init.ora sed -i "$ a pga_aggregate_target=256m" "${ORACLE_HOME}"/config/scripts/init"${ORACLE_SID}"Temp.ora # Set random password -ORACLE_PASSWORD=$(date +%s | base64 | head -c 8) +ORACLE_PASSWORD=$(date '+%s' | sha256sum | base64 | head -c 8) sed -i "s/###ORACLE_PASSWORD###/${ORACLE_PASSWORD}/g" /install/xe.11202.rsp echo "BUILDER: configuring database" diff --git a/install.1840.sh b/install.1840.sh index afdc346..29d4f9a 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -61,7 +61,7 @@ sed -i "s/SKIP_VALIDATIONS=false/SKIP_VALIDATIONS=true/g" /etc/sysconfig/oracle- echo "BUILDER: configuring database" # Set random password -ORACLE_PASSWORD=$(date +%s | base64 | head -c 8) +ORACLE_PASSWORD=$(date '+%s' | sha256sum | base64 | head -c 8) (echo "${ORACLE_PASSWORD}"; echo "${ORACLE_PASSWORD}";) | /etc/init.d/oracle-xe-18c configure echo "BUILDER: post config database steps" diff --git a/runDB.sh b/runDB.sh index 733bc4f..c48a3d3 100755 --- a/runDB.sh +++ b/runDB.sh @@ -46,9 +46,15 @@ function setup_env_vars() { DATABASE_ALREADY_EXISTS="true"; else # Password is mandatory for first container start - if [ -z "${ORACLE_PASSWORD:-}" ]; then + if [ -z "${ORACLE_PASSWORD:-}" ] && [ -z "${ORACLE_RANDOM_PASSWORD:-}" ]; then echo "Oracle Database SYS and SYSTEM passwords have to be specified at first database startup." - echo "Please specify a password via the \$ORACLE_PASSWORD environment variable, for example, via '-e ORACLE_PASSWORD='." + echo "Please specify a password either via the \$ORACLE_PASSWORD variable, e.g. '-e ORACLE_PASSWORD='" + echo "or set the \$ORACLE_RANDOM_PASSWORD environment variable to any value, e.g. '-e ORACLE_RANDOM_PASSWORD=yes'." + exit 1; + # ORACLE_PASSWORD and ORACLE_RANDOM_PASSWORD are mutually exclusive + elif [ -n "${ORACLE_PASSWORD:-}" ] && [ -n "${ORACLE_RANDOM_PASSWORD:-}" ]; then + echo "Both \$ORACLE_PASSWORD and \$ORACLE_RANDOM_PASSWORD are specified but are mutually exclusive." + echo "Please specify only one of these variables." exit 1; fi; fi; @@ -58,6 +64,7 @@ function setup_env_vars() { function create_dbconfig() { if [ -f "${ORACLE_BASE}"/oradata/"${ORACLE_SID}".zip ]; then + echo "CONTAINER: uncompressing database data files, please wait..." unzip "${ORACLE_BASE}"/oradata/"${ORACLE_SID}".zip -d "${ORACLE_BASE}"/oradata/ 1> /dev/null rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}".zip fi; @@ -160,11 +167,26 @@ if healthcheck.sh; then # Set Oracle password if it's the first DB startup if [ -z "${DATABASE_ALREADY_EXISTS:-}" ]; then echo "CONTAINER: Resetting SYS and SYSTEM passwords." - resetPassword "${ORACLE_PASSWORD}" + # If password is specified + if [ -n "${ORACLE_PASSWORD:-}" ]; then + resetPassword "${ORACLE_PASSWORD}" + # Generate random password + elif [ -n "${ORACLE_RANDOM_PASSWORD:-}" ]; then + RANDOM_PASSWORD=$(date +%s | sha256sum | base64 | head -c 8) + resetPassword "${RANDOM_PASSWORD}" + echo "############################################" + echo "ORACLE PASSWORD FOR SYS AND SYSTEM: ${RANDOM_PASSWORD}" + echo "############################################" + # Should not happen unless script logic changes + else + echo "SCRIPT ERROR: Unspecified password!" + echo "Please report a bug at https://github.com/gvenzl/oci-oracle-xe/issues with your environment details." + exit 1; + fi; else # Password was passed on for container start but DB is already initialized, ignoring. if [ -n "${ORACLE_PASSWORD:-}" ]; then - echo "CONTAINER: WARNING: \$ORACLE_PASSWORD has been specified but the database is already initialized. The password will be ignored."; + echo "CONTAINER: WARNING: \$ORACLE_PASSWORD has been specified but the database is already initialized. The password will be ignored." echo "CONTAINER: WARNING: If you want to reset the password, please run the resetPassword command, e.g. 'docker|podman exec resetPassword '." fi; fi; From e6bdd36ecd89fdb8671b98f254fbbad4609e7fb6 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 28 Feb 2021 15:49:58 -0700 Subject: [PATCH 033/192] Update .gitignore Signed-off-by: gvenzl --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 75f3a14..f9eb459 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ *.rpm *.zip -rpm/ +assets/ From 0c25e3184e98807d354632778cacece34e479405 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 28 Feb 2021 17:14:56 -0700 Subject: [PATCH 034/192] rename entrypoint script Signed-off-by: gvenzl --- Dockerfile.11202 | 4 ++-- Dockerfile.1840 | 4 ++-- runDB.sh => container-entrypoint.sh | 0 3 files changed, 4 insertions(+), 4 deletions(-) rename runDB.sh => container-entrypoint.sh (100%) diff --git a/Dockerfile.11202 b/Dockerfile.11202 index d875883..0d5b114 100644 --- a/Dockerfile.11202 +++ b/Dockerfile.11202 @@ -45,7 +45,7 @@ ENV ORACLE_BASE=/u01/app/oracle \ ORACLE_SID=XE \ PATH=${PATH}:/u01/app/oracle/product/11.2.0/xe/bin:/u01/app/oracle -COPY oracle-xe-11.2.0-1.0.x86_64.rpm xe.11202.rsp install.11202.sh runDB.sh resetPassword healthcheck.sh /install/ +COPY oracle-xe-11.2.0-1.0.x86_64.rpm xe.11202.rsp install.11202.sh container-entrypoint.sh resetPassword healthcheck.sh /install/ RUN /install/install.11202.sh "${BUILD_MODE}" @@ -54,4 +54,4 @@ WORKDIR ${ORACLE_BASE} HEALTHCHECK CMD "${ORACLE_BASE}"/healthcheck.sh >/dev/null || exit 1 -ENTRYPOINT ["runDB.sh"] \ No newline at end of file +ENTRYPOINT ["container-entrypoint.sh"] \ No newline at end of file diff --git a/Dockerfile.1840 b/Dockerfile.1840 index 88925bb..c9d3eee 100644 --- a/Dockerfile.1840 +++ b/Dockerfile.1840 @@ -27,7 +27,7 @@ ENV ORACLE_BASE=/opt/oracle \ ORACLE_SID=XE \ PATH=${PATH}:/opt/oracle/product/18c/dbhomeXE/bin:/opt/oracle -COPY oracle-database-xe-18c-1.0-1.x86_64.rpm install.1840.sh runDB.sh resetPassword healthcheck.sh /install/ +COPY oracle-database-xe-18c-1.0-1.x86_64.rpm install.1840.sh container-entrypoint.sh resetPassword healthcheck.sh /install/ RUN /install/install.1840.sh "${BUILD_MODE}" @@ -36,4 +36,4 @@ WORKDIR ${ORACLE_BASE} HEALTHCHECK CMD "${ORACLE_BASE}"/healthcheck.sh >/dev/null || exit 1 -ENTRYPOINT ["runDB.sh"] \ No newline at end of file +ENTRYPOINT ["container-entrypoint.sh"] \ No newline at end of file diff --git a/runDB.sh b/container-entrypoint.sh similarity index 100% rename from runDB.sh rename to container-entrypoint.sh From 3d91eebc377acfbfae3e1fe4228669fb5d809516 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 28 Feb 2021 17:16:03 -0700 Subject: [PATCH 035/192] Implement ER #4 - _FILE variable support Signed-off-by: gvenzl --- container-entrypoint.sh | 42 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/container-entrypoint.sh b/container-entrypoint.sh index c48a3d3..035b3f3 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -2,8 +2,8 @@ # # Since: January, 2021 # Author: gvenzl -# Name: run.sh -# Description: Run the Oracle Database +# Name: container-entrypoint.sh +# Description: The entrypoint script for the container # # Copyright 2021 Gerald Venzl # @@ -37,6 +37,39 @@ EOF echo "CONTAINER: stopping container." } +# Retrieve value from ENV[_FILE] variable +# usage: file_env VARIABLE NAME [DEFAULT VALUE] +# ie: file_env 'ORACLE_PASSWORD' 'example' +# (will allow for "$ORACLE_PASSWORD_FILE" to fill in the value of +# "$ORACLE_PASSWORD" from a file, especially for container secrets feature) +file_env() { + + # Get name of variable + local variable="${1}" + # Get name of variable_FILE + local file_variable="${variable}_FILE" + + # If both variable and file_variable are specified, throw error and abort + if [ -n "${!variable:-}" ] && [ -n "${!file_variable:-}" ]; then + echo "Both \$${variable} and \$${file_variable} are specified but are mutually exclusive." + echo "Please specify only one of these variables." + exit 1; + fi; + + # Set value to default value, if any + local value="${2:-}" + + # Read value of variable, if any + if [ -n "${!variable:-}" ]; then + value="${!variable}" + # Read value of variable_FILE, if any + elif [ -n "${!file_variable:-}" ]; then + value="$(< "${!file_variable}")" + fi + + export "${variable}"="${value}" +} + # Setup environment variables function setup_env_vars() { @@ -45,6 +78,9 @@ function setup_env_vars() { if [ -d "${ORACLE_BASE}/oradata/dbconfig/${ORACLE_SID}" ]; then DATABASE_ALREADY_EXISTS="true"; else + # Allow for ORACLE_PASSWORD and or ORACLE_PASSWORD_FILE + file_env "ORACLE_PASSWORD" + # Password is mandatory for first container start if [ -z "${ORACLE_PASSWORD:-}" ] && [ -z "${ORACLE_RANDOM_PASSWORD:-}" ]; then echo "Oracle Database SYS and SYSTEM passwords have to be specified at first database startup." @@ -53,7 +89,7 @@ function setup_env_vars() { exit 1; # ORACLE_PASSWORD and ORACLE_RANDOM_PASSWORD are mutually exclusive elif [ -n "${ORACLE_PASSWORD:-}" ] && [ -n "${ORACLE_RANDOM_PASSWORD:-}" ]; then - echo "Both \$ORACLE_PASSWORD and \$ORACLE_RANDOM_PASSWORD are specified but are mutually exclusive." + echo "Both \$ORACLE_RANDOM_PASSWORD and \$ORACLE_PASSWORD[_FILE] are specified but are mutually exclusive." echo "Please specify only one of these variables." exit 1; fi; From dd6914b948de973167504537bb35aece2fe3d80c Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 6 Mar 2021 11:40:55 -0700 Subject: [PATCH 036/192] Make zip and gzip a runtime requirement Signed-off-by: gvenzl --- install.11202.sh | 8 ++++++-- install.1840.sh | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index dfd3790..6f9242e 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -50,7 +50,11 @@ echo "BUILDER: installing additional packages" microdnf -y install bc procps-ng util-linux net-tools # Install runtime dependencies -microdnf -y install libaio libnsl unzip +microdnf -y install libaio libnsl + +# Install container runtime specific packages +# (used by the entrypoint script, not the database itself) +microdnf -y install unzip gzip # Install GCC and other packages for full installation if [ "${BUILD_MODE}" == "FULL" ]; then @@ -415,7 +419,7 @@ fi; # Unfortunately microdnf does not automatically uninstall dependencies that have been # installed with a package, so if you were to uninstall just util-linux, for example, # it does not automatically also remove gzip and cracklib again. -microdnf -y remove bc libtirpc libnsl2 libfdisk libutempter gzip cracklib libpwquality \ +microdnf -y remove bc libtirpc libnsl2 libfdisk libutempter cracklib libpwquality \ pam util-linux dbus-libs dbus-tools pam libpwquality dbus-common \ dbus-daemon libpcap iptables-libs libseccomp kmod-libs acl \ device-mapper device-mapper-libs cryptsetup-libs \ diff --git a/install.1840.sh b/install.1840.sh index 29d4f9a..d1280c0 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -40,7 +40,11 @@ echo "BUILDER: Installing dependencies" microdnf -y install bc binutils file elfutils-libelf ksh sysstat procps-ng smartmontools make net-tools hostname # Install runtime dependencies -microdnf -y install libnsl glibc libaio libgcc libstdc++ unzip +microdnf -y install libnsl glibc libaio libgcc libstdc++ + +# Install container runtime specific packages +# (used by the entrypoint script, not the database itself) +microdnf -y install unzip gzip ################################ ###### Install Database ######## @@ -259,7 +263,7 @@ rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/metadata/* # Use rpm instead of microdnf to allow removing packages regardless of dependencies specified by the Oracle XE RPM rpm -e --nodeps dbus-libs libtirpc diffutils libnsl2 dbus-tools dbus-common dbus-daemon \ libpcap iptables-libs libseccomp libfdisk xz lm_sensors-libs libutempter \ - kmod-libs gzip cracklib libpwquality pam util-linux findutils acl \ + kmod-libs cracklib libpwquality pam util-linux findutils acl \ device-mapper device-mapper-libs cryptsetup-libs elfutils-default-yama-scope \ elfutils-libs systemd-pam systemd dbus smartmontools ksh sysstat procps-ng \ binutils file make bc net-tools hostname From c9a561690dfa58af209ff9582628b85c5744fb4d Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 6 Mar 2021 12:22:49 -0700 Subject: [PATCH 037/192] Make sure PWD is treated as a string Signed-off-by: gvenzl --- resetPassword | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resetPassword b/resetPassword index 2f02f3a..340b026 100755 --- a/resetPassword +++ b/resetPassword @@ -23,7 +23,7 @@ # Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ set -Eeuo pipefail -PASSWORD=${1} +PASSWORD="${1}" sqlplus -s / as sysdba << EOF ALTER USER SYS IDENTIFIED BY "${PASSWORD}"; From 449aec144f835c7024f80bca2b975312b728c92b Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 6 Mar 2021 18:29:40 -0700 Subject: [PATCH 038/192] Add support for custom scripts ER #3 Signed-off-by: gvenzl --- container-entrypoint.sh | 74 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/container-entrypoint.sh b/container-entrypoint.sh index 035b3f3..d61dab7 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -165,6 +165,58 @@ function sym_link_dbconfig() { } +# Run custom scripts provided by the user +# usage: run_custom_scripts PATH +# ie: run_custom_scripts /docker-entrypoint-initdb.d +# This runs *.sh, *.sql, *.sql.zip, *.sql.gz files +function run_custom_scripts { + + SCRIPTS_ROOT="${1}"; + + # Check whether parameter has been passed on + if [ -z "${SCRIPTS_ROOT}" ]; then + echo "No SCRIPTS_ROOT passed on, no scripts will be run"; + return; + 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 "CONTAINER: Executing user defined scripts..." + + for f in "${SCRIPTS_ROOT}"/*; do + case "${f}" in + *.sh) + if [ -x "${f}" ]; then + echo "CONTAINER: running ${f} ..."; "${f}"; echo "CONTAINER: DONE: running ${f}" + else + echo "CONTAINER: sourcing ${f} ..."; . "${f}" echo "CONTAINER: DONE: sourcing ${f}" + fi; + ;; + + *.sql) echo "CONTAINER: running ${f} ..."; echo "exit" | sqlplus -s / as sysdba @"${f}"; echo "CONTAINER: DONE: running ${f}" + ;; + + *.sql.zip) echo "CONTAINER: running ${f} ..."; echo "exit" | unzip -p "${f}" | sqlplus -s / as sysdba; echo "CONTAINER: DONE: running ${f}" + ;; + + *.sql.gz) echo "CONTAINER: running ${f} ..."; echo "exit" | zcat "${f}" | sqlplus -s / as sysdba; echo "CONTAINER: DONE: running ${f}" + ;; + + *) echo "CONTAINER: ignoring ${f}" + ;; + esac + echo ""; + done + + echo "CONTAINER: DONE: Executing user defined scripts." + echo ""; + + fi; + +} + ########################### ########################### ######### M A I N ######### @@ -200,12 +252,17 @@ echo "" # Check whether database did come up successfully if healthcheck.sh; then - # Set Oracle password if it's the first DB startup + + # First database startup / initialization if [ -z "${DATABASE_ALREADY_EXISTS:-}" ]; then + + # Set Oracle password if it's the first DB startup echo "CONTAINER: Resetting SYS and SYSTEM passwords." + # If password is specified if [ -n "${ORACLE_PASSWORD:-}" ]; then resetPassword "${ORACLE_PASSWORD}" + # Generate random password elif [ -n "${ORACLE_RANDOM_PASSWORD:-}" ]; then RANDOM_PASSWORD=$(date +%s | sha256sum | base64 | head -c 8) @@ -213,19 +270,33 @@ if healthcheck.sh; then echo "############################################" echo "ORACLE PASSWORD FOR SYS AND SYSTEM: ${RANDOM_PASSWORD}" echo "############################################" + # Should not happen unless script logic changes else echo "SCRIPT ERROR: Unspecified password!" echo "Please report a bug at https://github.com/gvenzl/oci-oracle-xe/issues with your environment details." exit 1; fi; + + # Running custom database initialization scripts + run_custom_scripts /container-entrypoint-initdb.d + # For backwards compatibility + run_custom_scripts /docker-entrypoint-initdb.d + else + # Password was passed on for container start but DB is already initialized, ignoring. if [ -n "${ORACLE_PASSWORD:-}" ]; then echo "CONTAINER: WARNING: \$ORACLE_PASSWORD has been specified but the database is already initialized. The password will be ignored." echo "CONTAINER: WARNING: If you want to reset the password, please run the resetPassword command, e.g. 'docker|podman exec resetPassword '." fi; fi; + + # Run custom database startup scripts + run_custom_scripts /container-entrypoint-startdb.d + # For backwards compatibility + run_custom_scripts /docker-entrypoint-startdb.d + echo "" echo "#########################" echo "DATABASE IS READY TO USE!" @@ -234,6 +305,7 @@ if healthcheck.sh; then echo "##################################################################" echo "CONTAINER: The following output is now from the alert_${ORACLE_SID}.log file:" echo "##################################################################" + else echo "############################################" echo "DATABASE STARTUP FAILED!" From 9aa33e82f788d5e5d119d9c0b0d961a37eda6e5f Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 7 Mar 2021 12:28:17 -0700 Subject: [PATCH 039/192] Update ReadMe (WIP) Signed-off-by: gvenzl --- README.md | 215 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 202 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 84728ae..0c1a319 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,214 @@ # oci-oracle-xe Oracle Database Express Edition Container / Docker images. -The images are compatible with `podman` and `docker`. You can use `podman` or `docker` interchangeably. +**The images are compatible with `podman` and `docker`. You can use `podman` or `docker` interchangeably.** -## Image flavors +# Supported tags and respective `Dockerfile` links -| Flavor | Description | Use cases | -| ------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | -| 11.2.0.2-slim | An image focussed on smallest possible image size sacrificing on additional functionality. | Best for where small images sizes are important but advanced functionality of Oracle Database is not needed. | -| 11.2.0.2 | A well-balanced image between image size and functionality. Recommended for most use cases. | Recommended for most use cases. | -| 11.2.0.2-full | An image containing all functionality as provided by the Oracle Database installation. | Best for extensions or customizations. | +* [`18.4.0-full`, `latest-full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) +* [`11.2.0.2-full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.11202) -For more information, see [Image flavor details](#image-flavor-details). +# Quick Start -## Quick start +Run a new database container: -### Reset passwords +```shell +docker run -d -p 1521:1521 -e ORACLE_PASSWORD= gvenzl/oracle-xe ``` -docker exec resetPassword + +Run a new persistent database container: + +```shell +docker run -d -p 1521:1521 -e ORACLE_PASSWORD= -v oracle-volume:/opt/oracle/oradata gvenzl/oracle-xe +``` + +Run a new database container with OEM Express expose: + +```shell +docker run -d -p 1521:1521 -e ORACLE_PASSWORD= -p 5500:5500 gvenzl/oracle-xe +``` + +Reset database `SYS` and `SYSTEM` passwords: + +```shell +docker exec resetPassword +``` + +# How to use this image + +## Subtle differences between versions + +The 11gR2 (11.2.0.2) Oracle Database version stores the database data files under `/u01/app/oracle/oradata/XE`. +**A volume for 11gR2 has to be pointed at `/u01/app/oradata`!** + +## Environment variables + +### `ORACLE_PASSWORD` +This variable is mandatory for the first container startup and specifies the password for the Oracle Database `SYS` and `SYSTEM` users. + +### `ORACLE_RANDOM_PASSWORD` +This is an optional variable. Set this variable to a non-empty value, like `yes`, to generate a random initial password for the `SYS` and `SYSTEM` users. The generated password will be printed to stdout (`ORACLE PASSWORD FOR SYS AND SYSTEM: ...`). + +## Container secrets + +As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to some of the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Container/Docker secrets stored in `/run/secrets/` files. For example: + +```shell +docker run --name some-oracle -e ORACLE_PASSWORD_FILE=/run/secrets/oracle-passwd -d gvenzl/oracle-xe +``` + +Currently, this is only supported for `ORACLE_PASSWORD`. + +## Initialization scripts +If you would like to perform additional initialization of the database running in a container, you can add one or more `*.sql`, `*.sql.gz`, `*.sql.zip` or `*.sh` files under `/container-entrypoint-initdb.d` (creating the directory if necessary). After the database setup is completed, these files will be executed automatically in alphabetical order. + +The `*.sql`, `*.sql.gz` and `*.sql.zip` files will be executed in Sql*Plus as the `SYS` user connected to the Oracle instance (`XE`). Compressed files will be uncompressed on the fly, allowing for e.g. bigger data loading scripts to save space. + +Executable `*.sh` files will be run in a new shell process while non-executable `*.sh` files (files that do not have the Linux e`x`ecutable permission set) will be sourced into the current shell process. The main difference between these methods is that sourced shell scripts can influence the environment of the current process and should generally be avoided. However, sourcing scripts allows for execution of these scripts even if the executable flag is not set for the files containing them. This basically avoids the "why did my script not get executed" confusion. + +***Note:*** scripts in `/container-entrypoint-initdb.d` are only run the first time the database is initialized; any pre-existing database will be left untouched on container startup. + +***Note:*** you can also put files under the `/docker-entrypoint-initdb.d` directory. This is kept for backwards compatibility with other widely used container images but should generally be avoided. Do not put files under `/container-entrypoint-initdb.d` **and** `/docker-entrypoint-initdb.d` as this would cause the same files to be executed twice! + +***Warning:*** if a command within the sourced `/container-entrypoint-initdb.d` scripts fails, it will cause the main entrypoint script to exit and stop the container. It also may leave the database in an incomplete initialized state. Make sure that shell scripts handle error situations gracefully and ideally do not source them! + +***Warning:*** do not exit executable `/container-entrypoint-initdb.d` scripts with a non-zero value (using e.g. `exit 1;`) unless it is desired for a container to be stopped! A non-zero return value will tell the main entrypoint script that something has gone wrong and that the container should be stopped. + +### Example + +The following example installs the [countries, cities and currencies sample data set](https://github.com/gvenzl/sample-data/tree/master/countries-cities-currencies) under a new user `TEST` into the database: + +```shell +[gvenzl@localhost init_scripts]$ pwd +/home/gvenzl/init_scripts + +[gvenzl@localhost init_scripts]$ ls -al +total 12 +drwxrwxr-x 2 gvenzl gvenzl 61 Mar 7 11:51 . +drwx------. 19 gvenzl gvenzl 4096 Mar 7 11:51 .. +-rw-rw-r-- 1 gvenzl gvenzl 134 Mar 7 11:50 1_create_user.sql +-rwxrwxr-x 1 gvenzl gvenzl 164 Mar 7 11:51 2_create_data_model.sh + +[gvenzl@localhost init_scripts]$ cat 1_create_user.sql +ALTER SESSION SET CONTAINER=XEPDB1; + +CREATE USER TEST IDENTIFIED BY test QUOTA UNLIMITED ON USERS; + +GRANT CONNECT, RESOURCE TO TEST; + +[gvenzl@localhost init_scripts]$ cat 2_create_data_model.sh +curl -LJO https://raw.githubusercontent.com/gvenzl/sample-data/master/countries-cities-currencies/install.sql + +sqlplus -s test/test@//localhost/XEPDB1 @install.sql + +rm install.sql + ``` +As the execution happens in alphabetical order, numbering the files will guarantee the execution order. A new container started up with `/home/gvenzl/init_scripts` pointing to `/container-entrypoint-initdb.d` will then execute the files above: + +```shell +podman run --name test \ +> -p 1521:1521 \ +> -e ORACLE_RANDOM_PASSWORD="y" \ +> -v /home/gvenzl/init_scripts:/container-entrypoint-initdb.d \ +> gvenzl/oracle-xe:18.4.0-full +CONTAINER: starting up... +CONTAINER: first database startup, initializing... +... +CONTAINER: Executing user defined scripts... +CONTAINER: running /container-entrypoint-initdb.d/1_create_user.sql ... + +Session altered. + + +User created. + + +Grant succeeded. + +CONTAINER: DONE: running /container-entrypoint-initdb.d/1_create_user.sql + +CONTAINER: running /container-entrypoint-initdb.d/2_create_data_model.sh ... + % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed +100 115k 100 115k 0 0 460k 0 --:--:-- --:--:-- --:--:-- 460k + +Table created. +... +Table provided actual +-------------------- ---------- ---------- +regions 7 7 +countries 196 196 +cities 204 204 +currencies 146 146 +currencies_countries 203 203 + + +Thank you! +-------------------------------------------------------------------------------- +The installation is finished, please check the verification output above! +If the 'provided' and 'actual' row counts match, the installation was successful +. + +If the row counts do not match, please check the above output for error messages +. + + +CONTAINER: DONE: running /container-entrypoint-initdb.d/2_create_data_model.sh + +CONTAINER: DONE: Executing user defined scripts. + + +######################### +DATABASE IS READY TO USE! +######################### +... +``` + +As a result, one can then connect to the new schema directly: + +```shell +[gvenzl@localhost init_scripts]$ sql test/test@//localhost/XEPDB1 + +SQLcl: Release 20.3 Production on Sun Mar 07 12:05:06 2021 + +Copyright (c) 1982, 2021, Oracle. All rights reserved. + +Connected to: +Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production +Version 18.4.0.0.0 + + +SQL> select * from countries where name = 'Austria'; + +COUNTRY_ID COUNTRY_CODE NAME OFFICIAL_NAME POPULATION AREA_SQ_KM LATITUDE LONGITUDE TIMEZONE REGION_ID +---------- ------------ ------- ------------------- ---------- ---------- -------- --------- ------------- --------- +AUT AT Austria Republic of Austria 8793000 83871 47.33333 13.33333 Europe/Vienna EU + +SQL> +``` + +## Startup scripts + +If you would like to perform additional action after the database running in a container has been started, you can add one or more `*.sql`, `*.sql.gz`, `*.sql.zip` or `*.sh` files under `/container-entrypoint-startdb.d` (creating the directory if necessary). After the database is up and ready for requests, these files will be executed automatically in alphabetical order. + +The execution order and implications are the same as with the [Initialization scripts](#initialization-scripts) described above. + +***Note:*** you can also put files under the `/docker-entrypoint-startdb.d` directory. This is kept for backwards compatibility with other widely used container images but should generally be avoided. Do not put files under `/container-entrypoint-startdb.d` **and** `/docker-entrypoint-startdb.d` as this would cause the same files to be executed twice! + +***Note:*** if the database inside the container is initialized (started for the first time), startup scripts are executed after the setup scripts. + +***Warning:*** files placed in `/container-entrypoint-startdb.d` are always executed after the database in a container is started, including pre-created databases. Use this mechanism only if you wish to perform a certain task always after the database has been (re)started by the container. + +# Image flavors + +| Flavor | Extension | Description | Use cases | +| -------| --------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------| +| Slim | `-slim` | An image focussed on smallest possible image size instead of additional functionality. | Wherever small images sizes are important but advanced functionality of Oracle Database is not needed. | +| Normal | [None] | A well-balanced image between image size and functionality. Recommended for most use cases. | Recommended for most use cases. | +| Full | `-full` | An image containing all functionality as provided by the Oracle Database installation. | Best for extensions and/or customizations. | + ## Image flavor details There are three flavors of the image: @@ -32,10 +221,10 @@ There are three flavors of the image: The full image provides an Oracle Database XE installation "as is", meaning as provided by the RPM install file. A couple of modifications have been performed to make the installation more suitable for running inside a container: -* The `REDO` logs have been relocated into `$ORACLE_BASE/oradata/$ORACLE_SID/` -* The fast recovery area has been relocated into `$ORACLE_BASE/oradata/$ORACLE_SID/` * `DBMS_XDB.SETLISTENERLOCALACCESS()` has been set to `FALSE` * An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) +* The `REDO` logs have been located into `$ORACLE_BASE/oradata/$ORACLE_SID/` (11gR2 images) and resized +* The fast recovery area has been removed (11gR2 images) ### Normal image flavor From 7d8513ef2462e4b8c91959b9857709c2a91f72cf Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 7 Mar 2021 13:22:15 -0700 Subject: [PATCH 040/192] reformat indent Signed-off-by: gvenzl --- install.11202.sh | 12 ++++++------ install.1840.sh | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 6f9242e..a07032a 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -35,13 +35,13 @@ SYSAUX_SIZE=610 TEMP_SIZE=2 UNDO_SIZE=155 if [ "${BUILD_MODE}" == "FULL" ]; then - REDO_SIZE=50 + REDO_SIZE=50 elif [ "${BUILD_MODE}" == "NORMAL" ]; then - REDO_SIZE=20 - USERS_SIZE=10 + REDO_SIZE=20 + USERS_SIZE=10 elif [ "${BUILD_MODE}" == "SLIM" ]; then - REDO_SIZE=10 - USERS_SIZE=2 + REDO_SIZE=10 + USERS_SIZE=2 fi; echo "BUILDER: installing additional packages" @@ -58,7 +58,7 @@ microdnf -y install unzip gzip # Install GCC and other packages for full installation if [ "${BUILD_MODE}" == "FULL" ]; then - microdnf -y install glibc make binutils gcc + microdnf -y install glibc make binutils gcc fi; # Fake 2 GB swap configuration diff --git a/install.1840.sh b/install.1840.sh index d1280c0..bc31e5a 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -31,7 +31,7 @@ echo "BUILDER: BUILD_MODE=${BUILD_MODE}" # Set data file sizes if [ "${BUILD_MODE}" == "FULL" ]; then - REDO_SIZE=50 + REDO_SIZE=50 fi; echo "BUILDER: Installing dependencies" From 3bd3a0e51f5ef3632ff2cb082a0e416e00d8e9cd Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 13 Mar 2021 21:42:49 -0700 Subject: [PATCH 041/192] Reorg Signed-off-by: gvenzl --- install.11202.sh | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index a07032a..2d18032 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -190,7 +190,6 @@ EOF fi; # Shrink datafiles - su -p oracle -c "sqlplus -s / as sysdba" << EOF --------------------------- @@ -214,26 +213,37 @@ EOF ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + --------------------------- -- Shrink SYSTEM tablespace + --------------------------- + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/system.dbf' RESIZE ${SYSTEM_SIZE}M; ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/system.dbf' - AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + ------------------------- -- Shrink TEMP tablespace + ------------------------- + ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp.dbf' RESIZE ${TEMP_SIZE}M; ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp.dbf' - AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + -------------------------- -- Shrink USERS tablespace + -------------------------- + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/users.dbf' RESIZE ${USERS_SIZE}M; ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/users.dbf' - AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + ------------------------- -- Shrink UNDO tablespace + ------------------------- + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs1.dbf' RESIZE ${UNDO_SIZE}M; ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs1.dbf' - AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; - + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; exit; EOF @@ -376,6 +386,9 @@ rm "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/adump/*.aud # Remove Data Pump log file rm "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/dpdump/dp.log +# Remove Oracle DB install logs +rm "${ORACLE_HOME}"/config/log/* + # Remove diag files rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/lck/* rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/metadata/* @@ -384,9 +397,7 @@ rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/lck/* rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/metadata/* rm -r "${ORACLE_BASE}"/oradiag_oracle/* -# Remove Oracle DB install logs -rm "${ORACLE_HOME}"/config/log/* - +# Remove additional files for NOMRAL and SLIM builds if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove APEX directory From 0cc71f6dce316ecb3d173bd025b034e4e34d369f Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 21 Mar 2021 13:23:43 -0700 Subject: [PATCH 042/192] Build and container tests for 11g and 18c Signed-off-by: gvenzl --- tests/all_build_tests.sh | 1 + tests/all_container_tests.sh | 26 ++++++++++++++++++++++++++ tests/build_Dockerfile_11202.sh | 7 ++++--- tests/build_Dockerfile_1840.sh | 7 ++++--- tests/functions.sh | 0 tests/run_container_11202.sh | 6 +++++- tests/run_container_1840.sh | 29 +++++++++++++++++++++++++++++ 7 files changed, 69 insertions(+), 7 deletions(-) mode change 100644 => 100755 tests/all_build_tests.sh create mode 100755 tests/all_container_tests.sh mode change 100644 => 100755 tests/build_Dockerfile_11202.sh mode change 100644 => 100755 tests/build_Dockerfile_1840.sh mode change 100644 => 100755 tests/functions.sh mode change 100644 => 100755 tests/run_container_11202.sh create mode 100755 tests/run_container_1840.sh diff --git a/tests/all_build_tests.sh b/tests/all_build_tests.sh old mode 100644 new mode 100755 index 3593b27..1d547d9 --- a/tests/all_build_tests.sh +++ b/tests/all_build_tests.sh @@ -23,3 +23,4 @@ set -Eeuo pipefail ./build_Dockerfile_11202.sh +./build_Dockerfile_1840.sh diff --git a/tests/all_container_tests.sh b/tests/all_container_tests.sh new file mode 100755 index 0000000..150545d --- /dev/null +++ b/tests/all_container_tests.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# Since: March, 2021 +# Author: gvenzl +# Name: all_container_tests.sh +# Description: Script for all run tests for Oracle DB XE +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +./run_container_11202.sh +./run_container_1840.sh diff --git a/tests/build_Dockerfile_11202.sh b/tests/build_Dockerfile_11202.sh old mode 100644 new mode 100755 index 2eaee59..6eb419d --- a/tests/build_Dockerfile_11202.sh +++ b/tests/build_Dockerfile_11202.sh @@ -34,8 +34,9 @@ echo "TEST: Building 11.2.0.2 NORMAL image" ./buildContainerImage.sh -v 11.2.0.2 echo "DONE: Building 11.2.0.2 NORMAL image" -echo "TEST: Building 11.2.0.2 SLIM image" -./buildContainerImage.sh -v 11.2.0.2 -s -echo "TEST: Building 11.2.0.2 SLIM image" +# Not done yet +#echo "TEST: Building 11.2.0.2 SLIM image" +#./buildContainerImage.sh -v 11.2.0.2 -s +#echo "TEST: Building 11.2.0.2 SLIM image" cd "${CURRENT_DIR}" diff --git a/tests/build_Dockerfile_1840.sh b/tests/build_Dockerfile_1840.sh old mode 100644 new mode 100755 index 5babc22..d365c0e --- a/tests/build_Dockerfile_1840.sh +++ b/tests/build_Dockerfile_1840.sh @@ -34,8 +34,9 @@ echo "TEST: Building 18.4.0 NORMAL image" ./buildContainerImage.sh -v 18.4.0 echo "DONE: Building 18.4.0 NORMAL image" -echo "TEST: Building 18.4.0 SLIM image" -./buildContainerImage.sh -v 19.4.0 -s -echo "DONE: Building 18.4.0 SLIM image" +# Not done yet +#echo "TEST: Building 18.4.0 SLIM image" +#./buildContainerImage.sh -v 18.4.0 -s +#echo "DONE: Building 18.4.0 SLIM image" cd "${CURRENT_DIR}" diff --git a/tests/functions.sh b/tests/functions.sh old mode 100644 new mode 100755 diff --git a/tests/run_container_11202.sh b/tests/run_container_11202.sh old mode 100644 new mode 100755 index 809564c..4a513ab --- a/tests/run_container_11202.sh +++ b/tests/run_container_11202.sh @@ -20,6 +20,10 @@ source ./functions.sh +####################### +####### 11g TEST ###### +####################### + runContainerTest "11.2.0.2 FULL image" "11202-full" "gvenzl/oracle-xe:11.2.0.2-full" runContainerTest "11.2.0.2 NORMAL image" "11202" "gvenzl/oracle-xe:11.2.0.2" -runContainerTest "11.2.0.2 SLIM image" "11202-slim" "gvenzl/oracle-xe:11.2.0.2-slim" +#runContainerTest "11.2.0.2 SLIM image" "11202-slim" "gvenzl/oracle-xe:11.2.0.2-slim" diff --git a/tests/run_container_1840.sh b/tests/run_container_1840.sh new file mode 100755 index 0000000..cafd283 --- /dev/null +++ b/tests/run_container_1840.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# Since: March, 2021 +# Author: gvenzl +# Name: run_container_1840.sh +# Description: Run container test scripts for Oracle DB XE 18.4.0 +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +source ./functions.sh + +####################### +####### 18c TEST ###### +####################### + +runContainerTest "18.4.0 FULL image" "1840-full" "gvenzl/oracle-xe:18.4.0-full" +runContainerTest "18.4.0 NORMAL image" "1840" "gvenzl/oracle-xe:18.4.0" +#runContainerTest "18.4.0 SLIM image" "1840-slim" "gvenzl/oracle-xe:18.4.0-slim" From 7ec10e2270287f7f57d79e6e6572d9ee6567f899 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 26 Mar 2021 20:03:58 -0700 Subject: [PATCH 043/192] Update UNDO size Signed-off-by: gvenzl --- install.1840.sh | 220 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 216 insertions(+), 4 deletions(-) diff --git a/install.1840.sh b/install.1840.sh index bc31e5a..a7b785b 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -30,8 +30,18 @@ BUILD_MODE=${1:-"NORMAL"} echo "BUILDER: BUILD_MODE=${BUILD_MODE}" # Set data file sizes +CDB_SYSAUX_SIZE=480 +PDB_SYSAUX_SIZE=342 +CDB_SYSTEM_SIZE=840 +PDB_SYSTEM_SIZE=255 +TEMP_SIZE=2 +CDB_UNDO_SIZE=70 +PDB_UNDO_SIZE=48 if [ "${BUILD_MODE}" == "FULL" ]; then REDO_SIZE=50 +elif [ "${BUILD_MODE}" == "NORMAL" ]; then + REDO_SIZE=20 + USERS_SIZE=10 fi; echo "BUILDER: Installing dependencies" @@ -108,7 +118,9 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Remove local_listener entry (using default 1521) ALTER SYSTEM SET LOCAL_LISTENER=''; - + + --TODO; SET UNDO_RETENTION + -- Reboot of DB SHUTDOWN IMMEDIATE; STARTUP; @@ -124,7 +136,186 @@ EOF ######## FULL INSTALL DONE ######## ################################### -# TODO +# If not building the FULL image, remove and shrink additional components +if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then + su -p oracle -c "sqlplus -s / as sysdba" << EOF + + --------- + -- CDB -- + --------- + -- Open PDB\$SEED in READ/WRITE mode + ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; + ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; + + -- Disable password profile checks (can only be done container by container) + ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; + + ALTER SESSION SET CONTAINER=PDB\$SEED; + ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; + + ALTER SESSION SET CONTAINER=XEPDB1; + ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; + + -- Go back to CDB level + ALTER SESSION SET CONTAINER=CDB\$ROOT; + + -- Reset PDB\$SEED to READ ONLY mode + ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; + ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ ONLY; + + ----------- + -- XEPDB -- + ----------- + ALTER SESSION SET CONTAINER=XEPDB1; + + -- Remove HR schema + DROP user HR cascade; + + exit; +EOF + + # Shrink datafiles + su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Open PDB\$SEED in READ/WRITE mode + ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; + ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; + + ---------------------------- + -- Shrink SYSAUX tablespaces + ---------------------------- + + -- Create new temporary SYSAUX tablespace + --CREATE TABLESPACE SYSAUX_TEMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux_temp.dbf' + --SIZE 250M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED; + + -- Move tables to temporary SYSAUX tablespace + --#TODO + --BEGIN + -- FOR cur IN (SELECT owner || '.' || table_name AS name FROM all_tables WHERE tablespace_name = 'SYSAUX') LOOP + -- EXECUTE IMMEDIATE 'ALTER TABLE ' || cur.name || ' MOVE TABLESPACE SYSAUX_TEMP'; + -- END LOOP; + --END; + --/ + + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux01.dbf' RESIZE ${CDB_SYSAUX_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=PDB\$SEED; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/sysaux01.dbf' RESIZE ${PDB_SYSAUX_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/sysaux01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=XEPDB1; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/sysaux01.dbf' RESIZE ${PDB_SYSAUX_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/sysaux01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=CDB\$ROOT; + + ---------------------------- + -- Shrink SYSTEM tablespaces + ---------------------------- + + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/system01.dbf' RESIZE ${CDB_SYSTEM_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/system01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=PDB\$SEED; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/system01.dbf' RESIZE ${PDB_SYSTEM_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/system01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=XEPDB1; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/system01.dbf' RESIZE ${PDB_SYSTEM_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/system01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=CDB\$ROOT; + + -------------------------- + -- Shrink TEMP tablespaces + -------------------------- + + ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp01.dbf' RESIZE ${TEMP_SIZE}M; + ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=PDB\$SEED; + -- Find and drop old TEMP file + DECLARE + v_tmp_file_name VARCHAR2(200); + BEGIN + SELECT name INTO v_tmp_file_name FROM v\$tempfile WHERE name LIKE '%/temp012%'; + -- TODO: shrink temp file to 2MB for PDB\$SEED + EXECUTE IMMEDIATE + 'ALTER DATABASE TEMPFILE ''' || v_tmp_file_name || ''' RESIZE 32M'; + EXECUTE IMMEDIATE + 'ALTER DATABASE TEMPFILE ''' || v_tmp_file_name || ''' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED'; + --TODO: rename ugly TEMP file and resize + + END; + / + + ALTER SESSION SET CONTAINER=XEPDB1; + ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/temp01.dbf' RESIZE ${TEMP_SIZE}M; + ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/temp01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=CDB\$ROOT; + + ---------------------------- + -- Shrink USERS tablespaces + ---------------------------- + + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/users01.dbf' RESIZE ${USERS_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/users01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=XEPDB1; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/users01.dbf' RESIZE ${USERS_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/users01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=CDB\$ROOT; + + ---------------------------- + -- Shrink UNDO tablespaces + ---------------------------- + + -- TODO: Try to further decrease UNDO sizes + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs01.dbf' RESIZE ${CDB_UNDO_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=PDB\$SEED; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/undotbs01.dbf' RESIZE ${PDB_UNDO_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/undotbs01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=XEPDB1; + -- PDB UNDO cannot go smaller (not sure yet why, TODO) + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/undotbs01.dbf' RESIZE ${CDB_UNDO_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/undotbs01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=CDB\$ROOT; + + ------------------------------ + -- Complete actions and finish + ------------------------------ + ALTER SESSION SET CONTAINER=CDB\$ROOT; + + -- Reset PDB\$SEED to READ ONLY mode + ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; + ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ ONLY; + + exit; +EOF + + +fi; ################################### ########### DB SHUTDOWN ########### @@ -160,8 +351,8 @@ echo \ "LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_${ORACLE_SID})) (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) - (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) @@ -185,7 +376,19 @@ ${ORACLE_SID}PDB1 = (SERVER = DEDICATED) (SERVICE_NAME = ${ORACLE_SID}PDB1) ) - )" > "${ORACLE_HOME}"/network/admin/tnsnames.ora + ) + +EXTPROC_CONNECTION_DATA = + (DESCRIPTION = + (ADDRESS_LIST = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_${ORACLE_SID})) + ) + (CONNECT_DATA = + (SID = PLSExtProc) + (PRESENTATION = RO) + ) + ) +" > "${ORACLE_HOME}"/network/admin/tnsnames.ora # sqlnet.ora echo "NAME.DIRECTORY_PATH= (EZCONNECT, TNSNAMES)" > "${ORACLE_HOME}"/network/admin/sqlnet.ora @@ -259,6 +462,15 @@ rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/drc"${ORACLE_SID}".log rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/lck/* rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/metadata/* +# Remove additional files for NOMRAL and SLIM builds +if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then + + # Remove JDBC drivers + rm -r "${ORACLE_HOME}"/jdbc + rm -r "${ORACLE_HOME}"/jlib + +fi; + # Remove installation dependencies # Use rpm instead of microdnf to allow removing packages regardless of dependencies specified by the Oracle XE RPM rpm -e --nodeps dbus-libs libtirpc diffutils libnsl2 dbus-tools dbus-common dbus-daemon \ From 5e6a366c66758a5bc94413424d890afdc15f3a09 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 26 Mar 2021 20:19:05 -0700 Subject: [PATCH 044/192] Update ReadMe Signed-off-by: gvenzl --- README.md | 49 ++++++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 0c1a319..f5ade7d 100644 --- a/README.md +++ b/README.md @@ -209,47 +209,50 @@ The execution order and implications are the same as with the [Initialization sc | Normal | [None] | A well-balanced image between image size and functionality. Recommended for most use cases. | Recommended for most use cases. | | Full | `-full` | An image containing all functionality as provided by the Oracle Database installation. | Best for extensions and/or customizations. | -## Image flavor details - -There are three flavors of the image: - * FULL (`-full` tag appended) - * NORMAL (no tag appended) - * SLIM (`-slim` tag appended) - -### Full image flavor +## Full image flavor The full image provides an Oracle Database XE installation "as is", meaning as provided by the RPM install file. A couple of modifications have been performed to make the installation more suitable for running inside a container: * `DBMS_XDB.SETLISTENERLOCALACCESS()` has been set to `FALSE` * An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) -* The `REDO` logs have been located into `$ORACLE_BASE/oradata/$ORACLE_SID/` (11gR2 images) and resized + +### 18c specific + +* `LOCAL_LISTENER` is set to `NULL` (18c) +* `COMMON_USER_PREFIX` is set to `NULL` (18c) + +### 11g R2 specific + +* The `REDO` logs have been located into `$ORACLE_BASE/oradata/$ORACLE_SID/` (11gR2 image) * The fast recovery area has been removed (11gR2 images) -### Normal image flavor +## Normal image flavor The normal image has all customizations that the full image has. Additionally, it also includes the following changes: -#### Database components -* Oracle APEX has been removed (you can download and install the latest and greatest from [apex.oracle.com](https://apex.oracle.com)) +### Database components +* Oracle APEX has been removed (you can download and install the latest and greatest from [apex.oracle.com](https://apex.oracle.com), 11gR2 image) * The `HR` schema and folder have been removed -* The jdbc drivers have been removed -#### Operating system +### Operating system -* The following Linux packages are not installed: `binutils`, `gcc`, `glibc`, `make` +* The following Linux packages are not installed: `binutils`, `gcc`, `glibc`, `make` (11g R2) +* The jdbc drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`) -#### Data files +### Data files -| Tablespace | Size | Autoextend | Max size | -| ---------- | -----: | ---------: | ----------- | -| `REDO` | 20 MB | `N/A` | `N/A` | -| `TEMP` | 2 MB | 10 MB | `UNLIMITED` | -| `UNDO` | 10 MB | 10 MB | `UNLIMITED` | -| `USERS` | 10 MB | 10 MB | `UNLIMITED` | +| Tablespace | 18c Size | 11g Size | Autoextend | Max size | +| ---------- | --------:| -------: | ---------: | ----------- | +| `REDO` | 20 MB | 20 MB | `N/A` | `N/A` | +| `SYSAUX` | 480 MB (CDB)
342 MB (PDB) | 610 MB | 10 MB | `UNLIMITED` | +| `SYSTEM` | 353 MB (CDB)
255 MB (PDB) | 353 MB | 10 MB | `UNLIMITED` | +| `TEMP` | 2 MB (CDB)
2 MB (PDB) | 2 MB | 10 MB | `UNLIMITED` | +| `UNDO` | 70 MB (CDB)
40 MB (PDB) | 10 MB | 10 MB | `UNLIMITED` | +| `USERS` | 10 MB | 10 MB | 10 MB | `UNLIMITED` | -#### Others +### Others * The `DEFAULT` profile has the following set: * `FAILED_LOGIN_ATTEMPTS=UNLIMITED` From a0ead788494ff9978ea0a63b147d044acbbe8e34 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 26 Mar 2021 20:31:49 -0700 Subject: [PATCH 045/192] Introduce tags Signed-off-by: gvenzl --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f5ade7d..cf60f05 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,11 @@ Oracle Database Express Edition Container / Docker images. # Supported tags and respective `Dockerfile` links -* [`18.4.0-full`, `latest-full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) -* [`11.2.0.2-full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.11202) +* [`18.4.0`, `18`, `latest`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) +* [`18.4.0-full`, `18-full`, `full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) +* [`11.2.0.2`, `11`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.11202) +* [`11.2.0.2-slim`, `11-slim`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.11202) +* [`11.2.0.2-full`, `11-full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.11202) # Quick Start From 5d1007325efdecc23e670842dc2b3f4b43f308f0 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 27 Mar 2021 09:21:30 -0700 Subject: [PATCH 046/192] Add slim builds for 11g Signed-off-by: gvenzl --- tests/build_Dockerfile_11202.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/build_Dockerfile_11202.sh b/tests/build_Dockerfile_11202.sh index 6eb419d..b2a030f 100755 --- a/tests/build_Dockerfile_11202.sh +++ b/tests/build_Dockerfile_11202.sh @@ -34,9 +34,9 @@ echo "TEST: Building 11.2.0.2 NORMAL image" ./buildContainerImage.sh -v 11.2.0.2 echo "DONE: Building 11.2.0.2 NORMAL image" -# Not done yet -#echo "TEST: Building 11.2.0.2 SLIM image" -#./buildContainerImage.sh -v 11.2.0.2 -s -#echo "TEST: Building 11.2.0.2 SLIM image" +Not done yet +echo "TEST: Building 11.2.0.2 SLIM image" +./buildContainerImage.sh -v 11.2.0.2 -s +echo "TEST: Building 11.2.0.2 SLIM image" cd "${CURRENT_DIR}" From b9add86c9b6a9732530e2d32aca042d502739d48 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 27 Mar 2021 09:35:38 -0700 Subject: [PATCH 047/192] Remove comment line Signed-off-by: gvenzl --- tests/build_Dockerfile_11202.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/build_Dockerfile_11202.sh b/tests/build_Dockerfile_11202.sh index b2a030f..2eaee59 100755 --- a/tests/build_Dockerfile_11202.sh +++ b/tests/build_Dockerfile_11202.sh @@ -34,7 +34,6 @@ echo "TEST: Building 11.2.0.2 NORMAL image" ./buildContainerImage.sh -v 11.2.0.2 echo "DONE: Building 11.2.0.2 NORMAL image" -Not done yet echo "TEST: Building 11.2.0.2 SLIM image" ./buildContainerImage.sh -v 11.2.0.2 -s echo "TEST: Building 11.2.0.2 SLIM image" From 2fba379575d6e19711e5e41596b4414dbbd857f5 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 27 Mar 2021 10:30:43 -0700 Subject: [PATCH 048/192] Update ReadMe Signed-off-by: gvenzl --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cf60f05..48b91e0 100644 --- a/README.md +++ b/README.md @@ -19,13 +19,19 @@ Run a new database container: docker run -d -p 1521:1521 -e ORACLE_PASSWORD= gvenzl/oracle-xe ``` -Run a new persistent database container: +Run a new persistent **18c** database container: ```shell docker run -d -p 1521:1521 -e ORACLE_PASSWORD= -v oracle-volume:/opt/oracle/oradata gvenzl/oracle-xe ``` -Run a new database container with OEM Express expose: +Run a new persistent **11g R2** database container: + +```shell +docker run -d -p 1521:1521 -e ORACLE_PASSWORD= -v oracle-volume:/u01/app/oracle/oradata gvenzl/oracle-xe +``` + +Run a new database container with OEM Express exposed: ```shell docker run -d -p 1521:1521 -e ORACLE_PASSWORD= -p 5500:5500 gvenzl/oracle-xe From 8051974c99527f0750d76c620806350454f34592 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 27 Mar 2021 10:45:21 -0700 Subject: [PATCH 049/192] fix typo in ReadMe Signed-off-by: gvenzl --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 48b91e0..1a7567b 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ docker run -d -p 1521:1521 -e ORACLE_PASSWORD= -v oracle-volume:/ Run a new persistent **11g R2** database container: ```shell -docker run -d -p 1521:1521 -e ORACLE_PASSWORD= -v oracle-volume:/u01/app/oracle/oradata gvenzl/oracle-xe +docker run -d -p 1521:1521 -e ORACLE_PASSWORD= -v oracle-volume:/u01/app/oracle/oradata gvenzl/oracle-xe:11 ``` Run a new database container with OEM Express exposed: From 69084fe539f70a2526a077f24c792d67c01688ef Mon Sep 17 00:00:00 2001 From: gvenzl Date: Mon, 29 Mar 2021 19:34:58 -0700 Subject: [PATCH 050/192] Remove MKL requirement Signed-off-by: gvenzl --- install.1840.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/install.1840.sh b/install.1840.sh index a7b785b..976679d 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -52,6 +52,11 @@ microdnf -y install bc binutils file elfutils-libelf ksh sysstat procps-ng smart # Install runtime dependencies microdnf -y install libnsl glibc libaio libgcc libstdc++ +# Install fortran runtime for libora_netlib.so (so that the Intel Math Kernel libraries are no longer needed) +if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then + microdnf -y install compat-libgfortran-48 +fi; + # Install container runtime specific packages # (used by the entrypoint script, not the database itself) microdnf -y install unzip gzip @@ -140,6 +145,9 @@ EOF if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then su -p oracle -c "sqlplus -s / as sysdba" << EOF + -- Deactivate Intel's Math Kernel Libraries + ALTER SYSTEM SET "_dmm_blas_library"='libora_netlib.so' SCOPE=SPFILE; + --------- -- CDB -- --------- @@ -171,6 +179,15 @@ if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then -- Remove HR schema DROP user HR cascade; + ------------------------------------- + -- Bounce DB to free up UNDO, etc. -- + ------------------------------------- + -- Go back to CDB level + + ALTER SESSION SET CONTAINER=CDB\$ROOT; + shutdown immediate; + startup; + exit; EOF @@ -469,6 +486,9 @@ if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then rm -r "${ORACLE_HOME}"/jdbc rm -r "${ORACLE_HOME}"/jlib + # Remove Intel's Math kernel libraries + rm "${ORACLE_HOME}"/lib/libmkl_* + fi; # Remove installation dependencies From 7298f54f3c3466c54085f6aed518ffdb2bc486a3 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Mon, 29 Mar 2021 20:09:52 -0700 Subject: [PATCH 051/192] Remove sysconfig file Signed-off-by: gvenzl --- install.1840.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install.1840.sh b/install.1840.sh index a7b785b..02d6bf8 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -438,6 +438,7 @@ rm -r /install # Cleanup XE files not needed for being in a container but were installed by the rpm /sbin/chkconfig --del oracle-xe-18c rm /etc/init.d/oracle-xe-18c +rm /etc/sysconfig/oracle-xe-18c.conf rm -r /var/log/oracle-database-xe-18c rm -r /tmp/* From 5d1f8db2e7e0e7a56e641e75785ad1525080f811 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 3 Apr 2021 12:20:34 -0700 Subject: [PATCH 052/192] Clean up DB components Signed-off-by: gvenzl --- install.1840.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/install.1840.sh b/install.1840.sh index 02d6bf8..213d62f 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -444,6 +444,7 @@ rm -r /tmp/* # Remove SYS audit directories and files created during install rm -r "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/adump/* +rm -r "${ORACLE_BASE}"/audit/"${ORACLE_SID}"/* # Remove Data Pump log file rm "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/dpdump/dp.log @@ -466,9 +467,20 @@ rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/metadata/* # Remove additional files for NOMRAL and SLIM builds if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then + # Remove OPatch and QOpatch + rm -r "${ORACLE_HOME}"/OPatch + rm -r "${ORACLE_HOME}"/QOpatch + + # Remove assistants + rm -r "${ORACLE_HOME}"/assistants + + # Remove Oracle Database Migration Assistant for Unicode (dmu) + rm -r "${ORACLE_HOME}"/dmu + # Remove JDBC drivers rm -r "${ORACLE_HOME}"/jdbc rm -r "${ORACLE_HOME}"/jlib + rm -r "${ORACLE_HOME}"/ucp fi; From 79a2bb02438775b60256d412227c67aaf0679ebe Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 3 Apr 2021 12:27:27 -0700 Subject: [PATCH 053/192] Update tests and retries Signed-off-by: gvenzl --- tests/functions.sh | 7 ++++--- tests/run_container_11202.sh | 9 +++++++-- tests/run_container_1840.sh | 13 +++++++++++-- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/tests/functions.sh b/tests/functions.sh index feb66fa..58a84cb 100755 --- a/tests/functions.sh +++ b/tests/functions.sh @@ -29,12 +29,13 @@ function checkDB { CONTAINER_NAME="${1}" tries=0 - max_tries=10 + max_tries=12 + sleep_time_secs=10 # Wait until container is ready while [ ${tries} -lt ${max_tries} ]; do # Sleep until DB is up and running - sleep 5; + sleep ${sleep_time_secs}; # Is the database ready for use? podman logs ${CONTAINER_NAME} | grep 'DATABASE IS READY TO USE' >/dev/null; @@ -45,7 +46,7 @@ function checkDB { ((tries++)) done; - + return 1; } diff --git a/tests/run_container_11202.sh b/tests/run_container_11202.sh index 4a513ab..230c0bc 100755 --- a/tests/run_container_11202.sh +++ b/tests/run_container_11202.sh @@ -25,5 +25,10 @@ source ./functions.sh ####################### runContainerTest "11.2.0.2 FULL image" "11202-full" "gvenzl/oracle-xe:11.2.0.2-full" -runContainerTest "11.2.0.2 NORMAL image" "11202" "gvenzl/oracle-xe:11.2.0.2" -#runContainerTest "11.2.0.2 SLIM image" "11202-slim" "gvenzl/oracle-xe:11.2.0.2-slim" +runContainerTest "11 FULL image" "11-full" "gvenzl/oracle-xe:11-full" + +runContainerTest "11.2.0.2 REGULAR image" "11202" "gvenzl/oracle-xe:11.2.0.2" +runContainerTest "11 REGULAR image" "11" "gvenzl/oracle-xe:11" + +runContainerTest "11.2.0.2 SLIM image" "11202-slim" "gvenzl/oracle-xe:11.2.0.2-slim" +runContainerTest "11 SLIM image" "11-slim" "gvenzl/oracle-xe:11-slim" diff --git a/tests/run_container_1840.sh b/tests/run_container_1840.sh index cafd283..d9175b5 100755 --- a/tests/run_container_1840.sh +++ b/tests/run_container_1840.sh @@ -21,9 +21,18 @@ source ./functions.sh ####################### -####### 18c TEST ###### +###### 18c TEST ####### ####################### +####################### +##### Image tests ##### +####################### runContainerTest "18.4.0 FULL image" "1840-full" "gvenzl/oracle-xe:18.4.0-full" -runContainerTest "18.4.0 NORMAL image" "1840" "gvenzl/oracle-xe:18.4.0" +runContainerTest "18 FULL image" "18-full" "gvenzl/oracle-xe:18-full" +runContainerTest "FULL image" "full" "gvenzl/oracle-xe:full" + +runContainerTest "18.4.0 REGULAR image" "1840" "gvenzl/oracle-xe:18.4.0" +runContainerTest "18 REGULAR image" "18" "gvenzl/oracle-xe:18" +runContainerTest "REGULAR image" "latest" "gvenzl/oracle-xe" + #runContainerTest "18.4.0 SLIM image" "1840-slim" "gvenzl/oracle-xe:18.4.0-slim" From 2e7fd4cd901cdfdb3dc4b4c7a174dfa9222a7e5f Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 3 Apr 2021 12:33:28 -0700 Subject: [PATCH 054/192] Update all references to REGULAR images Signed-off-by: gvenzl --- Dockerfile.11202 | 4 ++-- README.md | 22 ++++++++++++++-------- buildContainerImage.sh | 8 ++++---- install.11202.sh | 10 +++++----- install.1840.sh | 12 ++++++------ tests/build_Dockerfile_11202.sh | 4 ++-- tests/build_Dockerfile_1840.sh | 4 ++-- 7 files changed, 35 insertions(+), 29 deletions(-) diff --git a/Dockerfile.11202 b/Dockerfile.11202 index 0d5b114..1fced89 100644 --- a/Dockerfile.11202 +++ b/Dockerfile.11202 @@ -14,12 +14,12 @@ # Database configuration is as per default installation, except for the # location of the fast_recovery_area and redo logs. # -# NORMAL: Following functionalities have been removed: +# REGULAR: Following functionalities have been removed: # * gcc & make (needed for native PL/SQL execution, etc.) # * APEX # # SLIM: Following functionalities have been removed: -# * Everything that has been removed in the NORMAL image, plus: +# * Everything that has been removed in the REGULAR image, plus: # * Oracle Text # # Copyright 2021 Gerald Venzl diff --git a/README.md b/README.md index 1a7567b..09fce32 100644 --- a/README.md +++ b/README.md @@ -212,11 +212,11 @@ The execution order and implications are the same as with the [Initialization sc # Image flavors -| Flavor | Extension | Description | Use cases | -| -------| --------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------| -| Slim | `-slim` | An image focussed on smallest possible image size instead of additional functionality. | Wherever small images sizes are important but advanced functionality of Oracle Database is not needed. | -| Normal | [None] | A well-balanced image between image size and functionality. Recommended for most use cases. | Recommended for most use cases. | -| Full | `-full` | An image containing all functionality as provided by the Oracle Database installation. | Best for extensions and/or customizations. | +| Flavor | Extension | Description | Use cases | +| --------| --------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------| +| Slim | `-slim` | An image focussed on smallest possible image size instead of additional functionality. | Wherever small images sizes are important but advanced functionality of Oracle Database is not needed. | +| Regular | [None] | A well-balanced image between image size and functionality. Recommended for most use cases. | Recommended for most use cases. | +| Full | `-full` | An image containing all functionality as provided by the Oracle Database installation. | Best for extensions and/or customizations. | ## Full image flavor @@ -236,19 +236,24 @@ A couple of modifications have been performed to make the installation more suit * The `REDO` logs have been located into `$ORACLE_BASE/oradata/$ORACLE_SID/` (11gR2 image) * The fast recovery area has been removed (11gR2 images) -## Normal image flavor +## Regular image flavor -The normal image has all customizations that the full image has. +The regular image has all customizations that the full image has. Additionally, it also includes the following changes: ### Database components * Oracle APEX has been removed (you can download and install the latest and greatest from [apex.oracle.com](https://apex.oracle.com), 11gR2 image) * The `HR` schema and folder have been removed +* The JDBC drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`, `$ORACLE_HOME/ucp`) +* The Oracle Database Assistants have been removed (`$ORACLE_HOME/assistants`) +* The Oracle Database Migration Assistant for Unicode has been removed (`$ORACLE_HOME/dmu`) +* The OPatch utility has been removed (`$ORACLE_HOME/OPatch`) +* The QOpatch utility has been removed (`$ORACLE_HOME/QOpatch`) ### Operating system * The following Linux packages are not installed: `binutils`, `gcc`, `glibc`, `make` (11g R2) -* The jdbc drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`) + ### Data files @@ -266,3 +271,4 @@ Additionally, it also includes the following changes: * The `DEFAULT` profile has the following set: * `FAILED_LOGIN_ATTEMPTS=UNLIMITED` * `PASSWORD_LIFE_TIME=UNLIMITED` +* The Intel Math kernel libraries have been removed \ No newline at end of file diff --git a/buildContainerImage.sh b/buildContainerImage.sh index 925bdc2..16b4198 100755 --- a/buildContainerImage.sh +++ b/buildContainerImage.sh @@ -23,7 +23,7 @@ set -Eeuo pipefail VERSION="18.4.0" -FLAVOR="NORMAL" +FLAVOR="REGULAR" IMAGE_NAME="gvenzl/oracle-xe" SKIP_CHECKSUM="false" @@ -35,7 +35,7 @@ Builds a container image for Oracle Database XE. Parameters: -f: creates a 'full' image - -n: creates a normal image (default) + -n: creates a regular image (default) -s: creates a 'slim' image -v: version of Oracle Database XE to build Choose one of: 11.2.0.2, 18.4.0 @@ -65,7 +65,7 @@ while getopts "hfnsv:io:" optname; do FLAVOR="FULL" ;; "n") - FLAVOR="NORMAL" + FLAVOR="REGULAR" ;; "s") FLAVOR="SLIM" @@ -107,7 +107,7 @@ fi; IMAGE_NAME="${IMAGE_NAME}:${VERSION}" -if [ "${FLAVOR}" != "NORMAL" ]; then +if [ "${FLAVOR}" != "REGULAR" ]; then IMAGE_NAME="${IMAGE_NAME}-${FLAVOR,,}" fi; diff --git a/install.11202.sh b/install.11202.sh index 2d18032..4b9cb02 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -24,8 +24,8 @@ set -Eeuo pipefail echo "BUILDER: started" -# Build mode ("SLIM", "NORMAL", "FULL") -BUILD_MODE=${1:-"NORMAL"} +# Build mode ("SLIM", "REGULAR", "FULL") +BUILD_MODE=${1:-"REGULAR"} echo "BUILDER: BUILD_MODE=${BUILD_MODE}" @@ -36,7 +36,7 @@ TEMP_SIZE=2 UNDO_SIZE=155 if [ "${BUILD_MODE}" == "FULL" ]; then REDO_SIZE=50 -elif [ "${BUILD_MODE}" == "NORMAL" ]; then +elif [ "${BUILD_MODE}" == "REGULAR" ]; then REDO_SIZE=20 USERS_SIZE=10 elif [ "${BUILD_MODE}" == "SLIM" ]; then @@ -159,7 +159,7 @@ rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo04.log ################################### # If not building the FULL image, remove and shrink additional components -if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then +if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Disable password profile checks @@ -398,7 +398,7 @@ rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/metadata/* rm -r "${ORACLE_BASE}"/oradiag_oracle/* # Remove additional files for NOMRAL and SLIM builds -if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then +if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove APEX directory rm -r "${ORACLE_HOME}"/apex diff --git a/install.1840.sh b/install.1840.sh index bcc35ed..13f3955 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -24,8 +24,8 @@ set -Eeuo pipefail echo "BUILDER: started" -# Build mode ("SLIM", "NORMAL", "FULL") -BUILD_MODE=${1:-"NORMAL"} +# Build mode ("SLIM", "REGULAR", "FULL") +BUILD_MODE=${1:-"REGULAR"} echo "BUILDER: BUILD_MODE=${BUILD_MODE}" @@ -39,7 +39,7 @@ CDB_UNDO_SIZE=70 PDB_UNDO_SIZE=48 if [ "${BUILD_MODE}" == "FULL" ]; then REDO_SIZE=50 -elif [ "${BUILD_MODE}" == "NORMAL" ]; then +elif [ "${BUILD_MODE}" == "REGULAR" ]; then REDO_SIZE=20 USERS_SIZE=10 fi; @@ -53,7 +53,7 @@ microdnf -y install bc binutils file elfutils-libelf ksh sysstat procps-ng smart microdnf -y install libnsl glibc libaio libgcc libstdc++ # Install fortran runtime for libora_netlib.so (so that the Intel Math Kernel libraries are no longer needed) -if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then +if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then microdnf -y install compat-libgfortran-48 fi; @@ -142,7 +142,7 @@ EOF ################################### # If not building the FULL image, remove and shrink additional components -if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then +if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Deactivate Intel's Math Kernel Libraries @@ -482,7 +482,7 @@ rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/lck/* rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/metadata/* # Remove additional files for NOMRAL and SLIM builds -if [ "${BUILD_MODE}" == "NORMAL" ] || [ "${BUILD_MODE}" == "SLIM" ]; then +if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove OPatch and QOpatch rm -r "${ORACLE_HOME}"/OPatch diff --git a/tests/build_Dockerfile_11202.sh b/tests/build_Dockerfile_11202.sh index 2eaee59..34be783 100755 --- a/tests/build_Dockerfile_11202.sh +++ b/tests/build_Dockerfile_11202.sh @@ -30,9 +30,9 @@ echo "TEST: Building 11.2.0.2 FULL image" ./buildContainerImage.sh -v 11.2.0.2 -f echo "DONE: Building 11.2.0.2 FULL image" -echo "TEST: Building 11.2.0.2 NORMAL image" +echo "TEST: Building 11.2.0.2 REGULAR image" ./buildContainerImage.sh -v 11.2.0.2 -echo "DONE: Building 11.2.0.2 NORMAL image" +echo "DONE: Building 11.2.0.2 REGULAR image" echo "TEST: Building 11.2.0.2 SLIM image" ./buildContainerImage.sh -v 11.2.0.2 -s diff --git a/tests/build_Dockerfile_1840.sh b/tests/build_Dockerfile_1840.sh index d365c0e..c7f5956 100755 --- a/tests/build_Dockerfile_1840.sh +++ b/tests/build_Dockerfile_1840.sh @@ -30,9 +30,9 @@ echo "TEST: Building 18.4.0 FULL image" ./buildContainerImage.sh -v 18.4.0 -f echo "DONE: Building 18.4.0 FULL image" -echo "TEST: Building 18.4.0 NORMAL image" +echo "TEST: Building 18.4.0 REGULAR image" ./buildContainerImage.sh -v 18.4.0 -echo "DONE: Building 18.4.0 NORMAL image" +echo "DONE: Building 18.4.0 REGULAR image" # Not done yet #echo "TEST: Building 18.4.0 SLIM image" From 2ea1270950ba9616773b87ad0b5da8f5f47832a4 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 9 Apr 2021 21:34:43 -0700 Subject: [PATCH 055/192] Clean zip files in lib dir Signed-off-by: gvenzl --- install.1840.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install.1840.sh b/install.1840.sh index 13f3955..ac70509 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -502,6 +502,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove Intel's Math kernel libraries rm "${ORACLE_HOME}"/lib/libmkl_* + # Remove zip artifacts in $ORACLE_HOME/lib + rm "${ORACLE_HOME}"/lib/*.zip + fi; # Remove installation dependencies From 1890013df8d91ed96a97648628b56b0c3f854a93 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 9 Apr 2021 21:38:01 -0700 Subject: [PATCH 056/192] Remove not needed deps from fortran runtime Signed-off-by: gvenzl --- install.1840.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/install.1840.sh b/install.1840.sh index ac70509..bcfc47d 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -505,6 +505,11 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove zip artifacts in $ORACLE_HOME/lib rm "${ORACLE_HOME}"/lib/*.zip + # Remove not needed packages + # Use rpm instad of microdnf to allow removing packages regardless of their dependencies + rpm -e --nodeps glibc-devel glibc-headers kernel-headers libpkgconf libxcrypt-devel \ + pkgconf pkgconf-m4 pkgconf-pkg-config + fi; # Remove installation dependencies From fd76cfba9a9cb05ada68241146d99a625a1e0e67 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 9 Apr 2021 21:40:00 -0700 Subject: [PATCH 057/192] Remove inventory directory Signed-off-by: gvenzl --- install.1840.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install.1840.sh b/install.1840.sh index bcfc47d..9d8a68f 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -494,6 +494,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove Oracle Database Migration Assistant for Unicode (dmu) rm -r "${ORACLE_HOME}"/dmu + # Remove inventory directory + rm -r "${ORACLE_HOME}"/inventory + # Remove JDBC drivers rm -r "${ORACLE_HOME}"/jdbc rm -r "${ORACLE_HOME}"/jlib From 832aea66d5c084bf485a5b5902515fabc2f04893 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 9 Apr 2021 21:41:12 -0700 Subject: [PATCH 058/192] Move zip file to ORACLE_BASE for host-only vols Signed-off-by: gvenzl --- container-entrypoint.sh | 10 +++++++--- install.11202.sh | 2 ++ install.1840.sh | 2 ++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/container-entrypoint.sh b/container-entrypoint.sh index d61dab7..46b1a73 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -99,10 +99,14 @@ function setup_env_vars() { # Create dbconfig directory structure function create_dbconfig() { - if [ -f "${ORACLE_BASE}"/oradata/"${ORACLE_SID}".zip ]; then + if [ -f "${ORACLE_BASE}"/"${ORACLE_SID}".zip ]; then echo "CONTAINER: uncompressing database data files, please wait..." - unzip "${ORACLE_BASE}"/oradata/"${ORACLE_SID}".zip -d "${ORACLE_BASE}"/oradata/ 1> /dev/null - rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}".zip + EXTRACT_START_TMS=$(date '+%s') + unzip "${ORACLE_BASE}"/"${ORACLE_SID}".zip -d "${ORACLE_BASE}"/oradata/ 1> /dev/null + EXTRACT_END_TMS=$(date '+%s') + EXTRACT_DURATION=$(( EXTRACT_END_TMS - EXTRACT_START_TMS )) + echo "CONTAINER: done uncompressing database data files, duration: ${EXTRACT_DURATION} seconds." + rm "${ORACLE_BASE}"/"${ORACLE_SID}".zip fi; mkdir -p "${ORACLE_BASE}/oradata/dbconfig/${ORACLE_SID}" diff --git a/install.11202.sh b/install.11202.sh index 4b9cb02..9cca3f1 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -272,6 +272,8 @@ EOF echo "BUILDER: compressing database data files" cd "${ORACLE_BASE}"/oradata zip -r "${ORACLE_SID}".zip "${ORACLE_SID}" +chown oracle:dba "${ORACLE_SID}".zip +mv "${ORACLE_SID}".zip "${ORACLE_BASE}"/ rm -r "${ORACLE_SID}" cd - 1> /dev/null diff --git a/install.1840.sh b/install.1840.sh index 9d8a68f..8adc193 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -354,6 +354,8 @@ EOF echo "BUILDER: compressing database data files" cd "${ORACLE_BASE}"/oradata zip -r "${ORACLE_SID}".zip "${ORACLE_SID}" +chown oracle:dba "${ORACLE_SID}".zip +mv "${ORACLE_SID}".zip "${ORACLE_BASE}"/ rm -r "${ORACLE_SID}" cd - 1> /dev/null From 9510e2d0ea6e2eee930b6dd062a8d6275ccf30b2 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 9 Apr 2021 21:42:21 -0700 Subject: [PATCH 059/192] Use SHRINK SPACE for TEMP files Signed-off-by: gvenzl --- install.11202.sh | 3 +-- install.1840.sh | 13 ++++++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 9cca3f1..e8c955b 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -32,7 +32,6 @@ echo "BUILDER: BUILD_MODE=${BUILD_MODE}" # Set data file sizes SYSTEM_SIZE=353 SYSAUX_SIZE=610 -TEMP_SIZE=2 UNDO_SIZE=155 if [ "${BUILD_MODE}" == "FULL" ]; then REDO_SIZE=50 @@ -225,7 +224,7 @@ EOF -- Shrink TEMP tablespace ------------------------- - ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp.dbf' RESIZE ${TEMP_SIZE}M; + ALTER TABLESPACE TEMP SHRINK SPACE; ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; diff --git a/install.1840.sh b/install.1840.sh index 8adc193..b8777b1 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -34,7 +34,6 @@ CDB_SYSAUX_SIZE=480 PDB_SYSAUX_SIZE=342 CDB_SYSTEM_SIZE=840 PDB_SYSTEM_SIZE=255 -TEMP_SIZE=2 CDB_UNDO_SIZE=70 PDB_UNDO_SIZE=48 if [ "${BUILD_MODE}" == "FULL" ]; then @@ -255,19 +254,18 @@ EOF -- Shrink TEMP tablespaces -------------------------- - ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp01.dbf' RESIZE ${TEMP_SIZE}M; + ALTER TABLESPACE TEMP SHRINK SPACE; ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp01.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; ALTER SESSION SET CONTAINER=PDB\$SEED; - -- Find and drop old TEMP file + + ALTER TABLESPACE TEMP SHRINK SPACE; + DECLARE v_tmp_file_name VARCHAR2(200); BEGIN SELECT name INTO v_tmp_file_name FROM v\$tempfile WHERE name LIKE '%/temp012%'; - -- TODO: shrink temp file to 2MB for PDB\$SEED - EXECUTE IMMEDIATE - 'ALTER DATABASE TEMPFILE ''' || v_tmp_file_name || ''' RESIZE 32M'; EXECUTE IMMEDIATE 'ALTER DATABASE TEMPFILE ''' || v_tmp_file_name || ''' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED'; --TODO: rename ugly TEMP file and resize @@ -276,7 +274,8 @@ EOF / ALTER SESSION SET CONTAINER=XEPDB1; - ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/temp01.dbf' RESIZE ${TEMP_SIZE}M; + + ALTER TABLESPACE TEMP SHRINK SPACE; ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/temp01.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; From 044d7f1f2ad3f7751c8d0f741fe8cece0aa6c6d8 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 9 Apr 2021 21:43:09 -0700 Subject: [PATCH 060/192] Exit SQL*Plus on SQL errors Signed-off-by: gvenzl --- install.11202.sh | 21 +++++++++++++++++++-- install.1840.sh | 14 ++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index e8c955b..890dd33 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -116,6 +116,10 @@ echo "BUILDER: post config database steps" # Perform further Database setup operations su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + -- Enable remote HTTP access EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE); @@ -161,6 +165,9 @@ rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo04.log if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then su -p oracle -c "sqlplus -s / as sysdba" << EOF + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + -- Disable password profile checks ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; @@ -180,8 +187,11 @@ EOF if [ "${BUILD_MODE}" == "SLIM" ]; then su -p oracle -c "sqlplus -s / as sysdba" << EOF - -- Remove XDB - SELECT '#TODO' FROM DUAL; + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + + -- Remove XDB + SELECT '#TODO' FROM DUAL; EOF # Spatial # Text @@ -191,6 +201,9 @@ EOF # Shrink datafiles su -p oracle -c "sqlplus -s / as sysdba" << EOF + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + --------------------------- -- Shrink SYSAUX tablespace --------------------------- @@ -259,6 +272,10 @@ echo "BUILDER: graceful database shutdown" # Shutdown database gracefully (listener is not yet running) su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + -- Shutdown database gracefully shutdown immediate; exit; diff --git a/install.1840.sh b/install.1840.sh index b8777b1..30b5b01 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -86,6 +86,10 @@ echo "BUILDER: post config database steps" # Perform further Database setup operations su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + -- Enable remote HTTP access EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE); @@ -144,6 +148,9 @@ EOF if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then su -p oracle -c "sqlplus -s / as sysdba" << EOF + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + -- Deactivate Intel's Math Kernel Libraries ALTER SYSTEM SET "_dmm_blas_library"='libora_netlib.so' SCOPE=SPFILE; @@ -193,6 +200,9 @@ EOF # Shrink datafiles su -p oracle -c "sqlplus -s / as sysdba" << EOF + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + -- Open PDB\$SEED in READ/WRITE mode ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; @@ -341,6 +351,10 @@ echo "BUILDER: graceful database shutdown" # Shutdown database gracefully (listener is not yet running) su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + -- Shutdown database gracefully shutdown immediate; exit; From cada4a778be16fbbb2988954ddc3e446f7f1b628 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 9 Apr 2021 23:33:30 -0700 Subject: [PATCH 061/192] Add tag and upload scripts Signed-off-by: gvenzl --- tests/all_tag_images.sh | 27 +++++++++++++++++++++ tests/tag_image_latest.sh | 26 +++++++++++++++++++++ tests/tag_images_11202.sh | 29 +++++++++++++++++++++++ tests/tag_images_1840.sh | 29 +++++++++++++++++++++++ tests/upload_images.sh | 49 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 160 insertions(+) create mode 100755 tests/all_tag_images.sh create mode 100755 tests/tag_image_latest.sh create mode 100755 tests/tag_images_11202.sh create mode 100755 tests/tag_images_1840.sh create mode 100755 tests/upload_images.sh diff --git a/tests/all_tag_images.sh b/tests/all_tag_images.sh new file mode 100755 index 0000000..e3c2fd7 --- /dev/null +++ b/tests/all_tag_images.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Since: March, 2021 +# Author: gvenzl +# Name: all_tag_images.sh +# Description: Tag all images +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +./tag_image_latest.sh +./tag_images_1840.sh +./tag_images_11202.sh diff --git a/tests/tag_image_latest.sh b/tests/tag_image_latest.sh new file mode 100755 index 0000000..54725e3 --- /dev/null +++ b/tests/tag_image_latest.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# Since: April, 2021 +# Author: gvenzl +# Name: tag_image_latest.sh +# Description: Tag the latest image +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +# Tag latest image +podman tag gvenzl/oracle-xe:18.4.0 gvenzl/oracle-xe:latest diff --git a/tests/tag_images_11202.sh b/tests/tag_images_11202.sh new file mode 100755 index 0000000..83f88ec --- /dev/null +++ b/tests/tag_images_11202.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# Since: April, 2021 +# Author: gvenzl +# Name: tag_images_11202.sh +# Description: Tag all 11g images +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +# Tag 11g images + +podman tag gvenzl/oracle-xe:11.2.0.2-full gvenzl/oracle-xe:11-full +podman tag gvenzl/oracle-xe:11.2.0.2 gvenzl/oracle-xe:11 +podman tag gvenzl/oracle-xe:11.2.0.2-slim gvenzl/oracle-xe:11-slim diff --git a/tests/tag_images_1840.sh b/tests/tag_images_1840.sh new file mode 100755 index 0000000..2d66032 --- /dev/null +++ b/tests/tag_images_1840.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# Since: April, 2021 +# Author: gvenzl +# Name: tag_images_1840.sh +# Description: Tag all 18c images +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +# Tag 18c images +podman tag gvenzl/oracle-xe:18.4.0-full gvenzl/oracle-xe:18-full +podman tag gvenzl/oracle-xe:18.4.0-full gvenzl/oracle-xe:full + +podman tag gvenzl/oracle-xe:18.4.0 gvenzl/oracle-xe:18 diff --git a/tests/upload_images.sh b/tests/upload_images.sh new file mode 100755 index 0000000..ac2e297 --- /dev/null +++ b/tests/upload_images.sh @@ -0,0 +1,49 @@ +#!/bin/bash +# Since: April, 2021 +# Author: gvenzl +# Name: upload_images.sh +# Description: Upload images to registry +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +# Ensure all tags are in place +./all_tag_images.sh + +# Upload images +echo "Login to Docker Hub:" +podman login + +# Upload latest +podman push gvenzl/oracle-xe:latest + +# Upload 18c images +podman push gvenzl/oracle-xe:18.4.0-full +podman push gvenzl/oracle-xe:18-full +podman push gvenzl/oracle-xe:full + +podman push gvenzl/oracle-xe:18.4.0 +podman push gvenzl/oracle-xe:18 + +# Upload 11g images +podman push gvenzl/oracle-xe:11.2.0.2-full +podman push gvenzl/oracle-xe:11-full +podman push gvenzl/oracle-xe:11.2.0.2 +podman push gvenzl/oracle-xe:11 +podman push gvenzl/oracle-xe:11.2.0.2-slim +podman push gvenzl/oracle-xe:11-slim From 67a4d57bbdcad1a6f63349844446cff00c00732a Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 11 Apr 2021 22:33:36 -0700 Subject: [PATCH 062/192] Remove XDB Signed-off-by: gvenzl --- install.11202.sh | 117 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 111 insertions(+), 6 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 890dd33..b9784d6 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -171,12 +171,16 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then -- Disable password profile checks ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; - -- Remove APEX + --------------------------- + ------- Remove APEX ------- + --------------------------- @${ORACLE_HOME}/apex/apxremov.sql DROP PUBLIC SYNONYM HTMLDB_SYSTEM; DROP PACKAGE HTMLDB_SYSTEM; - -- Remove HR schema + --------------------------- + ---- Remove HR schema ----- + --------------------------- DROP USER HR cascade; exit; @@ -187,11 +191,112 @@ EOF if [ "${BUILD_MODE}" == "SLIM" ]; then su -p oracle -c "sqlplus -s / as sysdba" << EOF - -- Exit on any errors - WHENEVER SQLERROR EXIT SQL.SQLCODE + -- Do not exit on error because of expected error in catmet2.sql + -- WHENEVER SQLERROR EXIT SQL.SQLCODE + + shutdown immediate; + startup upgrade; + + --------------------------- + ------- Remove XDB -------- + --------------------------- + + + -- Remove XS components manually + drop index xdb.sc_xidx; + drop index xdb.prin_xidx; + drop public synonym XS$CACHE_DELETE; + drop public synonym XS$CACHE_ACTIONS; + drop public synonym DBA_NETWORK_ACLS; + drop public synonym DBA_NETWORK_ACL_PRIVILEGES; + drop public synonym DBA_WALLET_ACLS; + drop public synonym DBA_XDS_OBJECTS; + drop public synonym ALL_XDS_OBJECTS; + drop public synonym USER_XDS_OBJECTS; + drop public synonym DBA_XDS_INSTANCE_SETS; + drop public synonym ALL_XDS_INSTANCE_SETS; + drop public synonym USER_XDS_INSTANCE_SETS; + drop public synonym DBA_XDS_ATTRIBUTE_SECS; + drop public synonym ALL_XDS_ATTRIBUTE_SECS; + drop public synonym USER_XDS_ATTRIBUTE_SECS; + drop public synonym DOCUMENT_LINKS2; + drop public synonym ALL_XSC_SECURITY_CLASS; + drop public synonym ALL_XSC_SECURITY_CLASS_STATUS; + drop public synonym ALL_XSC_SECURITY_CLASS_DEP; + drop public synonym ALL_XSC_PRIVILEGE; + drop public synonym ALL_XSC_AGGREGATE_PRIVILEGE; + drop public synonym XS_SESSION_ROLES; + drop public synonym V$XS_SESSION; + drop public synonym V$XS_SESSION_ROLE; + drop public synonym V$XS_SESSION_ATTRIBUTE; + drop public synonym USER_NETWORK_ACL_PRIVILEGES; + drop public synonym dbms_network_acl_utility; + drop public synonym dbms_network_acl_admin; + drop public synonym DBMS_XS_MTCACHE; + drop public synonym DBMS_XS_UTIL; + drop view DBA_NETWORK_ACLS; + drop view DBA_NETWORK_ACL_PRIVILEGES; + drop view DBA_WALLET_ACLS; + drop view DBA_XDS_OBJECTS; + drop view ALL_XDS_OBJECTS; + drop view USER_XDS_OBJECTS; + drop view DBA_XDS_INSTANCE_SETS; + drop view ALL_XDS_INSTANCE_SETS; + drop view USER_XDS_INSTANCE_SETS; + drop view DBA_XDS_ATTRIBUTE_SECS; + drop view ALL_XDS_ATTRIBUTE_SECS; + drop view USER_XDS_ATTRIBUTE_SECS; + drop view XDB.DOCUMENT_LINKS2; + drop view ALL_XSC_SECURITY_CLASS; + drop view ALL_XSC_SECURITY_CLASS_STATUS; + drop view ALL_XSC_SECURITY_CLASS_DEP; + drop view ALL_XSC_PRIVILEGE; + drop view ALL_XSC_AGGREGATE_PRIVILEGE; + drop view V$XS_SESSION; + drop view V$XS_SESSION_ROLE; + drop view V$XS_SESSION_ATTRIBUTE; + drop view USER_NETWORK_ACL_PRIVILEGES; + drop table XDB.XS$CACHE_ACTIONS; + drop table XDB.XS$CACHE_DELETE; + drop table NET$_ACL; + drop table WALLET$_ACL; + drop package XS$CATVIEW_UTIL; + drop package DBMS_XS_PRINCIPALS; + drop package DBMS_XS_PRINCIPALS_INT; + drop package DBMS_XS_ROLESET_EVENTS_INT; + drop package DBMS_XS_PRINCIPAL_EVENTS_INT; + drop package DBMS_XS_DATA_SECURITY_EVENTS; + drop package DBMS_XS_SECCLASS_EVENTS; + drop package DBMS_XS_MTCACHE; + drop package DBMS_XS_MTCACHE_FFI; + drop package XS_UTIL; + drop package dbms_network_acl_admin; + drop package dbms_network_acl_utility; + drop user XS$NULL cascade; + + @${ORACLE_HOME}/rdbms/admin/catnoqm.sql + + -- Update Data Pump and related objects and KU$_ views + @${ORACLE_HOME}/rdbms/admin/catxdbdv.sql + @${ORACLE_HOME}/rdbms/admin/dbmsmeta.sql + @${ORACLE_HOME}/rdbms/admin/dbmsmeti.sql + @${ORACLE_HOME}/rdbms/admin/dbmsmetu.sql + @${ORACLE_HOME}/rdbms/admin/dbmsmetb.sql + @${ORACLE_HOME}/rdbms/admin/dbmsmetd.sql + @${ORACLE_HOME}/rdbms/admin/dbmsmet2.sql + @${ORACLE_HOME}/rdbms/admin/catmeta.sql + @${ORACLE_HOME}/rdbms/admin/prvtmeta.plb + @${ORACLE_HOME}/rdbms/admin/prvtmeti.plb + @${ORACLE_HOME}/rdbms/admin/prvtmetu.plb + @${ORACLE_HOME}/rdbms/admin/prvtmetb.plb + @${ORACLE_HOME}/rdbms/admin/prvtmetd.plb + @${ORACLE_HOME}/rdbms/admin/prvtmet2.plb + @${ORACLE_HOME}/rdbms/admin/catmet2.sql + + -- Restart DB in normal mode + shutdown immediate; + startup; - -- Remove XDB - SELECT '#TODO' FROM DUAL; EOF # Spatial # Text From a172e7a57a471423a5ebcbb1b89b9938cd985c67 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 11 Apr 2021 22:38:34 -0700 Subject: [PATCH 063/192] Remove Oracle Text Signed-off-by: gvenzl --- install.11202.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index b9784d6..390d334 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -293,14 +293,18 @@ EOF @${ORACLE_HOME}/rdbms/admin/prvtmet2.plb @${ORACLE_HOME}/rdbms/admin/catmet2.sql + --------------------------- + ------- Remove Text ------- + --------------------------- + @${ORACLE_HOME}/ctx/admin/catnoctx.sql + drop procedure sys.validate_context; + -- Restart DB in normal mode shutdown immediate; startup; EOF # Spatial - # Text - # XDB fi; # Shrink datafiles @@ -520,7 +524,7 @@ rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/lck/* rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/metadata/* rm -r "${ORACLE_BASE}"/oradiag_oracle/* -# Remove additional files for NOMRAL and SLIM builds +# Remove additional files for REGULAR and SLIM builds if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove APEX directory @@ -536,6 +540,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove components from ORACLE_HOME if [ "${BUILD_MODE}" == "SLIM" ]; then + # Remove Oracle Text directory + rm -f "${ORACLE_HOME}"/ctx + # Remove demo directory rm -r "${ORACLE_HOME}"/demo From 5b5f7fe6f208d99d8150b30e3910d0926045238e Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 11 Apr 2021 22:52:33 -0700 Subject: [PATCH 064/192] Remove Spatial Signed-off-by: gvenzl --- install.11202.sh | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 390d334..f7b917d 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -201,7 +201,6 @@ EOF ------- Remove XDB -------- --------------------------- - -- Remove XS components manually drop index xdb.sc_xidx; drop index xdb.prin_xidx; @@ -299,12 +298,32 @@ EOF @${ORACLE_HOME}/ctx/admin/catnoctx.sql drop procedure sys.validate_context; + --------------------------- + ----- Remove Spatial ------ + --------------------------- + -- Drop Spatial user + DROP USER MDSYS CASCADE; + + -- Drop all public synonyms related to spatial + BEGIN + FOR cur IN (SELECT 'drop public synonym "' || synonym_name || '"' AS cmd + FROM dba_synonyms WHERE table_owner = 'MDSYS') + LOOP + EXECUTE IMMEDIATE cur.cmd; + END LOOP; + END; + / + + --------------------------- + --- Recompile database ---- + --------------------------- + @${ORACLE_HOME}/rdbms/admin/utlrp.sql + -- Restart DB in normal mode shutdown immediate; startup; EOF - # Spatial fi; # Shrink datafiles From 1ffeaf899f5c313d566008e4ac3d8ffd462923cd Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 11 Apr 2021 23:15:26 -0700 Subject: [PATCH 065/192] Escape $ signs Signed-off-by: gvenzl --- install.11202.sh | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index f7b917d..b7cc6ad 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -204,8 +204,8 @@ EOF -- Remove XS components manually drop index xdb.sc_xidx; drop index xdb.prin_xidx; - drop public synonym XS$CACHE_DELETE; - drop public synonym XS$CACHE_ACTIONS; + drop public synonym XS\$CACHE_DELETE; + drop public synonym XS\$CACHE_ACTIONS; drop public synonym DBA_NETWORK_ACLS; drop public synonym DBA_NETWORK_ACL_PRIVILEGES; drop public synonym DBA_WALLET_ACLS; @@ -225,9 +225,9 @@ EOF drop public synonym ALL_XSC_PRIVILEGE; drop public synonym ALL_XSC_AGGREGATE_PRIVILEGE; drop public synonym XS_SESSION_ROLES; - drop public synonym V$XS_SESSION; - drop public synonym V$XS_SESSION_ROLE; - drop public synonym V$XS_SESSION_ATTRIBUTE; + drop public synonym V\$XS_SESSION; + drop public synonym V\$XS_SESSION_ROLE; + drop public synonym V\$XS_SESSION_ATTRIBUTE; drop public synonym USER_NETWORK_ACL_PRIVILEGES; drop public synonym dbms_network_acl_utility; drop public synonym dbms_network_acl_admin; @@ -251,15 +251,15 @@ EOF drop view ALL_XSC_SECURITY_CLASS_DEP; drop view ALL_XSC_PRIVILEGE; drop view ALL_XSC_AGGREGATE_PRIVILEGE; - drop view V$XS_SESSION; - drop view V$XS_SESSION_ROLE; - drop view V$XS_SESSION_ATTRIBUTE; + drop view V\$XS_SESSION; + drop view V\$XS_SESSION_ROLE; + drop view V\$XS_SESSION_ATTRIBUTE; drop view USER_NETWORK_ACL_PRIVILEGES; - drop table XDB.XS$CACHE_ACTIONS; - drop table XDB.XS$CACHE_DELETE; - drop table NET$_ACL; - drop table WALLET$_ACL; - drop package XS$CATVIEW_UTIL; + drop table XDB.XS\$CACHE_ACTIONS; + drop table XDB.XS\$CACHE_DELETE; + drop table NET\$_ACL; + drop table WALLET\$_ACL; + drop package XS\$CATVIEW_UTIL; drop package DBMS_XS_PRINCIPALS; drop package DBMS_XS_PRINCIPALS_INT; drop package DBMS_XS_ROLESET_EVENTS_INT; @@ -271,7 +271,7 @@ EOF drop package XS_UTIL; drop package dbms_network_acl_admin; drop package dbms_network_acl_utility; - drop user XS$NULL cascade; + drop user XS\$NULL cascade; @${ORACLE_HOME}/rdbms/admin/catnoqm.sql @@ -571,6 +571,8 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove NLS demo rm -r "${ORACLE_HOME}"/nls/demo + #TODO + fi; fi; From 9ef8dc2f65796942a002a9a34bebd28a062d1d5a Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 23 Apr 2021 21:54:15 -0700 Subject: [PATCH 066/192] Fix rm ctx typo Signed-off-by: gvenzl --- install.11202.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.11202.sh b/install.11202.sh index b7cc6ad..6c21d42 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -560,7 +560,7 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then if [ "${BUILD_MODE}" == "SLIM" ]; then # Remove Oracle Text directory - rm -f "${ORACLE_HOME}"/ctx + rm -r "${ORACLE_HOME}"/ctx # Remove demo directory rm -r "${ORACLE_HOME}"/demo From cf67673c0ad78ef8ffc7930bb1f608a3be01f15a Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 23 Apr 2021 21:55:22 -0700 Subject: [PATCH 067/192] Create new TEMP tablespace for SEED Signed-off-by: gvenzl --- install.1840.sh | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/install.1840.sh b/install.1840.sh index 30b5b01..16f14f2 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -268,22 +268,27 @@ EOF ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp01.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + -------------------------------------- ALTER SESSION SET CONTAINER=PDB\$SEED; + -------------------------------------- - ALTER TABLESPACE TEMP SHRINK SPACE; + CREATE TEMPORARY TABLESPACE TEMP_TMP TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/temp_tmp.dbf' + SIZE 2M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP_TMP; + + DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES; + + CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/temp01.dbf' + SIZE 2M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; - DECLARE - v_tmp_file_name VARCHAR2(200); - BEGIN - SELECT name INTO v_tmp_file_name FROM v\$tempfile WHERE name LIKE '%/temp012%'; - EXECUTE IMMEDIATE - 'ALTER DATABASE TEMPFILE ''' || v_tmp_file_name || ''' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED'; - --TODO: rename ugly TEMP file and resize + ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP; - END; - / + DROP TABLESPACE TEMP_TMP INCLUDING CONTENTS AND DATAFILES; + ----------------------------------- ALTER SESSION SET CONTAINER=XEPDB1; + ----------------------------------- ALTER TABLESPACE TEMP SHRINK SPACE; ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/temp01.dbf' From db4650b00031733b3f5d789097e77e3184bb0fde Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 23 Apr 2021 21:56:20 -0700 Subject: [PATCH 068/192] Shrink UNDO tablespaces Signed-off-by: gvenzl --- install.11202.sh | 23 ++++++++++++--- install.1840.sh | 76 +++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 81 insertions(+), 18 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 6c21d42..2a39d71 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -32,7 +32,6 @@ echo "BUILDER: BUILD_MODE=${BUILD_MODE}" # Set data file sizes SYSTEM_SIZE=353 SYSAUX_SIZE=610 -UNDO_SIZE=155 if [ "${BUILD_MODE}" == "FULL" ]; then REDO_SIZE=50 elif [ "${BUILD_MODE}" == "REGULAR" ]; then @@ -381,9 +380,25 @@ EOF -- Shrink UNDO tablespace ------------------------- - ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs1.dbf' RESIZE ${UNDO_SIZE}M; - ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs1.dbf' - AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + -- Create new temporary UNDO tablespace + CREATE UNDO TABLESPACE UNDO_TMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs_tmp.dbf' + SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -- Use new temporary UNDO tablespace (so that old one can be deleted) + ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP'; + + -- Delete old UNDO tablespace + DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES; + + -- Recreate old UNDO tablespace with 1M size and AUTOEXTEND + CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs1.dbf' + SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -- Use newly created UNDO tablespace + ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'; + + -- Drop temporary UNDO tablespace + DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; exit; EOF diff --git a/install.1840.sh b/install.1840.sh index 16f14f2..2691068 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -34,8 +34,6 @@ CDB_SYSAUX_SIZE=480 PDB_SYSAUX_SIZE=342 CDB_SYSTEM_SIZE=840 PDB_SYSTEM_SIZE=255 -CDB_UNDO_SIZE=70 -PDB_UNDO_SIZE=48 if [ "${BUILD_MODE}" == "FULL" ]; then REDO_SIZE=50 elif [ "${BUILD_MODE}" == "REGULAR" ]; then @@ -315,23 +313,73 @@ EOF -- Shrink UNDO tablespaces ---------------------------- - -- TODO: Try to further decrease UNDO sizes - ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs01.dbf' RESIZE ${CDB_UNDO_SIZE}M; - ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs01.dbf' - AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + -- Create new temporary UNDO tablespace + CREATE UNDO TABLESPACE UNDO_TMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs_tmp.dbf' + SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -- Use new temporary UNDO tablespace (so that old one can be deleted) + ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP'; + + -- Delete old UNDO tablespace + DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES; + + -- Recreate old UNDO tablespace with 1M size and AUTOEXTEND + CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs01.dbf' + SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -- Use newly created UNDO tablespace + ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'; + + -- Drop temporary UNDO tablespace + DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; + -------------------------------------- ALTER SESSION SET CONTAINER=PDB\$SEED; - ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/undotbs01.dbf' RESIZE ${PDB_UNDO_SIZE}M; - ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/undotbs01.dbf' - AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + -------------------------------------- + + -- Create new temporary UNDO tablespace + CREATE UNDO TABLESPACE UNDO_TMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/undotbs_tmp.dbf' + SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -- Use new temporary UNDO tablespace (so that old one can be deleted) + ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP'; + + -- Delete old UNDO tablespace + DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES; + -- Recreate old UNDO tablespace with 1M size and AUTOEXTEND + CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/undotbs01.dbf' + SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -- Use newly created UNDO tablespace + ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'; + + -- Drop temporary UNDO tablespace + DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; + + ----------------------------------- ALTER SESSION SET CONTAINER=XEPDB1; - -- PDB UNDO cannot go smaller (not sure yet why, TODO) - ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/undotbs01.dbf' RESIZE ${CDB_UNDO_SIZE}M; - ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/undotbs01.dbf' - AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + ----------------------------------- - ALTER SESSION SET CONTAINER=CDB\$ROOT; + -- Create new temporary UNDO tablespace + CREATE UNDO TABLESPACE UNDO_TMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/undotbs_tmp.dbf' + SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -- Use new temporary UNDO tablespace (so that old one can be deleted) + ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP'; + + -- Delete old UNDO tablespace + DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES; + + -- Recreate old UNDO tablespace with 1M size and AUTOEXTEND + CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/undotbs01.dbf' + SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -- Use newly created UNDO tablespace + ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'; + + -- Drop temporary UNDO tablespace + DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; ------------------------------ -- Complete actions and finish From 2dee2bce05e878f3f07a76e371cc90834b7530c2 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 23 Apr 2021 22:28:44 -0700 Subject: [PATCH 069/192] Intro Artifactory uploads Signed-off-by: gvenzl --- tests/upload_images_artifactory.sh | 58 ++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 tests/upload_images_artifactory.sh diff --git a/tests/upload_images_artifactory.sh b/tests/upload_images_artifactory.sh new file mode 100755 index 0000000..3fd2d5c --- /dev/null +++ b/tests/upload_images_artifactory.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# Since: April, 2021 +# Author: gvenzl +# Name: upload_images_artifactory.sh +# Description: Upload images to Artifactory +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +# Upload images +echo "Login to Artifactory:" +podman login gvenzl.jfrog.io + +# Upload latest +echo "Upload latest" +podman push gvenzl/oracle-xe:latest gvenzl.jfrog.io/docker/oracle-xe:latest + +# Upload 18c images +echo "Upload 18.4.0-full" +podman push gvenzl/oracle-xe:18.4.0-full gvenzl.jfrog.io/docker/oracle-xe:18.4.0-full +echo "Upload 18-full" +podman push gvenzl/oracle-xe:18-full gvenzl.jfrog.io/docker/oracle-xe:18-full +echo "Upload full" +podman push gvenzl/oracle-xe:full gvenzl.jfrog.io/docker/oracle-xe:full + +echo "Upload 18.4.0" +podman push gvenzl/oracle-xe:18.4.0 gvenzl.jfrog.io/docker/oracle-xe:18.4.0 +echo "Upload 18" +podman push gvenzl/oracle-xe:18 gvenzl.jfrog.io/docker/oracle-xe:18 + +# Upload 11g images +echo "Upload 11.2.0.2-full" +podman push gvenzl/oracle-xe:11.2.0.2-full gvenzl.jfrog.io/docker/oracle-xe:11.2.0.2-full +echo "Upload 11-full" +podman push gvenzl/oracle-xe:11-full gvenzl.jfrog.io/docker/oracle-xe:11-full +echo "Upload 11.2.0.2" +podman push gvenzl/oracle-xe:11.2.0.2 gvenzl.jfrog.io/docker/oracle-xe:11.2.0.2 +echo "Upload 11" +podman push gvenzl/oracle-xe:11 gvenzl.jfrog.io/docker/oracle-xe:11 +echo "Upload 11.2.0.2-slim" +podman push gvenzl/oracle-xe:11.2.0.2-slim gvenzl.jfrog.io/docker/oracle-xe:11.2.0.2-slim +echo "Upload 11-slim" +podman push gvenzl/oracle-xe:11-slim gvenzl.jfrog.io/docker/oracle-xe:11-slim From 97a4bb60ce18a54f5aab3faad8ec3687f85117d7 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 23 Apr 2021 23:19:18 -0700 Subject: [PATCH 070/192] Add fully qualified tags Signed-off-by: gvenzl --- tests/upload_images.sh | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/tests/upload_images.sh b/tests/upload_images.sh index ac2e297..1337903 100755 --- a/tests/upload_images.sh +++ b/tests/upload_images.sh @@ -30,20 +30,32 @@ echo "Login to Docker Hub:" podman login # Upload latest -podman push gvenzl/oracle-xe:latest +echo "Upload latest" +podman push gvenzl/oracle-xe:latest docker.io/gvenzl/oracle-xe:latest # Upload 18c images -podman push gvenzl/oracle-xe:18.4.0-full -podman push gvenzl/oracle-xe:18-full -podman push gvenzl/oracle-xe:full +echo "Upload 18.4.0-full" +podman push gvenzl/oracle-xe:18.4.0-full docker.io/gvenzl/oracle-xe:18.4.0-full +echo "Upload 18-full" +podman push gvenzl/oracle-xe:18-full docker.io/gvenzl/oracle-xe:18-full +echo "Upload full" +podman push gvenzl/oracle-xe:full docker.io/gvenzl/oracle-xe:full -podman push gvenzl/oracle-xe:18.4.0 -podman push gvenzl/oracle-xe:18 +echo "Upload 18.4.0" +podman push gvenzl/oracle-xe:18.4.0 docker.io/gvenzl/oracle-xe:18.4.0 +echo "Upload 18" +podman push gvenzl/oracle-xe:18 docker.io/gvenzl/oracle-xe:18 # Upload 11g images -podman push gvenzl/oracle-xe:11.2.0.2-full -podman push gvenzl/oracle-xe:11-full -podman push gvenzl/oracle-xe:11.2.0.2 -podman push gvenzl/oracle-xe:11 -podman push gvenzl/oracle-xe:11.2.0.2-slim -podman push gvenzl/oracle-xe:11-slim +echo "Upload 11.2.0.2-full" +podman push gvenzl/oracle-xe:11.2.0.2-full docker.io/gvenzl/oracle-xe:11.2.0.2-full +echo "Upload 11-full" +podman push gvenzl/oracle-xe:11-full docker.io/gvenzl/oracle-xe:11-full +echo "Upload 11.2.0.2" +podman push gvenzl/oracle-xe:11.2.0.2 docker.io/gvenzl/oracle-xe:11.2.0.2 +echo "Upload 11" +podman push gvenzl/oracle-xe:11 docker.io/gvenzl/oracle-xe:11 +echo "Upload 11.2.0.2-slim" +podman push gvenzl/oracle-xe:11.2.0.2-slim docker.io/gvenzl/oracle-xe:11.2.0.2-slim +echo "Upload 11-slim" +podman push gvenzl/oracle-xe:11-slim docker.io/gvenzl/oracle-xe:11-slim From 01e4f84ada7ee960782929ee6a5941a701125460 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 25 Apr 2021 10:44:15 -0700 Subject: [PATCH 071/192] Update ReadMe Signed-off-by: gvenzl --- README.md | 86 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 53 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 09fce32..ca19fcc 100644 --- a/README.md +++ b/README.md @@ -31,12 +31,6 @@ Run a new persistent **11g R2** database container: docker run -d -p 1521:1521 -e ORACLE_PASSWORD= -v oracle-volume:/u01/app/oracle/oradata gvenzl/oracle-xe:11 ``` -Run a new database container with OEM Express exposed: - -```shell -docker run -d -p 1521:1521 -e ORACLE_PASSWORD= -p 5500:5500 gvenzl/oracle-xe -``` - Reset database `SYS` and `SYSTEM` passwords: ```shell @@ -221,54 +215,80 @@ The execution order and implications are the same as with the [Initialization sc ## Full image flavor The full image provides an Oracle Database XE installation "as is", meaning as provided by the RPM install file. -A couple of modifications have been performed to make the installation more suitable for running inside a container: +A couple of modifications have been performed to make the installation more suitable for running inside a container. + +### `18-full` * `DBMS_XDB.SETLISTENERLOCALACCESS()` has been set to `FALSE` * An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) - -### 18c specific - * `LOCAL_LISTENER` is set to `NULL` (18c) * `COMMON_USER_PREFIX` is set to `NULL` (18c) -### 11g R2 specific +### `11-full` +* `DBMS_XDB.SETLISTENERLOCALACCESS()` has been set to `FALSE` +* An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) * The `REDO` logs have been located into `$ORACLE_BASE/oradata/$ORACLE_SID/` (11gR2 image) -* The fast recovery area has been removed (11gR2 images) +* The fast recovery area has been removed ## Regular image flavor The regular image has all customizations that the full image has. Additionally, it also includes the following changes: -### Database components -* Oracle APEX has been removed (you can download and install the latest and greatest from [apex.oracle.com](https://apex.oracle.com), 11gR2 image) -* The `HR` schema and folder have been removed -* The JDBC drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`, `$ORACLE_HOME/ucp`) -* The Oracle Database Assistants have been removed (`$ORACLE_HOME/assistants`) -* The Oracle Database Migration Assistant for Unicode has been removed (`$ORACLE_HOME/dmu`) -* The OPatch utility has been removed (`$ORACLE_HOME/OPatch`) -* The QOpatch utility has been removed (`$ORACLE_HOME/QOpatch`) +### `18` -### Operating system +#### Database components -* The following Linux packages are not installed: `binutils`, `gcc`, `glibc`, `make` (11g R2) +* The `HR` schema has been removed +* `OPatch` utility has been removed (`$ORACLE_HOME/OPatch`) +* `QOpatch` utility has been removed (`$ORACLE_HOME/QOpatch`) +* `Oracle Database Assistants` have been removed (`$ORACLE_HOME/assistants`) +* `Oracle Database Migration Assistant for Unicode` has been removed (`$ORACLE_HOME/dmu`) +* The `inventory` directory has been removed (`$ORACLE_HOME/inventory`) +* `JDBC` drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`) +* `Universal Connection Pool` driver has been removed (`$ORACLE_HOME/ucp`) +* Intel Math Kernel libraries have been removed (`${ORACLE_HOME}/lib/libmkl_*`) +* Other utilities have been removed (`${ORACLE_HOME}/lib/*.zip`) +#### Database settings -### Data files +* The `DEFAULT` profile has the following set: + * `FAILED_LOGIN_ATTEMPTS=UNLIMITED` + * `PASSWORD_LIFE_TIME=UNLIMITED` + +#### Operating system + +* The following Linux packages are not installed: + * `glibc-devel` + * `glibc-headers` + * `kernel-headers` + * `libpkgconf` + * `libxcrypt-devel` + * `pkgconf` + * `pkgconf-m4` + * `pkgconf-pkg-config` + +### `11` -| Tablespace | 18c Size | 11g Size | Autoextend | Max size | -| ---------- | --------:| -------: | ---------: | ----------- | -| `REDO` | 20 MB | 20 MB | `N/A` | `N/A` | -| `SYSAUX` | 480 MB (CDB)
342 MB (PDB) | 610 MB | 10 MB | `UNLIMITED` | -| `SYSTEM` | 353 MB (CDB)
255 MB (PDB) | 353 MB | 10 MB | `UNLIMITED` | -| `TEMP` | 2 MB (CDB)
2 MB (PDB) | 2 MB | 10 MB | `UNLIMITED` | -| `UNDO` | 70 MB (CDB)
40 MB (PDB) | 10 MB | 10 MB | `UNLIMITED` | -| `USERS` | 10 MB | 10 MB | 10 MB | `UNLIMITED` | +#### Database components -### Others +* Oracle APEX has been removed (you can download and install the latest and greatest from [apex.oracle.com](https://apex.oracle.com) +* The `HR` schema has been removed +* The JDBC drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`) +* The ODBC driver has been removed (`$ORACLE_HOME/odbc`) + +#### Database settings * The `DEFAULT` profile has the following set: * `FAILED_LOGIN_ATTEMPTS=UNLIMITED` * `PASSWORD_LIFE_TIME=UNLIMITED` -* The Intel Math kernel libraries have been removed \ No newline at end of file + +#### Operating system + +* The following Linux packages are not installed: + * `binutils` + * `gcc` + * `glibc` + * `make` + From 5089b8f63bed1c95c427ebff48c5396c01475d48 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 25 Apr 2021 11:38:51 -0700 Subject: [PATCH 072/192] Undo retention no longer required Signed-off-by: gvenzl --- install.1840.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/install.1840.sh b/install.1840.sh index 2691068..0f53cd0 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -125,8 +125,6 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Remove local_listener entry (using default 1521) ALTER SYSTEM SET LOCAL_LISTENER=''; - --TODO; SET UNDO_RETENTION - -- Reboot of DB SHUTDOWN IMMEDIATE; STARTUP; @@ -150,6 +148,7 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then WHENEVER SQLERROR EXIT SQL.SQLCODE -- Deactivate Intel's Math Kernel Libraries + -- Like with every underscore parameter, DO NOT SET THIS PARAMETER EVER UNLESS YOU KNOW WHAT THE HECK YOU ARE DOING! ALTER SYSTEM SET "_dmm_blas_library"='libora_netlib.so' SCOPE=SPFILE; --------- From 6a5c2b5994d50b36467cb9986a63020c183981b9 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 25 Apr 2021 11:53:00 -0700 Subject: [PATCH 073/192] Further reduce 11g slim image Signed-off-by: gvenzl --- README.md | 70 ++++++++++++++++++++++++++++++++++-------------- install.11202.sh | 39 ++++++++++++++++++++++++--- 2 files changed, 85 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index ca19fcc..b8ffdc7 100644 --- a/README.md +++ b/README.md @@ -212,31 +212,23 @@ The execution order and implications are the same as with the [Initialization sc | Regular | [None] | A well-balanced image between image size and functionality. Recommended for most use cases. | Recommended for most use cases. | | Full | `-full` | An image containing all functionality as provided by the Oracle Database installation. | Best for extensions and/or customizations. | -## Full image flavor +## 18c XE + +### Full image flavor (`18-full`) The full image provides an Oracle Database XE installation "as is", meaning as provided by the RPM install file. A couple of modifications have been performed to make the installation more suitable for running inside a container. -### `18-full` - -* `DBMS_XDB.SETLISTENERLOCALACCESS()` has been set to `FALSE` -* An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) -* `LOCAL_LISTENER` is set to `NULL` (18c) -* `COMMON_USER_PREFIX` is set to `NULL` (18c) - -### `11-full` +#### Database settings -* `DBMS_XDB.SETLISTENERLOCALACCESS()` has been set to `FALSE` +* `DBMS_XDB.SETLISTENERLOCALACCESS(FALSE)` * An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) -* The `REDO` logs have been located into `$ORACLE_BASE/oradata/$ORACLE_SID/` (11gR2 image) -* The fast recovery area has been removed - -## Regular image flavor +* `LOCAL_LISTENER=''` +* `COMMON_USER_PREFIX=''` -The regular image has all customizations that the full image has. -Additionally, it also includes the following changes: +### Regular image flavor (`18`) -### `18` +The regular image strives to balance between the functionality required by most users and image size. It has all customizations that the full image has and removes additional components to further decrease the image size: #### Database components @@ -269,14 +261,30 @@ Additionally, it also includes the following changes: * `pkgconf-m4` * `pkgconf-pkg-config` -### `11` +## 11g XE + +### Full image flavor (`11-full`) + +The full image provides an Oracle Database XE installation "as is", meaning as provided by the RPM install file. +A couple of modifications have been performed to make the installation more suitable for running inside a container. + +#### Database settings + +* Automatic Memory Management has been disables (`MEMORY_TARGET`) +* `DBMS_XDB.SETLISTENERLOCALACCESS()` has been set to `FALSE` +* An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) +* The `REDO` logs have been located into `$ORACLE_BASE/oradata/$ORACLE_SID/` +* The fast recovery area has been removed (`DB_RECOVERY_FILE_DEST=''`) + +### Regular image flavor (`11`) + +The regular image strives to balance between the functionality required by most users and image size. It has all customizations that the full image has and removes additional components to further decrease the image size: #### Database components * Oracle APEX has been removed (you can download and install the latest and greatest from [apex.oracle.com](https://apex.oracle.com) * The `HR` schema has been removed -* The JDBC drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`) -* The ODBC driver has been removed (`$ORACLE_HOME/odbc`) +* `JDBC` drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`) #### Database settings @@ -292,3 +300,25 @@ Additionally, it also includes the following changes: * `glibc` * `make` +### Slim image flavor (`11-slim`) + +The slim images aims for smallest possible image size with only the Oracle Database relational components. It has all customizations that the regular image has and removes all non-relational components (where possible) to further decrease the image size: + +#### Database components + +* `Oracle Text` has been uninstalled and removed (`$ORACLE_HOME/ctx`) +* `XML DB` has been uninstalled +* `XDK` has been removed (`$ORACLE_HOME/xdk`) +* `Oracle Spatial` has been uninstalled and removed (`$ORACLE_HOME/md`) +* The demo samples directory has been removed (`$ORACLE_HOME/demo`) +* `ODBC` driver samples have been removed (`$ORACLE_HOME/odbc`) +* `TNS` demo samples have been removed (`$ORACLE_HOME/network/admin/samples`) +* `NLS` demo samples have been removed (`$ORACLE_HOME/nls/demo`) +* The hs directory has been removed (`$ORACLE_HOME/hs`) +* The ldap directory has been removed (`$ORACLE_HOME/ldap`) +* The precomp directory has been removed (`$ORACLE_HOME/precomp`) +* The slax directory has been removed (`$ORACLE_HOME/slax`) +* The rdbms/demo directory has been removed (`$ORACLE_HOME/rdbms/demo`) +* The rdbms/jlib directory has been removed (`$ORACLE_HOME/rdbms/jlib`) +* The rdbms/public directory has been removed (`$ORACLE_HOME/rdbms/public`) +* The rdbms/xml directory has been removed (`$ORACLE_HOME/rdbms/xml`) diff --git a/install.11202.sh b/install.11202.sh index 2a39d71..31b6684 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -272,6 +272,7 @@ EOF drop package dbms_network_acl_utility; drop user XS\$NULL cascade; + -- XDB removal script @${ORACLE_HOME}/rdbms/admin/catnoqm.sql -- Update Data Pump and related objects and KU$_ views @@ -568,25 +569,55 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then rm -r "${ORACLE_HOME}"/jdbc rm -r "${ORACLE_HOME}"/jlib - # Remove ODBC samples - rm -r "${ORACLE_HOME}"/odbc - # Remove components from ORACLE_HOME if [ "${BUILD_MODE}" == "SLIM" ]; then # Remove Oracle Text directory rm -r "${ORACLE_HOME}"/ctx + # Remove XDK + rm -r "${ORACLE_HOME}"/xdk + + # Remove Oracle Spatial directory + rm -r "${ORACLE_HOME}"/md + # Remove demo directory rm -r "${ORACLE_HOME}"/demo + # Remove ODBC samples + rm -r "${ORACLE_HOME}"/odbc + # Remove TNS samples rm -r "${ORACLE_HOME}"/network/admin/samples # Remove NLS demo rm -r "${ORACLE_HOME}"/nls/demo - #TODO + # Remove hs directory + rm -r "${ORACLE_HOME}"/hs + + # Remove ldap directory + rm -r "${ORACLE_HOME}"/ldap + + # Remove precomp directory + rm -r "${ORACLE_HOME}"/precomp + + # Remove slax directory + rm -r "${ORACLE_HOME}"/slax + + # Remove rdbms/demo directory + rm -r "${ORACLE_HOME}"/rdbms/demo + + # Remove rdbms/jlib directory + rm -r "${ORACLE_HOME}"/rdbms/jlib + + # Remove rdbms/public directory + rm -r "${ORACLE_HOME}"/rdbms/public + + # Remove rdbms/jlib directory + rm -r "${ORACLE_HOME}"/rdbms/xml + + # TODO fi; From 0d4135c00aeb93b7d0f23792934dce41e09258ea Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 1 May 2021 13:16:55 -0700 Subject: [PATCH 074/192] No longer needed due to new UNDO tablespace creation Signed-off-by: gvenzl --- install.1840.sh | 9 --------- 1 file changed, 9 deletions(-) diff --git a/install.1840.sh b/install.1840.sh index 0f53cd0..0238251 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -182,15 +182,6 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then -- Remove HR schema DROP user HR cascade; - ------------------------------------- - -- Bounce DB to free up UNDO, etc. -- - ------------------------------------- - -- Go back to CDB level - - ALTER SESSION SET CONTAINER=CDB\$ROOT; - shutdown immediate; - startup; - exit; EOF From 8c06246379e5487bf1fba4b9a3a9d6a563bd9fe7 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 2 May 2021 20:47:18 -0700 Subject: [PATCH 075/192] Remove OJVM and Java Packages + Multimedia and XDK dependencies Signed-off-by: gvenzl --- README.md | 5 + install.11202.sh | 155 +++++++++++----------- install.1840.sh | 325 +++++++++++++++++++++++++++++++++-------------- 3 files changed, 315 insertions(+), 170 deletions(-) diff --git a/README.md b/README.md index b8ffdc7..af53291 100644 --- a/README.md +++ b/README.md @@ -233,6 +233,10 @@ The regular image strives to balance between the functionality required by most #### Database components * The `HR` schema has been removed +* `Oracle Multimedia` has been removed +* `Oracle Database Java Packages` have been removed +* `Oracle XDK` has been removed +* `JServer JAVA Virtual Machine` has been removed * `OPatch` utility has been removed (`$ORACLE_HOME/OPatch`) * `QOpatch` utility has been removed (`$ORACLE_HOME/QOpatch`) * `Oracle Database Assistants` have been removed (`$ORACLE_HOME/assistants`) @@ -242,6 +246,7 @@ The regular image strives to balance between the functionality required by most * `Universal Connection Pool` driver has been removed (`$ORACLE_HOME/ucp`) * Intel Math Kernel libraries have been removed (`${ORACLE_HOME}/lib/libmkl_*`) * Other utilities have been removed (`${ORACLE_HOME}/lib/*.zip`) +* Additional Java libraries have been removed (`${ORACLE_HOME}/rdbms/jlib`) #### Database settings diff --git a/install.11202.sh b/install.11202.sh index 31b6684..ef9ca68 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -42,7 +42,7 @@ elif [ "${BUILD_MODE}" == "SLIM" ]; then USERS_SIZE=2 fi; -echo "BUILDER: installing additional packages" +echo "BUILDER: Installing OS dependencies" # Install installation dependencies microdnf -y install bc procps-ng util-linux net-tools @@ -113,7 +113,77 @@ echo "BUILDER: configuring database" echo "BUILDER: post config database steps" +############################ +### Create network files ### +############################ + +echo "BUILDER: creating network files" + +# listener.ora +echo \ +"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_${ORACLE_SID})) + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + ) + ) + +DEFAULT_SERVICE_LISTENER = (${ORACLE_SID})" > "${ORACLE_HOME}"/network/admin/listener.ora + +# tnsnames.ora +echo \ +"${ORACLE_SID} = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = ${ORACLE_SID}) + ) + ) + +EXTPROC_CONNECTION_DATA = + (DESCRIPTION = + (ADDRESS_LIST = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_${ORACLE_SID})) + ) + (CONNECT_DATA = + (SID = PLSExtProc) + (PRESENTATION = RO) + ) + ) +" > "${ORACLE_HOME}/network/admin/tnsnames.ora" + +# sqlnet.ora +echo "NAME.DIRECTORY_PATH= (EZCONNECT, TNSNAMES)" > "${ORACLE_HOME}"/network/admin/sqlnet.ora + +chown -R oracle:dba "${ORACLE_HOME}"/network/admin + +#################### +### bash_profile ### +#################### + +# Create .bash_profile for oracle user +echo "BUILDER: creating .bash_profile" +echo \ +"export ORACLE_BASE=${ORACLE_BASE} +export ORACLE_HOME=\${ORACLE_BASE}/product/11.2.0/xe +export ORACLE_SID=XE +export PATH=\${PATH}:\${ORACLE_HOME}/bin:\${ORACLE_BASE} +" >> "${ORACLE_BASE}"/.bash_profile +chown oracle:dba "${ORACLE_BASE}"/.bash_profile + # Perform further Database setup operations +echo "BUILDER: changing database configuration and parameters for all images" su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Exit on any errors @@ -162,6 +232,10 @@ rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo04.log # If not building the FULL image, remove and shrink additional components if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then + + echo "BUILDER: further optimizations for REGULAR and SLIM image" + + echo "BUILDER: changing database configuration and parameters for REGULAR and SLIM images" su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Exit on any errors @@ -193,8 +267,8 @@ EOF -- Do not exit on error because of expected error in catmet2.sql -- WHENEVER SQLERROR EXIT SQL.SQLCODE - shutdown immediate; - startup upgrade; + SHUTDOWN IMMEDIATE; + STARTUP UPGRADE; --------------------------- ------- Remove XDB -------- @@ -430,6 +504,7 @@ EOF ############################### echo "BUILDER: compressing database data files" + cd "${ORACLE_BASE}"/oradata zip -r "${ORACLE_SID}".zip "${ORACLE_SID}" chown oracle:dba "${ORACLE_SID}".zip @@ -437,76 +512,6 @@ mv "${ORACLE_SID}".zip "${ORACLE_BASE}"/ rm -r "${ORACLE_SID}" cd - 1> /dev/null -############################ -### Create network files ### -############################ - -echo "BUILDER: creating network files" - -# listener.ora -echo \ -"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_${ORACLE_SID})) - (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) - ) - ) - -DEFAULT_SERVICE_LISTENER = (${ORACLE_SID})" > "${ORACLE_HOME}"/network/admin/listener.ora - -# tnsnames.ora -echo \ -"${ORACLE_SID} = - (DESCRIPTION = - (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) - (CONNECT_DATA = - (SERVER = DEDICATED) - (SERVICE_NAME = ${ORACLE_SID}) - ) - ) - -EXTPROC_CONNECTION_DATA = - (DESCRIPTION = - (ADDRESS_LIST = - (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_${ORACLE_SID})) - ) - (CONNECT_DATA = - (SID = PLSExtProc) - (PRESENTATION = RO) - ) - ) -" > "${ORACLE_HOME}/network/admin/tnsnames.ora" - -# sqlnet.ora -echo "NAME.DIRECTORY_PATH= (EZCONNECT, TNSNAMES)" > "${ORACLE_HOME}"/network/admin/sqlnet.ora - -chown -R oracle:dba "${ORACLE_HOME}"/network/admin - -#################### -### bash_profile ### -#################### - -echo "BUILDER: creating .bash_profile" - -# Create .bash_profile for oracle user -echo \ -"export ORACLE_BASE=${ORACLE_BASE} -export ORACLE_HOME=\${ORACLE_BASE}/product/11.2.0/xe -export ORACLE_SID=XE -export PATH=\${PATH}:\${ORACLE_HOME}/bin:\${ORACLE_BASE} -" >> "${ORACLE_BASE}"/.bash_profile -chown oracle:dba "${ORACLE_BASE}"/.bash_profile - ######################## ### Install run file ### ######################## @@ -562,6 +567,8 @@ rm -r "${ORACLE_BASE}"/oradiag_oracle/* # Remove additional files for REGULAR and SLIM builds if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then + echo "BUILDER: further cleanup for REGULAR and SLIM image" + # Remove APEX directory rm -r "${ORACLE_HOME}"/apex @@ -572,6 +579,8 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove components from ORACLE_HOME if [ "${BUILD_MODE}" == "SLIM" ]; then + echo "BUILDER: further cleanup for SLIM image" + # Remove Oracle Text directory rm -r "${ORACLE_HOME}"/ctx diff --git a/install.1840.sh b/install.1840.sh index 0238251..ea38cd1 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -39,9 +39,10 @@ if [ "${BUILD_MODE}" == "FULL" ]; then elif [ "${BUILD_MODE}" == "REGULAR" ]; then REDO_SIZE=20 USERS_SIZE=10 +# CDB_SYSAUX_SIZE=464 fi; -echo "BUILDER: Installing dependencies" +echo "BUILDER: Installing OS dependencies" # Install installation dependencies microdnf -y install bc binutils file elfutils-libelf ksh sysstat procps-ng smartmontools make net-tools hostname @@ -82,7 +83,77 @@ ORACLE_PASSWORD=$(date '+%s' | sha256sum | base64 | head -c 8) echo "BUILDER: post config database steps" +############################ +### Create network files ### +############################ + +echo "BUILDER: creating network files" + +# listener.ora +echo \ +"LISTENER = + (DESCRIPTION_LIST = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_${ORACLE_SID})) + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + ) + ) + +DEFAULT_SERVICE_LISTENER = ${ORACLE_SID}" > "${ORACLE_HOME}"/network/admin/listener.ora + +# tnsnames.ora +echo \ +"${ORACLE_SID} = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = ${ORACLE_SID}) + ) + ) + +${ORACLE_SID}PDB1 = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = ${ORACLE_SID}PDB1) + ) + ) + +EXTPROC_CONNECTION_DATA = + (DESCRIPTION = + (ADDRESS_LIST = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_${ORACLE_SID})) + ) + (CONNECT_DATA = + (SID = PLSExtProc) + (PRESENTATION = RO) + ) + ) +" > "${ORACLE_HOME}"/network/admin/tnsnames.ora + +# sqlnet.ora +echo "NAME.DIRECTORY_PATH= (EZCONNECT, TNSNAMES)" > "${ORACLE_HOME}"/network/admin/sqlnet.ora + +chown -R oracle:dba "${ORACLE_HOME}"/network/admin + +#################### +### bash_profile ### +#################### + +# Create .bash_profile for oracle user +echo "BUILDER: creating .bash_profile" +echo \ +"export ORACLE_BASE=${ORACLE_BASE} +export ORACLE_HOME=\${ORACLE_BASE}/product/18c/dbhomeXE +export ORACLE_SID=XE +export PATH=\${PATH}:\${ORACLE_HOME}/bin:\${ORACLE_BASE} +" >> "${ORACLE_BASE}"/.bash_profile +chown oracle:dba "${ORACLE_BASE}"/.bash_profile + # Perform further Database setup operations +echo "BUILDER: changing database configuration and parameters for all images" su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Exit on any errors @@ -142,6 +213,25 @@ EOF # If not building the FULL image, remove and shrink additional components if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then + + echo "BUILDER: further optimizations for REGULAR and SLIM image" + + # Open PDB\$SEED to READ/WRITE + echo "BUILDER: Opening PDB\$SEED in READ/WRITE mode" + su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + + -- Open PDB\$SEED to READ WRITE mode + ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; + ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; + + exit; +EOF + + # Change parameters/settings + echo "BUILDER: changing database configuration and parameters for REGULAR and SLIM images" su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Exit on any errors @@ -151,12 +241,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then -- Like with every underscore parameter, DO NOT SET THIS PARAMETER EVER UNLESS YOU KNOW WHAT THE HECK YOU ARE DOING! ALTER SYSTEM SET "_dmm_blas_library"='libora_netlib.so' SCOPE=SPFILE; - --------- - -- CDB -- - --------- - -- Open PDB\$SEED in READ/WRITE mode - ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; - ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; + ------------------------------------- + -- Disable password profile checks -- + ------------------------------------- -- Disable password profile checks (can only be done container by container) ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; @@ -167,34 +254,118 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then ALTER SESSION SET CONTAINER=XEPDB1; ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; - -- Go back to CDB level - ALTER SESSION SET CONTAINER=CDB\$ROOT; - - -- Reset PDB\$SEED to READ ONLY mode - ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; - ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ ONLY; + ------------------------------- + -- Remove HR schema from PDB -- + ------------------------------- - ----------- - -- XEPDB -- - ----------- ALTER SESSION SET CONTAINER=XEPDB1; - - -- Remove HR schema DROP user HR cascade; exit; EOF - # Shrink datafiles + ######################## + # Remove DB components # + ######################## + + # Needs to be run as 'oracle' user (Perl script otherwise fails #TODO: see whether it can be run with su -c somehow instead) + su - oracle << EOF + cd "${ORACLE_HOME}"/rdbms/admin + + echo "BUILDER: removing Oracle Multimedia" + # Remove Multimedia (dependent on Oracle Database Java Packages) + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -e -b builder_remove_multimedia_pdbs -d "${ORACLE_HOME}"/ord/im/admin imremdo.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -e -b builder_recompile_all_objects_pdbs -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -e -b builder_remove_multimedia_cdb -d "${ORACLE_HOME}"/ord/im/admin imremdo.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -e -b builder_recompile_all_objects_cdb -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql + rm "${ORACLE_HOME}"/rdbms/admin/builder_remove_multimedia* + rm "${ORACLE_HOME}"/rdbms/admin/builder_recompile_all_objects* + + # Remove Oracle Database Java Packages + echo "BUILDER: Removing Oracle Database Java Packages" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_java_packages -d "${ORACLE_HOME}"/rdbms/admin catnojav.sql + rm "${ORACLE_HOME}"/rdbms/admin/builder_remove_java_packages* + + # Remove Oracle XDK + echo "BUILDER: Removing Oracle XDK" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_xdk -d "${ORACLE_HOME}"/xdk/admin rmxml.sql + rm "${ORACLE_HOME}"/rdbms/admin/builder_remove_xdk* + + # Remove Oracle JServer JAVA Virtual Machine + echo "BUILDER: Oracle JServer JAVA Virtual Machine" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_jvm -d "${ORACLE_HOME}"/javavm/install rmjvm.sql + rm "${ORACLE_HOME}"/rdbms/admin/builder_remove_jvm* + + # Recompile + echo "BUILDER: Recompiling database objects" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -e -b builder_recompile_all_objects -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql + rm "${ORACLE_HOME}"/rdbms/admin/builder_recompile_all_objects* + + exit; +EOF + + # Drop leftover items + echo "BUILDER: Dropping leftover Database dictionary objects" su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Exit on any errors WHENEVER SQLERROR EXIT SQL.SQLCODE - -- Open PDB\$SEED in READ/WRITE mode + -- Oracle Multimedia leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORDIMDPCALLOUTS'); + + -- Open PDB\$SEED to READ WRITE mode (catcon put it into READY ONLY again) ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; + ALTER SESSION SET CONTAINER=PDB\$SEED; + + -- Remove Java VM packages leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE BODY JAVAVM_SYS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE BODY JVMRJBCINV'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE BODY OJDS_CONTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$NODE_NUMBER\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$BINDINGS\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$INODE\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$ATTRIBUTES\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$REFADDR\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$PERMISSIONS\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$SEQ\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$'); + + -- Oracle Multimedia leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORDIMDPCALLOUTS'); + + ALTER SESSION SET CONTAINER=XEPDB1; + + -- Remove Java VM packages leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE BODY JAVAVM_SYS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE BODY JVMRJBCINV'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE BODY OJDS_CONTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$NODE_NUMBER\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$BINDINGS\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$INODE\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$ATTRIBUTES\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$REFADDR\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$PERMISSIONS\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$SEQ\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$'); + + -- Oracle Multimedia leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORDIMDPCALLOUTS'); + + exit; +EOF + + # Shrink datafiles + su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + ---------------------------- -- Shrink SYSAUX tablespaces ---------------------------- @@ -371,19 +542,23 @@ EOF -- Drop temporary UNDO tablespace DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; - ------------------------------ - -- Complete actions and finish - ------------------------------ - ALTER SESSION SET CONTAINER=CDB\$ROOT; + exit; +EOF - -- Reset PDB\$SEED to READ ONLY mode + # Close PDB\$SEED to READ ONLY again + echo "BUILDER: Opening PDB\$SEED in READ ONLY (default) mode" + su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + + -- Open PDB\$SEED to READ WRITE mode ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ ONLY; exit; EOF - fi; ################################### @@ -399,7 +574,8 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF WHENEVER SQLERROR EXIT SQL.SQLCODE -- Shutdown database gracefully - shutdown immediate; + SHUTDOWN IMMEDIATE; + exit; EOF @@ -408,6 +584,7 @@ EOF ############################### echo "BUILDER: compressing database data files" + cd "${ORACLE_BASE}"/oradata zip -r "${ORACLE_SID}".zip "${ORACLE_SID}" chown oracle:dba "${ORACLE_SID}".zip @@ -415,76 +592,6 @@ mv "${ORACLE_SID}".zip "${ORACLE_BASE}"/ rm -r "${ORACLE_SID}" cd - 1> /dev/null -############################ -### Create network files ### -############################ - -echo "BUILDER: creating network files" - -# listener.ora -echo \ -"LISTENER = - (DESCRIPTION_LIST = - (DESCRIPTION = - (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_${ORACLE_SID})) - (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) - ) - ) - -DEFAULT_SERVICE_LISTENER = ${ORACLE_SID}" > "${ORACLE_HOME}"/network/admin/listener.ora - -# tnsnames.ora -echo \ -"${ORACLE_SID} = - (DESCRIPTION = - (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) - (CONNECT_DATA = - (SERVER = DEDICATED) - (SERVICE_NAME = ${ORACLE_SID}) - ) - ) - -${ORACLE_SID}PDB1 = - (DESCRIPTION = - (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) - (CONNECT_DATA = - (SERVER = DEDICATED) - (SERVICE_NAME = ${ORACLE_SID}PDB1) - ) - ) - -EXTPROC_CONNECTION_DATA = - (DESCRIPTION = - (ADDRESS_LIST = - (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_${ORACLE_SID})) - ) - (CONNECT_DATA = - (SID = PLSExtProc) - (PRESENTATION = RO) - ) - ) -" > "${ORACLE_HOME}"/network/admin/tnsnames.ora - -# sqlnet.ora -echo "NAME.DIRECTORY_PATH= (EZCONNECT, TNSNAMES)" > "${ORACLE_HOME}"/network/admin/sqlnet.ora - -chown -R oracle:dba "${ORACLE_HOME}"/network/admin - -#################### -### bash_profile ### -#################### - -echo "BUILDER: creating .bash_profile" - -# Create .bash_profile for oracle user -echo \ -"export ORACLE_BASE=${ORACLE_BASE} -export ORACLE_HOME=\${ORACLE_BASE}/product/18c/dbhomeXE -export ORACLE_SID=XE -export PATH=\${PATH}:\${ORACLE_HOME}/bin:\${ORACLE_BASE} -" >> "${ORACLE_BASE}"/.bash_profile -chown oracle:dba "${ORACLE_BASE}"/.bash_profile - ######################## ### Install run file ### ######################## @@ -501,6 +608,10 @@ chown oracle:dba "${ORACLE_BASE}"/*.sh \ chmod u+x "${ORACLE_BASE}"/*.sh \ "${ORACLE_BASE}"/resetPassword +# TODO: relink Oracle binaries +# Multimedia: ord/im/lib/env_ordim.mk +# Java JIT (JOT) compiler: make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk jox_off_static ioracle + ######################### ####### Cleanup ######### ######################### @@ -542,6 +653,8 @@ rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/metadata/* # Remove additional files for NOMRAL and SLIM builds if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then + echo "BUILDER: further cleanup for REGULAR and SLIM image" + # Remove OPatch and QOpatch rm -r "${ORACLE_HOME}"/OPatch rm -r "${ORACLE_HOME}"/QOpatch @@ -566,6 +679,24 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove zip artifacts in $ORACLE_HOME/lib rm "${ORACLE_HOME}"/lib/*.zip + # Remove Multimedia + rm -r "${ORACLE_HOME}"/ord/im + + # Remove Oracle XDK + rm -r "${ORACLE_HOME}"/xdk + + # Remove JServer JAVA Virtual Machine + rm -r "${ORACLE_HOME}"/javavm + + # Remove Java JDK + rm -r "${ORACLE_HOME}"/jdk + + # Remove dbjava directory + rm -r "${ORACLE_HOME}"/dbjava + + # Remove rdbms/jlib + rm -r "${ORACLE_HOME}"/rdbms/jlib + # Remove not needed packages # Use rpm instad of microdnf to allow removing packages regardless of their dependencies rpm -e --nodeps glibc-devel glibc-headers kernel-headers libpkgconf libxcrypt-devel \ From 58bfbc1801e39aa51293e88f0a3ed6dcd1a5beae Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 2 May 2021 22:28:24 -0700 Subject: [PATCH 076/192] Update ReadMe Signed-off-by: gvenzl --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index af53291..a6d38d9 100644 --- a/README.md +++ b/README.md @@ -139,13 +139,13 @@ CONTAINER: running /container-entrypoint-initdb.d/2_create_data_model.sh ... Table created. ... -Table provided actual --------------------- ---------- ---------- -regions 7 7 -countries 196 196 -cities 204 204 -currencies 146 146 -currencies_countries 203 203 +Table provided actual +-------------------- -------- ------ +regions 7 7 +countries 196 196 +cities 204 204 +currencies 146 146 +currencies_countries 203 203 Thank you! @@ -244,9 +244,9 @@ The regular image strives to balance between the functionality required by most * The `inventory` directory has been removed (`$ORACLE_HOME/inventory`) * `JDBC` drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`) * `Universal Connection Pool` driver has been removed (`$ORACLE_HOME/ucp`) -* Intel Math Kernel libraries have been removed (`${ORACLE_HOME}/lib/libmkl_*`) -* Other utilities have been removed (`${ORACLE_HOME}/lib/*.zip`) -* Additional Java libraries have been removed (`${ORACLE_HOME}/rdbms/jlib`) +* Intel Math Kernel libraries have been removed (`$ORACLE_HOME/lib/libmkl_*`) +* Other utilities have been removed (`$ORACLE_HOME/lib/*.zip`) +* Additional Java libraries have been removed (`$ORACLE_HOME/rdbms/jlib`) #### Database settings From 67eacc93ceb116d76f89c8631f6b79439237d94b Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 8 May 2021 18:41:25 -0700 Subject: [PATCH 077/192] Introduce tests for ORACLE_PASSWORD and ORACLE_RANDOM_PASSWORD Signed-off-by: gvenzl --- tests/functions.sh | 46 +++++++++++------ tests/run_container_11202.sh | 97 ++++++++++++++++++++++++++++++++++- tests/run_container_1840.sh | 98 +++++++++++++++++++++++++++++++++++- 3 files changed, 225 insertions(+), 16 deletions(-) diff --git a/tests/functions.sh b/tests/functions.sh index 58a84cb..17e21dc 100755 --- a/tests/functions.sh +++ b/tests/functions.sh @@ -27,19 +27,19 @@ function checkDB { CONTAINER_NAME="${1}" - + tries=0 max_tries=12 sleep_time_secs=10 - + # Wait until container is ready while [ ${tries} -lt ${max_tries} ]; do # Sleep until DB is up and running sleep ${sleep_time_secs}; - + # Is the database ready for use? - podman logs ${CONTAINER_NAME} | grep 'DATABASE IS READY TO USE' >/dev/null; - if [ "$?" == "0" ]; then + + if podman logs ${CONTAINER_NAME} | grep 'DATABASE IS READY TO USE' >/dev/null; then return 0; fi; @@ -50,6 +50,19 @@ function checkDB { return 1; } +# Function: tear_down_container +# Tears down a container +# +# Parameters: +# CONTAINER_NAME: The container name + +function tear_down_container { + + echo "Tearing down container"; + echo ""; + podman rm -f "${1}" >/dev/null +} + # Function: run_container_test # Runs a container (podman run) test # @@ -62,17 +75,20 @@ function runContainerTest { TEST_NAME="${1}" CONTAINER_NAME="${2}" IMAGE="${3}" + WAIT_FOR_TEAR_DOWN="${4}" + + ORA_PWD_CMD="${ORA_PWD_CMD:--e ORACLE_PASSWORD=LetsTest1}" echo "TEST ${TEST_NAME}: Started" echo "" - + # Run and start container - podman run -d --name "${CONTAINER_NAME}" -e ORACLE_PASSWORD=LetsTest1 "${IMAGE}" - + podman run -d --name ${CONTAINER_NAME} ${ORA_PWD_CMD} ${APP_USER} ${APP_USER_PASSWORD} ${IMAGE} >/dev/null + # Check whether Oracle DB came up successfully checkDB "${CONTAINER_NAME}" TEST_OK=$? - + if [ "${TEST_OK}" != "0" ]; then # Print logs of failed test podman logs "${CONTAINER_NAME}"; @@ -81,14 +97,16 @@ function runContainerTest { echo "TEST ${TEST_NAME}: FAILED!"; echo ""; - podman rm -f "${CONTAINER_NAME}" + podman rm -f "${CONTAINER_NAME}" >/dev/null exit 1; else - echo "TEST ${TEST_NAME}: OK"; - echo ""; - - podman rm -f "${CONTAINER_NAME}" + # Only tear down container if $NO_TEAR_DOWN has NOT been specified + if [ -z "${NO_TEAR_DOWN:-}" ]; then + echo "TEST ${TEST_NAME}: OK"; + echo ""; + tear_down_container "${CONTAINER_NAME}" + fi; return 0; fi; diff --git a/tests/run_container_11202.sh b/tests/run_container_11202.sh index 230c0bc..3068c45 100755 --- a/tests/run_container_11202.sh +++ b/tests/run_container_11202.sh @@ -21,7 +21,7 @@ source ./functions.sh ####################### -####### 11g TEST ###### +###### 11g TESTS ###### ####################### runContainerTest "11.2.0.2 FULL image" "11202-full" "gvenzl/oracle-xe:11.2.0.2-full" @@ -32,3 +32,98 @@ runContainerTest "11 REGULAR image" "11" "gvenzl/oracle-xe:11" runContainerTest "11.2.0.2 SLIM image" "11202-slim" "gvenzl/oracle-xe:11.2.0.2-slim" runContainerTest "11 SLIM image" "11-slim" "gvenzl/oracle-xe:11-slim" + +################################# +##### Oracle password tests ##### +################################# + +# Provide different password +ORA_PWD_CMD="-e ORACLE_PASSWORD=MyTestPassword" +# Tell test method not to tear down container +NO_TEAR_DOWN="true" +# Let's keep the container name in a var to keep it simple +CONTAINER_NAME="11-ora-pwd" +# Let's keep the test name in a var to keep it simple too +TEST_NAME="11 ORACLE_PASSWORD" +# This is what we want to have back from the SQL statement +EXPECTED_RESULT="OK" + +# Spin up container +runContainerTest "${TEST_NAME}" "${CONTAINER_NAME}" "gvenzl/oracle-xe:11" + +# Test password, if it works we will get "OK" back from the SQL statement +result=$(podman exec -i ${CONTAINER_NAME} sqlplus -s system/MyTestPassword < Date: Sun, 9 May 2021 12:31:14 -0700 Subject: [PATCH 078/192] ER #16: provide APP user variables Signed-off-by: gvenzl --- README.md | 11 ++++++++++- container-entrypoint.sh | 44 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a6d38d9..9411535 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,12 @@ This variable is mandatory for the first container startup and specifies the pas ### `ORACLE_RANDOM_PASSWORD` This is an optional variable. Set this variable to a non-empty value, like `yes`, to generate a random initial password for the `SYS` and `SYSTEM` users. The generated password will be printed to stdout (`ORACLE PASSWORD FOR SYS AND SYSTEM: ...`). +### `APP_USER` +This is an optional variable. Set this variable to a non-empty string to create a new database schema user with the name specified in this variable. This variable requires `APP_USER_PASSWORD` or `APP_USER_PASSWORD_FILE` to be specified as well. + +### `APP_USER_PASSWORD` +This is an optional variable. Set this variable to a non-empty string to define a password for the database schema user specified by `APP_USER`. This variable requires `APP_USER` to be specified as well. + ## Container secrets As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to some of the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Container/Docker secrets stored in `/run/secrets/` files. For example: @@ -60,7 +66,10 @@ As an alternative to passing sensitive information via environment variables, `_ docker run --name some-oracle -e ORACLE_PASSWORD_FILE=/run/secrets/oracle-passwd -d gvenzl/oracle-xe ``` -Currently, this is only supported for `ORACLE_PASSWORD`. +This mechanism is supported for: + +* `ORACLE_PASSWORD` +* `APP_USER_PASSWORD` ## Initialization scripts If you would like to perform additional initialization of the database running in a container, you can add one or more `*.sql`, `*.sql.gz`, `*.sql.zip` or `*.sh` files under `/container-entrypoint-initdb.d` (creating the directory if necessary). After the database setup is completed, these files will be executed automatically in alphabetical order. diff --git a/container-entrypoint.sh b/container-entrypoint.sh index 46b1a73..58746c1 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -75,10 +75,13 @@ function setup_env_vars() { declare -g DATABASE_ALREADY_EXISTS + ORACLE_VERSION=$(sqlplus -version | grep "Release" | awk '{ print $3 }') + declare -g ORACLE_VERSION + if [ -d "${ORACLE_BASE}/oradata/dbconfig/${ORACLE_SID}" ]; then DATABASE_ALREADY_EXISTS="true"; else - # Allow for ORACLE_PASSWORD and or ORACLE_PASSWORD_FILE + # Allow for ORACLE_PASSWORD and/or ORACLE_PASSWORD_FILE file_env "ORACLE_PASSWORD" # Password is mandatory for first container start @@ -93,6 +96,20 @@ function setup_env_vars() { echo "Please specify only one of these variables." exit 1; fi; + + # Allow for APP_USER_PASSWORD and/or APP_USER_PASSWORD_FILE + file_env "APP_USER_PASSWORD" + + # Check whether both variables have been specified. + if [ -n "${APP_USER:-}" ] && [ -z "${APP_USER_PASSWORD}" ]; then + echo "\$APP_USER has been specified without \$APP_USER_PASSWORD[_FILE]." + echo "Both variables are required, please specify \$APP_USER and \$APP_USER_PASSWORD[_FILE]." + exit 1; + elif [ -n "${APP_USER_PASSWORD:-}" ] && [ -z "${APP_USER:-}" ]; then + echo "\$APP_USER_PASSWORD[_FILE] has been specified without \$APP_USER." + echo "Both variables are required, please specify \$APP_USER and \$APP_USER_PASSWORD[_FILE]." + exit 1; + fi; fi; } @@ -218,7 +235,25 @@ function run_custom_scripts { echo ""; fi; +} + +# Create schema user for the application to use +function create_app_user { + + # Check whether the user needs to be in a PDB or not + ALTER_SESSION_CMD="ALTER SESSION SET CONTAINER=XEPDB1;" + if [[ "${ORACLE_VERSION}" = "11.2"* ]]; then + ALTER_SESSION_CMD=""; + fi; + + echo "CONTAINER: Creating database application user." + sqlplus -s / as sysdba < Date: Sun, 9 May 2021 12:48:35 -0700 Subject: [PATCH 079/192] Add Ora pwd, random pwd and app user/pwd tests Signed-off-by: gvenzl --- tests/functions.sh | 43 ++++++++++-------- tests/run_container_11202.sh | 84 ++++++++++++++++++++++++++++++------ tests/run_container_1840.sh | 63 ++++++++++++++++++++++++--- 3 files changed, 153 insertions(+), 37 deletions(-) diff --git a/tests/functions.sh b/tests/functions.sh index 17e21dc..6e3f841 100755 --- a/tests/functions.sh +++ b/tests/functions.sh @@ -60,6 +60,7 @@ function tear_down_container { echo "Tearing down container"; echo ""; + podman kill "${1}" >/dev/null podman rm -f "${1}" >/dev/null } @@ -75,40 +76,46 @@ function runContainerTest { TEST_NAME="${1}" CONTAINER_NAME="${2}" IMAGE="${3}" - WAIT_FOR_TEAR_DOWN="${4}" - + APP_USER_CMD="" + APP_USER_PASSWORD_CMD="" ORA_PWD_CMD="${ORA_PWD_CMD:--e ORACLE_PASSWORD=LetsTest1}" + if [ -n "${APP_USER:-}" ]; then + APP_USER_CMD="-e APP_USER=${APP_USER}" + fi; + + if [ -n "${APP_USER_PASSWORD:-}" ]; then + APP_USER_PASSWORD_CMD="-e APP_USER_PASSWORD=${APP_USER_PASSWORD}" + fi; + echo "TEST ${TEST_NAME}: Started" echo "" # Run and start container - podman run -d --name ${CONTAINER_NAME} ${ORA_PWD_CMD} ${APP_USER} ${APP_USER_PASSWORD} ${IMAGE} >/dev/null + podman run -d --name ${CONTAINER_NAME} ${ORA_PWD_CMD} ${APP_USER_CMD} ${APP_USER_PASSWORD_CMD} ${IMAGE} >/dev/null # Check whether Oracle DB came up successfully - checkDB "${CONTAINER_NAME}" - TEST_OK=$? + if checkDB "${CONTAINER_NAME}"; then + # Only tear down container if $NO_TEAR_DOWN has NOT been specified + if [ -z "${NO_TEAR_DOWN:-}" ]; then + echo "TEST ${TEST_NAME}: OK"; + echo ""; + tear_down_container "${CONTAINER_NAME}" + fi; + + return 0; - if [ "${TEST_OK}" != "0" ]; then + # Test failed + else # Print logs of failed test podman logs "${CONTAINER_NAME}"; echo ""; echo "TEST ${TEST_NAME}: FAILED!"; echo ""; - - podman rm -f "${CONTAINER_NAME}" >/dev/null + tear_down_container "${CONTAINER_NAME}" exit 1; - else - # Only tear down container if $NO_TEAR_DOWN has NOT been specified - if [ -z "${NO_TEAR_DOWN:-}" ]; then - echo "TEST ${TEST_NAME}: OK"; - echo ""; - tear_down_container "${CONTAINER_NAME}" - fi; - return 0; fi; - -} \ No newline at end of file +} diff --git a/tests/run_container_11202.sh b/tests/run_container_11202.sh index 3068c45..38cb05f 100755 --- a/tests/run_container_11202.sh +++ b/tests/run_container_11202.sh @@ -24,6 +24,10 @@ source ./functions.sh ###### 11g TESTS ###### ####################### +####################### +##### Image tests ##### +####################### + runContainerTest "11.2.0.2 FULL image" "11202-full" "gvenzl/oracle-xe:11.2.0.2-full" runContainerTest "11 FULL image" "11-full" "gvenzl/oracle-xe:11-full" @@ -33,26 +37,27 @@ runContainerTest "11 REGULAR image" "11" "gvenzl/oracle-xe:11" runContainerTest "11.2.0.2 SLIM image" "11202-slim" "gvenzl/oracle-xe:11.2.0.2-slim" runContainerTest "11 SLIM image" "11-slim" "gvenzl/oracle-xe:11-slim" -################################# -##### Oracle password tests ##### -################################# +################################ +##### Oracle password test ##### +################################ # Provide different password -ORA_PWD_CMD="-e ORACLE_PASSWORD=MyTestPassword" +ORA_PWD="MyTestPassword" +ORA_PWD_CMD="-e ORACLE_PASSWORD=${ORA_PWD}" # Tell test method not to tear down container NO_TEAR_DOWN="true" # Let's keep the container name in a var to keep it simple CONTAINER_NAME="11-ora-pwd" # Let's keep the test name in a var to keep it simple too -TEST_NAME="11 ORACLE_PASSWORD" +TEST_NAME="11.2.0.2-full ORACLE_PASSWORD" # This is what we want to have back from the SQL statement EXPECTED_RESULT="OK" # Spin up container -runContainerTest "${TEST_NAME}" "${CONTAINER_NAME}" "gvenzl/oracle-xe:11" +runContainerTest "${TEST_NAME}" "${CONTAINER_NAME}" "gvenzl/oracle-xe:11.2.0.2-full" # Test password, if it works we will get "OK" back from the SQL statement -result=$(podman exec -i ${CONTAINER_NAME} sqlplus -s system/MyTestPassword < Date: Sun, 16 May 2021 11:47:59 -0700 Subject: [PATCH 080/192] Remove workspace manager Signed-off-by: gvenzl --- install.1840.sh | 155 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 144 insertions(+), 11 deletions(-) diff --git a/install.1840.sh b/install.1840.sh index ea38cd1..e4ca1a4 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -272,34 +272,34 @@ EOF su - oracle << EOF cd "${ORACLE_HOME}"/rdbms/admin + # Remove Workspace Manager + echo "BUILDER: Oracle Workspace Manager" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_workspace_manager_pdbs -d "${ORACLE_HOME}"/rdbms/admin owmuinst.plb + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_workspace_manager_cdb -d "${ORACLE_HOME}"/rdbms/admin owmuinst.plb + echo "BUILDER: removing Oracle Multimedia" # Remove Multimedia (dependent on Oracle Database Java Packages) - "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -e -b builder_remove_multimedia_pdbs -d "${ORACLE_HOME}"/ord/im/admin imremdo.sql - "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -e -b builder_recompile_all_objects_pdbs -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql - "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -e -b builder_remove_multimedia_cdb -d "${ORACLE_HOME}"/ord/im/admin imremdo.sql - "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -e -b builder_recompile_all_objects_cdb -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql - rm "${ORACLE_HOME}"/rdbms/admin/builder_remove_multimedia* - rm "${ORACLE_HOME}"/rdbms/admin/builder_recompile_all_objects* + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_multimedia_pdbs -d "${ORACLE_HOME}"/ord/im/admin imremdo.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_multimedia_cdb -d "${ORACLE_HOME}"/ord/im/admin imremdo.sql # Remove Oracle Database Java Packages echo "BUILDER: Removing Oracle Database Java Packages" "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_java_packages -d "${ORACLE_HOME}"/rdbms/admin catnojav.sql - rm "${ORACLE_HOME}"/rdbms/admin/builder_remove_java_packages* # Remove Oracle XDK echo "BUILDER: Removing Oracle XDK" "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_xdk -d "${ORACLE_HOME}"/xdk/admin rmxml.sql - rm "${ORACLE_HOME}"/rdbms/admin/builder_remove_xdk* # Remove Oracle JServer JAVA Virtual Machine echo "BUILDER: Oracle JServer JAVA Virtual Machine" "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_jvm -d "${ORACLE_HOME}"/javavm/install rmjvm.sql - rm "${ORACLE_HOME}"/rdbms/admin/builder_remove_jvm* # Recompile echo "BUILDER: Recompiling database objects" - "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -e -b builder_recompile_all_objects -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql - rm "${ORACLE_HOME}"/rdbms/admin/builder_recompile_all_objects* + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_recompile_all_objects -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql + + # Remove all log files + rm "${ORACLE_HOME}"/rdbms/admin/builder_* exit; EOF @@ -337,6 +337,72 @@ EOF -- Oracle Multimedia leftovers exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORDIMDPCALLOUTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_STILLIMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_AVERAGECOLOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLORHISTOGRAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_POSITIONALCOLOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_TEXTURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FEATURELIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDAUDIO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDVIDEO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDOC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGESIGNATURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDICOM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDATASOURCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDPLSGWYUTIL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE1'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE2'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORA_SI_MKSTILLIMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CHGCONTENT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CONVERTFORMAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTHMBNL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETSIZEDTHMBNL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENTLNGTH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETHEIGHT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETWIDTH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETFORMAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKRGBCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDAVGCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKAVGCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYAVGCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_ARRAYCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_APPENDCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDPSTNLCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYPSTNLCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDTEXTURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYTEXTURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKFTRLIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETAVGCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETCLRHSTGRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETPSTNLCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETTEXTUREFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYFTRLIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM_ADMIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_IMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_AUDIO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_VIDEO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DOC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DBRELEASE_DOCS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_TYPES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONSTRAINT_NAMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_REFS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONFORMANCE_VLD_MSGS'); ALTER SESSION SET CONTAINER=XEPDB1; @@ -356,6 +422,73 @@ EOF -- Oracle Multimedia leftovers exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORDIMDPCALLOUTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_STILLIMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_AVERAGECOLOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLORHISTOGRAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_POSITIONALCOLOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_TEXTURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FEATURELIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDAUDIO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDVIDEO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDOC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGESIGNATURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDICOM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDATASOURCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDPLSGWYUTIL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE1'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE2'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORA_SI_MKSTILLIMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CHGCONTENT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CONVERTFORMAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTHMBNL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETSIZEDTHMBNL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENTLNGTH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETHEIGHT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETWIDTH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETFORMAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKRGBCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDAVGCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKAVGCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYAVGCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_ARRAYCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_APPENDCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDPSTNLCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYPSTNLCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDTEXTURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYTEXTURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKFTRLIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETAVGCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETCLRHSTGRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETPSTNLCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETTEXTUREFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYFTRLIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM_ADMIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_IMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_AUDIO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_VIDEO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DOC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DBRELEASE_DOCS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_TYPES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONSTRAINT_NAMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_REFS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONFORMANCE_VLD_MSGS'); + exit; EOF From 875ca71681af7666c72e71337d59fa5633ff7841 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 16 May 2021 13:40:09 -0700 Subject: [PATCH 081/192] Remove OLAP Signed-off-by: gvenzl --- README.md | 3 +++ install.1840.sh | 21 ++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9411535..3f8aecd 100644 --- a/README.md +++ b/README.md @@ -242,10 +242,13 @@ The regular image strives to balance between the functionality required by most #### Database components * The `HR` schema has been removed +* `Oracle Workspace Manager` has been removed * `Oracle Multimedia` has been removed * `Oracle Database Java Packages` have been removed * `Oracle XDK` has been removed * `JServer JAVA Virtual Machine` has been removed +* `Oracle OLAP API` has been removed +* `OLAP Analytic Workspace` has been removed * `OPatch` utility has been removed (`$ORACLE_HOME/OPatch`) * `QOpatch` utility has been removed (`$ORACLE_HOME/QOpatch`) * `Oracle Database Assistants` have been removed (`$ORACLE_HOME/assistants`) diff --git a/install.1840.sh b/install.1840.sh index e4ca1a4..cea6252 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -294,6 +294,23 @@ EOF echo "BUILDER: Oracle JServer JAVA Virtual Machine" "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_jvm -d "${ORACLE_HOME}"/javavm/install rmjvm.sql + # Remove Oracle OLAP API + echo "BUILDER: Remove Oracle OLAP API" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_olap_api_pdbs_1 -d "${ORACLE_HOME}"/olap/admin/ olapidrp.plb + # Needs to be done one by one, otherwise there is a ORA-65023: active transaction exists in container PDB\$SEED + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'PDB\$SEED' -b builder_remove_olap_api_pdbseed_2 -d "${ORACLE_HOME}"/olap/admin/ catnoxoq.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'XEPDB1' -b builder_remove_olap_api_xepdb1_2 -d "${ORACLE_HOME}"/olap/admin/ catnoxoq.sql + # Remove it from the CDB + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_olap_api_cdb_1 -d "${ORACLE_HOME}"/olap/admin/ olapidrp.plb + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_olap_api_cdb_2 -d "${ORACLE_HOME}"/olap/admin/ catnoxoq.sql + + # Remove OLAP Analytic Workspace + echo "BUILDER: Remove OLAP Analytic Workspace" + # Needs to be done one by one, otherwise there is a ORA-65023: active transaction exists in container PDB\$SEED + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'PDB\$SEED' -b builder_remove_olap_workspace_pdb_seed -d "${ORACLE_HOME}"/olap/admin/ catnoaps.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'XEPDB1' -b builder_remove_olap_workspace_xepdb1 -d "${ORACLE_HOME}"/olap/admin/ catnoaps.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_olap_workspace_cdb -d "${ORACLE_HOME}"/olap/admin/ catnoaps.sql + # Recompile echo "BUILDER: Recompiling database objects" "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_recompile_all_objects -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql @@ -489,7 +506,6 @@ EOF exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_REFS'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONFORMANCE_VLD_MSGS'); - exit; EOF @@ -830,6 +846,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove rdbms/jlib rm -r "${ORACLE_HOME}"/rdbms/jlib + # Remove olap + rm -r "${ORACLE_HOME}"/olap + # Remove not needed packages # Use rpm instad of microdnf to allow removing packages regardless of their dependencies rpm -e --nodeps glibc-devel glibc-headers kernel-headers libpkgconf libxcrypt-devel \ From 499cb0ddb6941a81c46ea34474ac6768f1067251 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 4 Jun 2021 21:42:24 -0700 Subject: [PATCH 082/192] Update package dependencies removal Signed-off-by: gvenzl --- install.1840.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install.1840.sh b/install.1840.sh index cea6252..73a533b 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -860,10 +860,11 @@ fi; # Use rpm instead of microdnf to allow removing packages regardless of dependencies specified by the Oracle XE RPM rpm -e --nodeps dbus-libs libtirpc diffutils libnsl2 dbus-tools dbus-common dbus-daemon \ libpcap iptables-libs libseccomp libfdisk xz lm_sensors-libs libutempter \ - kmod-libs cracklib libpwquality pam util-linux findutils acl \ + kmod-libs cracklib cracklib-dicts libpwquality pam util-linux findutils acl \ device-mapper device-mapper-libs cryptsetup-libs elfutils-default-yama-scope \ elfutils-libs systemd-pam systemd dbus smartmontools ksh sysstat procps-ng \ - binutils file make bc net-tools hostname + binutils file make bc net-tools hostname hwdata pciutils-libs pciutils \ + rdma-core libibverbs libnl3 rm /etc/sysctl.conf.rpmsave From 54584bd1192346f5f93c1bbb0528d382dd4cc8d4 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 4 Jun 2021 21:43:24 -0700 Subject: [PATCH 083/192] Make removal messages consistent Signed-off-by: gvenzl --- install.1840.sh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/install.1840.sh b/install.1840.sh index 73a533b..7c9045b 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -269,15 +269,16 @@ EOF ######################## # Needs to be run as 'oracle' user (Perl script otherwise fails #TODO: see whether it can be run with su -c somehow instead) + echo "BUILDER: Removing additional components for REGULAR image" su - oracle << EOF cd "${ORACLE_HOME}"/rdbms/admin # Remove Workspace Manager - echo "BUILDER: Oracle Workspace Manager" + echo "BUILDER: Removing Oracle Workspace Manager" "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_workspace_manager_pdbs -d "${ORACLE_HOME}"/rdbms/admin owmuinst.plb "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_workspace_manager_cdb -d "${ORACLE_HOME}"/rdbms/admin owmuinst.plb - echo "BUILDER: removing Oracle Multimedia" + echo "BUILDER: Removing Oracle Multimedia" # Remove Multimedia (dependent on Oracle Database Java Packages) "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_multimedia_pdbs -d "${ORACLE_HOME}"/ord/im/admin imremdo.sql "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_multimedia_cdb -d "${ORACLE_HOME}"/ord/im/admin imremdo.sql @@ -291,11 +292,11 @@ EOF "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_xdk -d "${ORACLE_HOME}"/xdk/admin rmxml.sql # Remove Oracle JServer JAVA Virtual Machine - echo "BUILDER: Oracle JServer JAVA Virtual Machine" + echo "BUILDER: Removing Oracle JServer JAVA Virtual Machine" "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_jvm -d "${ORACLE_HOME}"/javavm/install rmjvm.sql # Remove Oracle OLAP API - echo "BUILDER: Remove Oracle OLAP API" + echo "BUILDER: Removing Oracle OLAP API" "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_olap_api_pdbs_1 -d "${ORACLE_HOME}"/olap/admin/ olapidrp.plb # Needs to be done one by one, otherwise there is a ORA-65023: active transaction exists in container PDB\$SEED "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'PDB\$SEED' -b builder_remove_olap_api_pdbseed_2 -d "${ORACLE_HOME}"/olap/admin/ catnoxoq.sql @@ -305,7 +306,7 @@ EOF "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_olap_api_cdb_2 -d "${ORACLE_HOME}"/olap/admin/ catnoxoq.sql # Remove OLAP Analytic Workspace - echo "BUILDER: Remove OLAP Analytic Workspace" + echo "BUILDER: Removing OLAP Analytic Workspace" # Needs to be done one by one, otherwise there is a ORA-65023: active transaction exists in container PDB\$SEED "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'PDB\$SEED' -b builder_remove_olap_workspace_pdb_seed -d "${ORACLE_HOME}"/olap/admin/ catnoaps.sql "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'XEPDB1' -b builder_remove_olap_workspace_xepdb1 -d "${ORACLE_HOME}"/olap/admin/ catnoaps.sql @@ -322,7 +323,7 @@ EOF EOF # Drop leftover items - echo "BUILDER: Dropping leftover Database dictionary objects" + echo "BUILDER: Dropping leftover Database dictionary objects for REGULAR" su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Exit on any errors From b62259c635394d8dc11d4993d79bcd477e24fca0 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 4 Jun 2021 21:44:26 -0700 Subject: [PATCH 084/192] Fix Java Packages removal Signed-off-by: gvenzl --- install.1840.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/install.1840.sh b/install.1840.sh index 7c9045b..fa3387e 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -340,9 +340,9 @@ EOF ALTER SESSION SET CONTAINER=PDB\$SEED; -- Remove Java VM packages leftovers - exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE BODY JAVAVM_SYS'); - exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE BODY JVMRJBCINV'); - exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE BODY OJDS_CONTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JAVAVM_SYS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JVMRJBCINV'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE OJDS_CONTEXT'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$NODE_NUMBER\$'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$BINDINGS\$'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$INODE\$'); @@ -425,9 +425,9 @@ EOF ALTER SESSION SET CONTAINER=XEPDB1; -- Remove Java VM packages leftovers - exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE BODY JAVAVM_SYS'); - exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE BODY JVMRJBCINV'); - exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE BODY OJDS_CONTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JAVAVM_SYS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JVMRJBCINV'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE OJDS_CONTEXT'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$NODE_NUMBER\$'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$BINDINGS\$'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$INODE\$'); From 3a835bcc10ddbeca180c447050b725c20d2a9c41 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 4 Jun 2021 23:26:45 -0700 Subject: [PATCH 085/192] ER #22: provide GitHub Actions snippet Signed-off-by: gvenzl --- README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/README.md b/README.md index 3f8aecd..e57331d 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,36 @@ This is an optional variable. Set this variable to a non-empty string to create ### `APP_USER_PASSWORD` This is an optional variable. Set this variable to a non-empty string to define a password for the database schema user specified by `APP_USER`. This variable requires `APP_USER` to be specified as well. +## GitHub Actions +The images can be used as a [Service Container](https://docs.github.com/en/actions/guides/about-service-containers) within a [GitHub Actions](https://docs.github.com/en/actions) workflow. Below is an example service definition for your GitHub Actions YAML file: + +```yaml + services: + + # Oracle service + oracle: + + # Docker Hub image (feel free to change the tag "latest" to any other available one) + image: gvenzl/oracle-xe:latest + + # Provide passwords and other environment variables to container + env: + ORACLE_RANDOM_PASSWORD: true + APP_USER: my_user + APP_USER_PASSWORD: my_password_which_I_really_should_change + + # Forward Oracle port + ports: + - 1521:1521 + + # Provide healthcheck script options for startup + options: >- + --health-cmd healthcheck.sh + --health-interval 10s + --health-timeout 5s + --health-retries 10 +``` + ## Container secrets As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to some of the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Container/Docker secrets stored in `/run/secrets/` files. For example: From f4584bcd33d9616cb1996ed618158dfbee7e0002 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 6 Jun 2021 19:38:32 -0700 Subject: [PATCH 086/192] Remove Java Package leftovers Signed-off-by: gvenzl --- install.1840.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install.1840.sh b/install.1840.sh index fa3387e..575ac21 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -342,6 +342,7 @@ EOF -- Remove Java VM packages leftovers exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JAVAVM_SYS'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JVMRJBCINV'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE DBMS_JAVA_MISC'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE OJDS_CONTEXT'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$NODE_NUMBER\$'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$BINDINGS\$'); @@ -351,6 +352,7 @@ EOF exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$PERMISSIONS\$'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$SEQ\$'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP TRIGGER OJDS\$ROLE_TRIGGER\$'); -- Oracle Multimedia leftovers exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); @@ -427,6 +429,7 @@ EOF -- Remove Java VM packages leftovers exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JAVAVM_SYS'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JVMRJBCINV'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE DBMS_JAVA_MISC'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE OJDS_CONTEXT'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$NODE_NUMBER\$'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$BINDINGS\$'); @@ -436,6 +439,7 @@ EOF exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$PERMISSIONS\$'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$SEQ\$'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP TRIGGER OJDS\$ROLE_TRIGGER\$'); -- Oracle Multimedia leftovers exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); From 74cff5359ff8318e1d2eb0cd1358099e9a855ff2 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 6 Jun 2021 21:04:26 -0700 Subject: [PATCH 087/192] Do not remove SLAX, used for PL/SQL Signed-off-by: gvenzl --- README.md | 1 - install.11202.sh | 3 --- 2 files changed, 4 deletions(-) diff --git a/README.md b/README.md index e57331d..a5f320a 100644 --- a/README.md +++ b/README.md @@ -364,7 +364,6 @@ The slim images aims for smallest possible image size with only the Oracle Datab * The hs directory has been removed (`$ORACLE_HOME/hs`) * The ldap directory has been removed (`$ORACLE_HOME/ldap`) * The precomp directory has been removed (`$ORACLE_HOME/precomp`) -* The slax directory has been removed (`$ORACLE_HOME/slax`) * The rdbms/demo directory has been removed (`$ORACLE_HOME/rdbms/demo`) * The rdbms/jlib directory has been removed (`$ORACLE_HOME/rdbms/jlib`) * The rdbms/public directory has been removed (`$ORACLE_HOME/rdbms/public`) diff --git a/install.11202.sh b/install.11202.sh index ef9ca68..68882b1 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -611,9 +611,6 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove precomp directory rm -r "${ORACLE_HOME}"/precomp - # Remove slax directory - rm -r "${ORACLE_HOME}"/slax - # Remove rdbms/demo directory rm -r "${ORACLE_HOME}"/rdbms/demo From 5753af195050b6a0dc4be70cb375ae3f19d833ec Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 20 Jun 2021 15:26:08 -0700 Subject: [PATCH 088/192] Remove Oracle Text, produce SLIM image Signed-off-by: gvenzl --- README.md | 19 +++++++- install.1840.sh | 113 +++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 129 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a5f320a..beadd56 100644 --- a/README.md +++ b/README.md @@ -275,7 +275,7 @@ The regular image strives to balance between the functionality required by most * `Oracle Workspace Manager` has been removed * `Oracle Multimedia` has been removed * `Oracle Database Java Packages` have been removed -* `Oracle XDK` has been removed +* `Oracle XDK` has been removed (`$ORACLE_HOME/xdk`) * `JServer JAVA Virtual Machine` has been removed * `Oracle OLAP API` has been removed * `OLAP Analytic Workspace` has been removed @@ -308,6 +308,23 @@ The regular image strives to balance between the functionality required by most * `pkgconf-m4` * `pkgconf-pkg-config` +### Slim image flavor (`18-slim`) + +The slim images aims for smallest possible image size with only the Oracle Database relational components. It has all customizations that the regular image has and removes all non-relational components (where possible) to further decrease the image size: + +#### Database components + +* `Oracle Text` has been uninstalled and removed (`$ORACLE_HOME/ctx`) +* The demo samples directory has been removed (`$ORACLE_HOME/demo`) +* `ODBC` driver samples have been removed (`$ORACLE_HOME/odbc`) +* `TNS` demo samples have been removed (`$ORACLE_HOME/network/admin/samples`) +* `NLS LBuilder` directory has been removed (`$ORACLE_HOME/nls/lbuilder`) +* The hs directory has been removed (`$ORACLE_HOME/hs`) +* The ldap directory has been removed (`$ORACLE_HOME/ldap`) +* The precomp directory has been removed (`$ORACLE_HOME/precomp`) +* The rdbms/public directory has been removed (`$ORACLE_HOME/rdbms/public`) +* The rdbms/xml directory has been removed (`$ORACLE_HOME/rdbms/xml`) + ## 11g XE ### Full image flavor (`11-full`) diff --git a/install.1840.sh b/install.1840.sh index 575ac21..4c4d01b 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -40,6 +40,10 @@ elif [ "${BUILD_MODE}" == "REGULAR" ]; then REDO_SIZE=20 USERS_SIZE=10 # CDB_SYSAUX_SIZE=464 +elif [ "${BUILD_MODE}" == "SLIM" ]; then + REDO_SIZE=10 + USERS_SIZE=2 +# CDB_SYSAUX_SIZE=464 fi; echo "BUILDER: Installing OS dependencies" @@ -323,7 +327,7 @@ EOF EOF # Drop leftover items - echo "BUILDER: Dropping leftover Database dictionary objects for REGULAR" + echo "BUILDER: Dropping leftover Database dictionary objects for REGULAR image" su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Exit on any errors @@ -514,7 +518,73 @@ EOF exit; EOF - # Shrink datafiles + #################################### + # SLIM Image: Remove DB components # + #################################### + + if [ "${BUILD_MODE}" == "SLIM" ]; then + + # Needs to be run as 'oracle' user (Perl script otherwise fails #TODO: see whether it can be run with su -c somehow instead) + echo "BUILDER: Removing additional components for SLIM image" + su - oracle << EOF + cd "${ORACLE_HOME}"/rdbms/admin + + # Remove Oracle Text + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_text_pdbs -C 'CDB\$ROOT' -d "${ORACLE_HOME}"/ctx/admin catnoctx.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_text_cdb -c 'CDB\$ROOT' -d "${ORACLE_HOME}"/ctx/admin catnoctx.sql + + # Recompile + echo "BUILDER: Recompiling database objects" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_recompile_all_objects -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql + + # Remove all log files + rm "${ORACLE_HOME}"/rdbms/admin/builder_* + + exit; +EOF + + # Drop leftover items + echo "BUILDER: Dropping leftover Database dictionary objects for SLIM image" + su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + + -- Oracle Text leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE XDB.XDB_DATASTORE_PROC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_XDBT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); + + -- Open PDB\$SEED to READ WRITE mode (catcon put it into READY ONLY again) + ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; + ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; + + ALTER SESSION SET CONTAINER=PDB\$SEED; + + -- Oracle Text leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE XDB.XDB_DATASTORE_PROC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_XDBT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); + + ALTER SESSION SET CONTAINER=XEPDB1; + + -- Oracle Text leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE XDB.XDB_DATASTORE_PROC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_XDBT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); + + exit; +EOF + + fi; + + ##################### + # Shrink data files # + ##################### + su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Exit on any errors @@ -859,6 +929,45 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then rpm -e --nodeps glibc-devel glibc-headers kernel-headers libpkgconf libxcrypt-devel \ pkgconf pkgconf-m4 pkgconf-pkg-config + # Remove components from ORACLE_HOME + if [ "${BUILD_MODE}" == "SLIM" ]; then + + echo "BUILDER: further cleanup for SLIM image" + + # Remove Oracle Text directory + rm -r "${ORACLE_HOME}"/ctx + + # Remove demo directory + rm -r "${ORACLE_HOME}"/demo + + # Remove ODBC samples + rm -r "${ORACLE_HOME}"/odbc + + # Remove TNS samples + rm -r "${ORACLE_HOME}"/network/admin/samples + + # Remove NLS LBuilder + rm -r "${ORACLE_HOME}"/nls/lbuilder + + # Remove hs directory + rm -r "${ORACLE_HOME}"/hs + + # Remove ldap directory + rm -r "${ORACLE_HOME}"/ldap + + # Remove precomp directory + rm -r "${ORACLE_HOME}"/precomp + + # Remove rdbms/public directory + rm -r "${ORACLE_HOME}"/rdbms/public + + # Remove rdbms/jlib directory + rm -r "${ORACLE_HOME}"/rdbms/xml + + # TODO + + fi; + fi; # Remove installation dependencies From 1f4def9da96054148dc7bc2d85ec92f3255d8916 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 20 Jun 2021 16:42:58 -0700 Subject: [PATCH 089/192] Update dep removal Signed-off-by: gvenzl --- install.11202.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 68882b1..cd094fa 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -633,8 +633,9 @@ fi; # Unfortunately microdnf does not automatically uninstall dependencies that have been # installed with a package, so if you were to uninstall just util-linux, for example, # it does not automatically also remove gzip and cracklib again. -microdnf -y remove bc libtirpc libnsl2 libfdisk libutempter cracklib libpwquality \ - pam util-linux dbus-libs dbus-tools pam libpwquality dbus-common \ +microdnf -y remove bc libtirpc libnsl2 libfdisk libutempter cracklib cracklib-dicts \ + libpwquality hwdata libibverbs libnl3 pciutils pciutils-libs \ + rdma-core pam dbus-libs dbus-tools pam dbus-common \ dbus-daemon libpcap iptables-libs libseccomp kmod-libs acl \ device-mapper device-mapper-libs cryptsetup-libs \ elfutils-default-yama-scope elfutils-libs systemd-pam systemd dbus \ From 7319c48fc1e8999c982e5a11d074f9fe55986695 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 20 Jun 2021 22:33:46 -0700 Subject: [PATCH 090/192] Add 18c slim tests Signed-off-by: gvenzl --- tests/build_Dockerfile_1840.sh | 6 +++--- tests/run_container_1840.sh | 5 ++++- tests/tag_images_1840.sh | 3 +++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/tests/build_Dockerfile_1840.sh b/tests/build_Dockerfile_1840.sh index c7f5956..9aeaf5a 100755 --- a/tests/build_Dockerfile_1840.sh +++ b/tests/build_Dockerfile_1840.sh @@ -35,8 +35,8 @@ echo "TEST: Building 18.4.0 REGULAR image" echo "DONE: Building 18.4.0 REGULAR image" # Not done yet -#echo "TEST: Building 18.4.0 SLIM image" -#./buildContainerImage.sh -v 18.4.0 -s -#echo "DONE: Building 18.4.0 SLIM image" +echo "TEST: Building 18.4.0 SLIM image" +./buildContainerImage.sh -v 18.4.0 -s +echo "DONE: Building 18.4.0 SLIM image" cd "${CURRENT_DIR}" diff --git a/tests/run_container_1840.sh b/tests/run_container_1840.sh index eefc47d..e33b687 100755 --- a/tests/run_container_1840.sh +++ b/tests/run_container_1840.sh @@ -36,7 +36,10 @@ runContainerTest "18.4.0 REGULAR image" "1840" "gvenzl/oracle-xe:18.4.0" runContainerTest "18 REGULAR image" "18" "gvenzl/oracle-xe:18" runContainerTest "REGULAR image" "latest" "gvenzl/oracle-xe" -#runContainerTest "18.4.0 SLIM image" "1840-slim" "gvenzl/oracle-xe:18.4.0-slim" +runContainerTest "18.4.0 SLIM image" "1840-slim" "gvenzl/oracle-xe:18.4.0-slim" +runContainerTest "18.4.0 SLIM image" "18-slim" "gvenzl/oracle-xe:18-slim" +runContainerTest "18.4.0 SLIM image" "slim" "gvenzl/oracle-xe:slim" + ################################# ##### Oracle password tests ##### diff --git a/tests/tag_images_1840.sh b/tests/tag_images_1840.sh index 2d66032..fb59f9b 100755 --- a/tests/tag_images_1840.sh +++ b/tests/tag_images_1840.sh @@ -27,3 +27,6 @@ podman tag gvenzl/oracle-xe:18.4.0-full gvenzl/oracle-xe:18-full podman tag gvenzl/oracle-xe:18.4.0-full gvenzl/oracle-xe:full podman tag gvenzl/oracle-xe:18.4.0 gvenzl/oracle-xe:18 + +podman tag gvenzl/oracle-xe:18.4.0-slim gvenzl/oracle-xe:18-slim +podman tag gvenzl/oracle-xe:18.4.0-slim gvenzl/oracle-xe:slim From bbaaa769dd68d731c6eabb292c283afdbacabea7 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 2 Jul 2021 21:41:36 -0700 Subject: [PATCH 091/192] Do not remove LDAP folder Signed-off-by: gvenzl --- README.md | 1 - install.1840.sh | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index beadd56..a313cca 100644 --- a/README.md +++ b/README.md @@ -320,7 +320,6 @@ The slim images aims for smallest possible image size with only the Oracle Datab * `TNS` demo samples have been removed (`$ORACLE_HOME/network/admin/samples`) * `NLS LBuilder` directory has been removed (`$ORACLE_HOME/nls/lbuilder`) * The hs directory has been removed (`$ORACLE_HOME/hs`) -* The ldap directory has been removed (`$ORACLE_HOME/ldap`) * The precomp directory has been removed (`$ORACLE_HOME/precomp`) * The rdbms/public directory has been removed (`$ORACLE_HOME/rdbms/public`) * The rdbms/xml directory has been removed (`$ORACLE_HOME/rdbms/xml`) diff --git a/install.1840.sh b/install.1840.sh index 4c4d01b..c0b7686 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -952,8 +952,10 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove hs directory rm -r "${ORACLE_HOME}"/hs - # Remove ldap directory - rm -r "${ORACLE_HOME}"/ldap + # DO NOT remove ldap directory. + # Some message files (mesg/*.msb) are needed for ALTER USER ... IDENTIFIED BY + # TODO: Clean up not needed ldap files + #rm -r "${ORACLE_HOME}"/ldap # Remove precomp directory rm -r "${ORACLE_HOME}"/precomp From efcbd362680e99defe93db0dd059cae78200b70f Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 2 Jul 2021 21:45:42 -0700 Subject: [PATCH 092/192] Update test descriptions Signed-off-by: gvenzl --- tests/run_container_1840.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/run_container_1840.sh b/tests/run_container_1840.sh index e33b687..5a7c674 100755 --- a/tests/run_container_1840.sh +++ b/tests/run_container_1840.sh @@ -37,8 +37,8 @@ runContainerTest "18 REGULAR image" "18" "gvenzl/oracle-xe:18" runContainerTest "REGULAR image" "latest" "gvenzl/oracle-xe" runContainerTest "18.4.0 SLIM image" "1840-slim" "gvenzl/oracle-xe:18.4.0-slim" -runContainerTest "18.4.0 SLIM image" "18-slim" "gvenzl/oracle-xe:18-slim" -runContainerTest "18.4.0 SLIM image" "slim" "gvenzl/oracle-xe:slim" +runContainerTest "18 SLIM image" "18-slim" "gvenzl/oracle-xe:18-slim" +runContainerTest "SLIM image" "slim" "gvenzl/oracle-xe:slim" ################################# From b1312f7a4153214362ff235ce58de1b0abf25e7d Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 3 Jul 2021 00:14:43 -0700 Subject: [PATCH 093/192] SQLPlus: fail on error Signed-off-by: gvenzl --- container-entrypoint.sh | 25 +++++++++++++++++-------- resetPassword | 10 +++++++--- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/container-entrypoint.sh b/container-entrypoint.sh index 58746c1..c10f083 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -26,13 +26,16 @@ set -Eeuo pipefail # Stop container when SIGINT or SIGTERM is received ########### stop database helper function ############ function stop_database() { - echo "CONTAINER: shutdown request received." - echo "CONTAINER: shutting down database!" + echo "CONTAINER: shutdown request received." + echo "CONTAINER: shutting down database!" - lsnrctl stop - sqlplus -s / as sysdba < Date: Sat, 10 Jul 2021 07:30:27 -0700 Subject: [PATCH 094/192] Remove OJVMSYS leftover Signed-off-by: gvenzl --- install.1840.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/install.1840.sh b/install.1840.sh index c0b7686..aaaa7fb 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -343,7 +343,7 @@ EOF ALTER SESSION SET CONTAINER=PDB\$SEED; - -- Remove Java VM packages leftovers + -- Remove Java VM leftovers exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JAVAVM_SYS'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JVMRJBCINV'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE DBMS_JAVA_MISC'); @@ -357,6 +357,7 @@ EOF exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$SEQ\$'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP TRIGGER OJDS\$ROLE_TRIGGER\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER OJVMSYS'); -- Oracle Multimedia leftovers exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); @@ -430,7 +431,7 @@ EOF ALTER SESSION SET CONTAINER=XEPDB1; - -- Remove Java VM packages leftovers + -- Remove Java VM leftovers exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JAVAVM_SYS'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JVMRJBCINV'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE DBMS_JAVA_MISC'); @@ -444,6 +445,7 @@ EOF exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$SEQ\$'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP TRIGGER OJDS\$ROLE_TRIGGER\$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER OJVMSYS'); -- Oracle Multimedia leftovers exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); From 4a65c0dde340627a209921bf9d38bcbc92689f66 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 10 Jul 2021 08:48:33 -0700 Subject: [PATCH 095/192] ER #23: Support ORACLE_DATABASE Signed-off-by: gvenzl --- README.md | 8 +- container-entrypoint.sh | 68 +++++++++- tests/functions.sh | 7 +- ...ainer_11202.sh => test_container_11202.sh} | 2 +- ...ntainer_1840.sh => test_container_1840.sh} | 119 ++++++++++++++++-- 5 files changed, 192 insertions(+), 12 deletions(-) rename tests/{run_container_11202.sh => test_container_11202.sh} (99%) rename tests/{run_container_1840.sh => test_container_1840.sh} (64%) diff --git a/README.md b/README.md index a313cca..1e86396 100644 --- a/README.md +++ b/README.md @@ -46,14 +46,19 @@ The 11gR2 (11.2.0.2) Oracle Database version stores the database data files unde ## Environment variables +Environment variables allow you to customize your container. Note that these variables will only be considered during the database initialization (first container startup). + ### `ORACLE_PASSWORD` This variable is mandatory for the first container startup and specifies the password for the Oracle Database `SYS` and `SYSTEM` users. ### `ORACLE_RANDOM_PASSWORD` This is an optional variable. Set this variable to a non-empty value, like `yes`, to generate a random initial password for the `SYS` and `SYSTEM` users. The generated password will be printed to stdout (`ORACLE PASSWORD FOR SYS AND SYSTEM: ...`). +### `ORACLE_DATABASE` +This is an optional variable. Set this variable to a non-empty string to create a new pluggable database with the name specified in this variable. **Note:** creating a new database can add several additional seconds to the initial container startup. If you do not want that additional startup time, use the already existing `XEPDB1` database instead. + ### `APP_USER` -This is an optional variable. Set this variable to a non-empty string to create a new database schema user with the name specified in this variable. This variable requires `APP_USER_PASSWORD` or `APP_USER_PASSWORD_FILE` to be specified as well. +This is an optional variable. Set this variable to a non-empty string to create a new database schema user with the name specified in this variable. The user will be created in the default `XEPDB1` pluggable database. If `ORACLE_DATABASE` has been specified, the user will also be created in that pluggable database. This variable requires `APP_USER_PASSWORD` or `APP_USER_PASSWORD_FILE` to be specified as well. ### `APP_USER_PASSWORD` This is an optional variable. Set this variable to a non-empty string to define a password for the database schema user specified by `APP_USER`. This variable requires `APP_USER` to be specified as well. @@ -100,6 +105,7 @@ This mechanism is supported for: * `ORACLE_PASSWORD` * `APP_USER_PASSWORD` +* `ORACLE_DATABASE` ## Initialization scripts If you would like to perform additional initialization of the database running in a container, you can add one or more `*.sql`, `*.sql.gz`, `*.sql.zip` or `*.sh` files under `/container-entrypoint-initdb.d` (creating the directory if necessary). After the database setup is completed, these files will be executed automatically in alphabetical order. diff --git a/container-entrypoint.sh b/container-entrypoint.sh index c10f083..a09f3f4 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -84,7 +84,16 @@ function setup_env_vars() { if [ -d "${ORACLE_BASE}/oradata/dbconfig/${ORACLE_SID}" ]; then DATABASE_ALREADY_EXISTS="true"; else - # Allow for ORACLE_PASSWORD and/or ORACLE_PASSWORD_FILE + + # Variable is only supported for >=18c + if [[ "${ORACLE_VERSION}" = "11.2"* ]]; then + unset "ORACLE_DATABASE" + else + # Allow for ORACLE_DATABASE or ORACLE_DATABASE_FILE + file_env "ORACLE_DATABASE" + fi; + + # Allow for ORACLE_PASSWORD or ORACLE_PASSWORD_FILE file_env "ORACLE_PASSWORD" # Password is mandatory for first container start @@ -100,7 +109,7 @@ function setup_env_vars() { exit 1; fi; - # Allow for APP_USER_PASSWORD and/or APP_USER_PASSWORD_FILE + # Allow for APP_USER_PASSWORD or APP_USER_PASSWORD_FILE file_env "APP_USER_PASSWORD" # Check whether both variables have been specified. @@ -240,6 +249,38 @@ function run_custom_scripts { fi; } +# Create pluggable database +function create_database { + + echo "CONTAINER: Creating pluggable database." + + RANDOM_PDBADIN_PASSWORD=$(date +%s | sha256sum | base64 | head -c 8) + + PDB_CREATE_START_TMS=$(date '+%s') + + sqlplus -s / as sysdba <=18c) + if [ -n "${ORACLE_DATABASE:-}" ]; then + sqlplus -s / as sysdba <=18c requirement + if [ -n "${ORACLE_DATABASE:-}" ]; then + create_database + fi; + # Check whether app user should be created # setup_env_vars has already validated environment variables if [ -n "${APP_USER:-}" ]; then @@ -338,6 +401,7 @@ if healthcheck.sh; then # For backwards compatibility run_custom_scripts /docker-entrypoint-initdb.d + # Database already initialized else # Password was passed on for container start but DB is already initialized, ignoring. diff --git a/tests/functions.sh b/tests/functions.sh index 6e3f841..84f1aea 100755 --- a/tests/functions.sh +++ b/tests/functions.sh @@ -79,6 +79,7 @@ function runContainerTest { APP_USER_CMD="" APP_USER_PASSWORD_CMD="" ORA_PWD_CMD="${ORA_PWD_CMD:--e ORACLE_PASSWORD=LetsTest1}" + ORACLE_DATABASE_CMD="" if [ -n "${APP_USER:-}" ]; then APP_USER_CMD="-e APP_USER=${APP_USER}" @@ -88,11 +89,15 @@ function runContainerTest { APP_USER_PASSWORD_CMD="-e APP_USER_PASSWORD=${APP_USER_PASSWORD}" fi; + if [ -n "${ORACLE_DATABASE:-}" ]; then + ORACLE_DATABASE_CMD="-e ORACLE_DATABASE=${ORACLE_DATABASE}" + fi; + echo "TEST ${TEST_NAME}: Started" echo "" # Run and start container - podman run -d --name ${CONTAINER_NAME} ${ORA_PWD_CMD} ${APP_USER_CMD} ${APP_USER_PASSWORD_CMD} ${IMAGE} >/dev/null + podman run -d --name ${CONTAINER_NAME} ${ORA_PWD_CMD} ${APP_USER_CMD} ${APP_USER_PASSWORD_CMD} ${ORACLE_DATABASE_CMD} ${IMAGE} >/dev/null # Check whether Oracle DB came up successfully if checkDB "${CONTAINER_NAME}"; then diff --git a/tests/run_container_11202.sh b/tests/test_container_11202.sh similarity index 99% rename from tests/run_container_11202.sh rename to tests/test_container_11202.sh index 38cb05f..628feaf 100755 --- a/tests/run_container_11202.sh +++ b/tests/test_container_11202.sh @@ -1,7 +1,7 @@ #!/bin/bash # Since: January, 2021 # Author: gvenzl -# Name: run_container_11202.sh +# Name: test_container_11202.sh # Description: Run container test scripts for Oracle DB XE 11.2.0.2 # # Copyright 2021 Gerald Venzl diff --git a/tests/run_container_1840.sh b/tests/test_container_1840.sh similarity index 64% rename from tests/run_container_1840.sh rename to tests/test_container_1840.sh index 5a7c674..7cff8b3 100755 --- a/tests/run_container_1840.sh +++ b/tests/test_container_1840.sh @@ -1,7 +1,7 @@ #!/bin/bash # Since: March, 2021 # Author: gvenzl -# Name: run_container_1840.sh +# Name: test_container_1840.sh # Description: Run container test scripts for Oracle DB XE 18.4.0 # # Copyright 2021 Gerald Venzl @@ -70,9 +70,6 @@ result=$(podman exec -i ${CONTAINER_NAME} sqlplus -s system/"${ORA_PWD}" < Date: Sat, 10 Jul 2021 10:04:10 -0700 Subject: [PATCH 096/192] Add checkpoint after UNDO switch Signed-off-by: gvenzl --- install.1840.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/install.1840.sh b/install.1840.sh index aaaa7fb..d644bb4 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -754,6 +754,7 @@ EOF -- Use new temporary UNDO tablespace (so that old one can be deleted) ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP'; + ALTER SYSTEM CHECKPOINT; -- Delete old UNDO tablespace DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES; @@ -764,6 +765,7 @@ EOF -- Use newly created UNDO tablespace ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'; + ALTER SYSTEM CHECKPOINT; -- Drop temporary UNDO tablespace DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; From 3c43d3f2f62fb2853a74a6ca25393e1c9e0e424d Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 10 Jul 2021 10:05:11 -0700 Subject: [PATCH 097/192] Remove GPX, standalone, can be downloaded Signed-off-by: gvenzl --- README.md | 1 + install.1840.sh | 3 +++ 2 files changed, 4 insertions(+) diff --git a/README.md b/README.md index 1e86396..cfb4b70 100644 --- a/README.md +++ b/README.md @@ -285,6 +285,7 @@ The regular image strives to balance between the functionality required by most * `JServer JAVA Virtual Machine` has been removed * `Oracle OLAP API` has been removed * `OLAP Analytic Workspace` has been removed +* `Oracle PGX` has been removed (`$ORACLE_HOME/md/property_graph`) * `OPatch` utility has been removed (`$ORACLE_HOME/OPatch`) * `QOpatch` utility has been removed (`$ORACLE_HOME/QOpatch`) * `Oracle Database Assistants` have been removed (`$ORACLE_HOME/assistants`) diff --git a/install.1840.sh b/install.1840.sh index d644bb4..d0d54d0 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -928,6 +928,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove olap rm -r "${ORACLE_HOME}"/olap + # Remove property graph (standalone component that can be downloaded from the web) + rm -r "${ORACLE_HOME}"/md/property_graph + # Remove not needed packages # Use rpm instad of microdnf to allow removing packages regardless of their dependencies rpm -e --nodeps glibc-devel glibc-headers kernel-headers libpkgconf libxcrypt-devel \ From a58b089cbeddc5fbae89631d4c00ca51be8aed76 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 10 Jul 2021 16:11:10 -0700 Subject: [PATCH 098/192] Update container test run script Signed-off-by: gvenzl --- tests/all_container_tests.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/all_container_tests.sh b/tests/all_container_tests.sh index 150545d..3200623 100755 --- a/tests/all_container_tests.sh +++ b/tests/all_container_tests.sh @@ -22,5 +22,5 @@ # Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ set -Eeuo pipefail -./run_container_11202.sh -./run_container_1840.sh +./test_container_11202.sh +./test_container_1840.sh From 47b34d232a3c71758253d7258251a2316e555129 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 10 Jul 2021 16:23:44 -0700 Subject: [PATCH 099/192] Update ReadMe for OARCLE_DATABASE 18c only Signed-off-by: gvenzl --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cfb4b70..b2ebb1a 100644 --- a/README.md +++ b/README.md @@ -54,8 +54,10 @@ This variable is mandatory for the first container startup and specifies the pas ### `ORACLE_RANDOM_PASSWORD` This is an optional variable. Set this variable to a non-empty value, like `yes`, to generate a random initial password for the `SYS` and `SYSTEM` users. The generated password will be printed to stdout (`ORACLE PASSWORD FOR SYS AND SYSTEM: ...`). -### `ORACLE_DATABASE` -This is an optional variable. Set this variable to a non-empty string to create a new pluggable database with the name specified in this variable. **Note:** creating a new database can add several additional seconds to the initial container startup. If you do not want that additional startup time, use the already existing `XEPDB1` database instead. +### `ORACLE_DATABASE` (for 18c only) +This is an optional variable. Set this variable to a non-empty string to create a new pluggable database with the name specified in this variable. +**Note:** this variable is only supported for Oracle Database XE 18c as 11g does not support pluggable databases. +**Note:** creating a new database will add to the initial container startup time. If you do not want that additional startup time, use the already existing `XEPDB1` database instead. ### `APP_USER` This is an optional variable. Set this variable to a non-empty string to create a new database schema user with the name specified in this variable. The user will be created in the default `XEPDB1` pluggable database. If `ORACLE_DATABASE` has been specified, the user will also be created in that pluggable database. This variable requires `APP_USER_PASSWORD` or `APP_USER_PASSWORD_FILE` to be specified as well. @@ -103,8 +105,8 @@ docker run --name some-oracle -e ORACLE_PASSWORD_FILE=/run/secrets/oracle-passwd This mechanism is supported for: -* `ORACLE_PASSWORD` * `APP_USER_PASSWORD` +* `ORACLE_PASSWORD` * `ORACLE_DATABASE` ## Initialization scripts From 23f83f81ab54ef6e2c526a00493a38c07872e762 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 10 Jul 2021 16:28:33 -0700 Subject: [PATCH 100/192] Update ReadMe with SLIM image Signed-off-by: gvenzl --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b2ebb1a..8fd1663 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ Oracle Database Express Edition Container / Docker images. # Supported tags and respective `Dockerfile` links * [`18.4.0`, `18`, `latest`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) +* [`18.4.0-slim`, `18-slim`, `slim`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) * [`18.4.0-full`, `18-full`, `full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) * [`11.2.0.2`, `11`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.11202) * [`11.2.0.2-slim`, `11-slim`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.11202) From 9bab1710230da28cc470c5b8552e3a057ca1b4d0 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 10 Jul 2021 17:29:17 -0700 Subject: [PATCH 101/192] Add slim images to upload scripts Signed-off-by: gvenzl --- tests/upload_images.sh | 7 +++++++ tests/upload_images_artifactory.sh | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/tests/upload_images.sh b/tests/upload_images.sh index 1337903..0df70fa 100755 --- a/tests/upload_images.sh +++ b/tests/upload_images.sh @@ -46,6 +46,13 @@ podman push gvenzl/oracle-xe:18.4.0 docker.io/gvenzl/oracle-xe:18.4.0 echo "Upload 18" podman push gvenzl/oracle-xe:18 docker.io/gvenzl/oracle-xe:18 +echo "Upload 18.4.0-slim" +podman push gvenzl/oracle-xe:18.4.0-slim docker.io/gvenzl/oracle-xe:18.4.0-slim +echo "Upload 18-slim" +podman push gvenzl/oracle-xe:18-slim docker.io/gvenzl/oracle-xe:18-slim +echo "Upload slim" +podman push gvenzl/oracle-xe:slim docker.io/gvenzl/oracle-xe:slim + # Upload 11g images echo "Upload 11.2.0.2-full" podman push gvenzl/oracle-xe:11.2.0.2-full docker.io/gvenzl/oracle-xe:11.2.0.2-full diff --git a/tests/upload_images_artifactory.sh b/tests/upload_images_artifactory.sh index 3fd2d5c..de86a89 100755 --- a/tests/upload_images_artifactory.sh +++ b/tests/upload_images_artifactory.sh @@ -43,6 +43,13 @@ podman push gvenzl/oracle-xe:18.4.0 gvenzl.jfrog.io/docker/oracle-xe:18 echo "Upload 18" podman push gvenzl/oracle-xe:18 gvenzl.jfrog.io/docker/oracle-xe:18 +echo "Upload 18.4.0-slim" +podman push gvenzl/oracle-xe:18.4.0-slim gvenzl.jfrog.io/docker/oracle-xe:18.4.0-slim +echo "Upload 18-slim" +podman push gvenzl/oracle-xe:18-slim gvenzl.jfrog.io/docker/oracle-xe:18-slim +echo "Upload slim" +podman push gvenzl/oracle-xe:slim gvenzl.jfrog.io/docker/oracle-xe:slim + # Upload 11g images echo "Upload 11.2.0.2-full" podman push gvenzl/oracle-xe:11.2.0.2-full gvenzl.jfrog.io/docker/oracle-xe:11.2.0.2-full From ee9a5feb2cff9bb4ede624555248332cb651e18c Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 11 Jul 2021 19:29:00 -0700 Subject: [PATCH 102/192] Remove Spatial Signed-off-by: gvenzl --- README.md | 1 + install.1840.sh | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8fd1663..6d43a98 100644 --- a/README.md +++ b/README.md @@ -325,6 +325,7 @@ The slim images aims for smallest possible image size with only the Oracle Datab #### Database components * `Oracle Text` has been uninstalled and removed (`$ORACLE_HOME/ctx`) +* `Oracle Spatial` has been uninstalled and removed (`$ORACLE_HOME/md`) * The demo samples directory has been removed (`$ORACLE_HOME/demo`) * `ODBC` driver samples have been removed (`$ORACLE_HOME/odbc`) * `TNS` demo samples have been removed (`$ORACLE_HOME/network/admin/samples`) diff --git a/install.1840.sh b/install.1840.sh index d0d54d0..81f4a01 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -527,14 +527,21 @@ EOF if [ "${BUILD_MODE}" == "SLIM" ]; then # Needs to be run as 'oracle' user (Perl script otherwise fails #TODO: see whether it can be run with su -c somehow instead) + echo "BUILDER: Removing additional components for SLIM image" su - oracle << EOF cd "${ORACLE_HOME}"/rdbms/admin # Remove Oracle Text + echo "BUILDER: Removing Oracle Text" "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_text_pdbs -C 'CDB\$ROOT' -d "${ORACLE_HOME}"/ctx/admin catnoctx.sql "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_text_cdb -c 'CDB\$ROOT' -d "${ORACLE_HOME}"/ctx/admin catnoctx.sql + # Remove Spatial + echo "BUILDER: Removing Oracle Spatial" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_spatial_pdbs -d "${ORACLE_HOME}"/md/admin mddins.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_spatial_cdb -d "${ORACLE_HOME}"/md/admin mddins.sql + # Recompile echo "BUILDER: Recompiling database objects" "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_recompile_all_objects -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql @@ -558,6 +565,10 @@ EOF exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); + -- Remove Spatial leftover components + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDDATA CASCADE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDSYS CASCADE'); + -- Open PDB\$SEED to READ WRITE mode (catcon put it into READY ONLY again) ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; @@ -570,6 +581,9 @@ EOF exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); + -- Remove Spatial leftover components + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDDATA CASCADE'); + ALTER SESSION SET CONTAINER=XEPDB1; -- Oracle Text leftovers @@ -578,6 +592,9 @@ EOF exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); + -- Remove Spatial leftover components + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDDATA CASCADE'); + exit; EOF @@ -586,7 +603,6 @@ EOF ##################### # Shrink data files # ##################### - su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Exit on any errors @@ -973,6 +989,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove rdbms/jlib directory rm -r "${ORACLE_HOME}"/rdbms/xml + # Remove Spatial + rm -r "${ORACLE_HOME}"/md + # TODO fi; From 2ffe8c0cb89de0cdcf99a7ed4a706f6430783d73 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 11 Jul 2021 19:51:54 -0700 Subject: [PATCH 103/192] Remove Oracle R Signed-off-by: gvenzl --- README.md | 1 + install.1840.sh | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/README.md b/README.md index 6d43a98..90e5c72 100644 --- a/README.md +++ b/README.md @@ -334,6 +334,7 @@ The slim images aims for smallest possible image size with only the Oracle Datab * The precomp directory has been removed (`$ORACLE_HOME/precomp`) * The rdbms/public directory has been removed (`$ORACLE_HOME/rdbms/public`) * The rdbms/xml directory has been removed (`$ORACLE_HOME/rdbms/xml`) +* `Oracle R` has been removed (`$ORACLE_HOME/R`) ## 11g XE diff --git a/install.1840.sh b/install.1840.sh index 81f4a01..b66e67e 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -992,6 +992,10 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove Spatial rm -r "${ORACLE_HOME}"/md + # Remove Oracle R + rm -r "${ORACLE_HOME}"/R + rm "${ORACLE_HOME}"/bin/ORE + # TODO fi; From 55fcd32e1f00f3a4f00307d4bf1131e9f831c564 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 11 Jul 2021 19:55:26 -0700 Subject: [PATCH 104/192] Remove Cluster Ready Services (crs) Signed-off-by: gvenzl --- README.md | 1 + install.1840.sh | 3 +++ 2 files changed, 4 insertions(+) diff --git a/README.md b/README.md index 90e5c72..067802e 100644 --- a/README.md +++ b/README.md @@ -299,6 +299,7 @@ The regular image strives to balance between the functionality required by most * Intel Math Kernel libraries have been removed (`$ORACLE_HOME/lib/libmkl_*`) * Other utilities have been removed (`$ORACLE_HOME/lib/*.zip`) * Additional Java libraries have been removed (`$ORACLE_HOME/rdbms/jlib`) +* The `Cluster Ready Services` directory has been removed (`$ORACLE_HOME/crs`) #### Database settings diff --git a/install.1840.sh b/install.1840.sh index b66e67e..6c333be 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -947,6 +947,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove property graph (standalone component that can be downloaded from the web) rm -r "${ORACLE_HOME}"/md/property_graph + # Remove Cluster Ready Services + rm -r "${ORACLE_HOME}"/crs + # Remove not needed packages # Use rpm instad of microdnf to allow removing packages regardless of their dependencies rpm -e --nodeps glibc-devel glibc-headers kernel-headers libpkgconf libxcrypt-devel \ From 9469d10f7a82bd4114eace0eeccdd87b187a518d Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 11 Jul 2021 20:01:28 -0700 Subject: [PATCH 105/192] Remove Clsuter Verification Utility Signed-off-by: gvenzl --- README.md | 1 + install.1840.sh | 3 +++ 2 files changed, 4 insertions(+) diff --git a/README.md b/README.md index 067802e..43a3677 100644 --- a/README.md +++ b/README.md @@ -300,6 +300,7 @@ The regular image strives to balance between the functionality required by most * Other utilities have been removed (`$ORACLE_HOME/lib/*.zip`) * Additional Java libraries have been removed (`$ORACLE_HOME/rdbms/jlib`) * The `Cluster Ready Services` directory has been removed (`$ORACLE_HOME/crs`) +* The `Cluster Verification Utility` directory has been removed (`$ORACLE_HOME/cv`) #### Database settings diff --git a/install.1840.sh b/install.1840.sh index 6c333be..45a9b37 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -950,6 +950,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove Cluster Ready Services rm -r "${ORACLE_HOME}"/crs + # Remove Cluster Verification Utility (CVU) + rm -r "${ORACLE_HOME}"/cv + # Remove not needed packages # Use rpm instad of microdnf to allow removing packages regardless of their dependencies rpm -e --nodeps glibc-devel glibc-headers kernel-headers libpkgconf libxcrypt-devel \ From 903efae33cc1afb214f45341148f39f5463aa5c1 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 11 Jul 2021 20:03:09 -0700 Subject: [PATCH 106/192] Remove deinstall directory Signed-off-by: gvenzl --- README.md | 1 + install.1840.sh | 3 +++ 2 files changed, 4 insertions(+) diff --git a/README.md b/README.md index 43a3677..2c6ad7b 100644 --- a/README.md +++ b/README.md @@ -337,6 +337,7 @@ The slim images aims for smallest possible image size with only the Oracle Datab * The rdbms/public directory has been removed (`$ORACLE_HOME/rdbms/public`) * The rdbms/xml directory has been removed (`$ORACLE_HOME/rdbms/xml`) * `Oracle R` has been removed (`$ORACLE_HOME/R`) +* The deinstall directory has been removed (`$ORACLE_HOME/deinstall`) ## 11g XE diff --git a/install.1840.sh b/install.1840.sh index 45a9b37..3e871ee 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -1002,6 +1002,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then rm -r "${ORACLE_HOME}"/R rm "${ORACLE_HOME}"/bin/ORE + # Remove deinstall directory + rm -r "${ORACLE_HOME}"/deinstall + # TODO fi; From 97ecb4cf66ba6c170a984c85f9ca3a3bd0083048 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 11 Jul 2021 20:08:47 -0700 Subject: [PATCH 107/192] Remove Oracle Database Provider for Distributed Relational Database Architecture (DRDA) Signed-off-by: gvenzl --- README.md | 1 + install.1840.sh | 3 +++ 2 files changed, 4 insertions(+) diff --git a/README.md b/README.md index 2c6ad7b..fea70d6 100644 --- a/README.md +++ b/README.md @@ -338,6 +338,7 @@ The slim images aims for smallest possible image size with only the Oracle Datab * The rdbms/xml directory has been removed (`$ORACLE_HOME/rdbms/xml`) * `Oracle R` has been removed (`$ORACLE_HOME/R`) * The deinstall directory has been removed (`$ORACLE_HOME/deinstall`) +* The `Oracle Database Provider for Distributed Relational Database Architecture (DRDA)` has been removed (`$ORACLE_HOME/drdaas`) ## 11g XE diff --git a/install.1840.sh b/install.1840.sh index 3e871ee..8c4ab47 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -1005,6 +1005,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove deinstall directory rm -r "${ORACLE_HOME}"/deinstall + # Remove Oracle Database Provider for Distributed Relational Database Architecture (DRDA) + rm -r "${ORACLE_HOME}"/drdaas + # TODO fi; From 9a510415b7e4cb268ae9c992003ba818ade8d54d Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 11 Jul 2021 20:12:50 -0700 Subject: [PATCH 108/192] Remove install directory Signed-off-by: gvenzl --- README.md | 1 + install.1840.sh | 3 +++ 2 files changed, 4 insertions(+) diff --git a/README.md b/README.md index fea70d6..d8c722e 100644 --- a/README.md +++ b/README.md @@ -301,6 +301,7 @@ The regular image strives to balance between the functionality required by most * Additional Java libraries have been removed (`$ORACLE_HOME/rdbms/jlib`) * The `Cluster Ready Services` directory has been removed (`$ORACLE_HOME/crs`) * The `Cluster Verification Utility` directory has been removed (`$ORACLE_HOME/cv`) +* The `install` directory has been removed (`$ORACLE_HOME/install`) #### Database settings diff --git a/install.1840.sh b/install.1840.sh index 8c4ab47..b5a9619 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -953,6 +953,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove Cluster Verification Utility (CVU) rm -r "${ORACLE_HOME}"/cv + # Remove install directory + rm -r "${ORACLE_HOME}"/install + # Remove not needed packages # Use rpm instad of microdnf to allow removing packages regardless of their dependencies rpm -e --nodeps glibc-devel glibc-headers kernel-headers libpkgconf libxcrypt-devel \ From 810fd691edb9cc0b1bf6792867e757b2e85fe225 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 11 Jul 2021 20:13:29 -0700 Subject: [PATCH 109/192] Update ReadMe Signed-off-by: gvenzl --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d8c722e..2335b2f 100644 --- a/README.md +++ b/README.md @@ -334,11 +334,11 @@ The slim images aims for smallest possible image size with only the Oracle Datab * `TNS` demo samples have been removed (`$ORACLE_HOME/network/admin/samples`) * `NLS LBuilder` directory has been removed (`$ORACLE_HOME/nls/lbuilder`) * The hs directory has been removed (`$ORACLE_HOME/hs`) -* The precomp directory has been removed (`$ORACLE_HOME/precomp`) -* The rdbms/public directory has been removed (`$ORACLE_HOME/rdbms/public`) -* The rdbms/xml directory has been removed (`$ORACLE_HOME/rdbms/xml`) +* The `precomp` directory has been removed (`$ORACLE_HOME/precomp`) +* The `rdbms/public` directory has been removed (`$ORACLE_HOME/rdbms/public`) +* The `rdbms/xml` directory has been removed (`$ORACLE_HOME/rdbms/xml`) * `Oracle R` has been removed (`$ORACLE_HOME/R`) -* The deinstall directory has been removed (`$ORACLE_HOME/deinstall`) +* The `deinstall` directory has been removed (`$ORACLE_HOME/deinstall`) * The `Oracle Database Provider for Distributed Relational Database Architecture (DRDA)` has been removed (`$ORACLE_HOME/drdaas`) ## 11g XE From 5fea899c23274da717072b8890b5219e78b35c40 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 11 Jul 2021 20:22:29 -0700 Subject: [PATCH 110/192] Remove 'ord' and 'ordim' directories Signed-off-by: gvenzl --- README.md | 4 +++- install.1840.sh | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2335b2f..a3483ad 100644 --- a/README.md +++ b/README.md @@ -328,7 +328,6 @@ The slim images aims for smallest possible image size with only the Oracle Datab #### Database components * `Oracle Text` has been uninstalled and removed (`$ORACLE_HOME/ctx`) -* `Oracle Spatial` has been uninstalled and removed (`$ORACLE_HOME/md`) * The demo samples directory has been removed (`$ORACLE_HOME/demo`) * `ODBC` driver samples have been removed (`$ORACLE_HOME/odbc`) * `TNS` demo samples have been removed (`$ORACLE_HOME/network/admin/samples`) @@ -337,6 +336,9 @@ The slim images aims for smallest possible image size with only the Oracle Datab * The `precomp` directory has been removed (`$ORACLE_HOME/precomp`) * The `rdbms/public` directory has been removed (`$ORACLE_HOME/rdbms/public`) * The `rdbms/xml` directory has been removed (`$ORACLE_HOME/rdbms/xml`) +* `Oracle Spatial` has been uninstalled and removed (`$ORACLE_HOME/md`) +* The `ord` directory has been removed (`$ORACLE_HOME/ord`) +* The `ordim` directory has been removed (`$ORACLE_HOME/ordim`) * `Oracle R` has been removed (`$ORACLE_HOME/R`) * The `deinstall` directory has been removed (`$ORACLE_HOME/deinstall`) * The `Oracle Database Provider for Distributed Relational Database Architecture (DRDA)` has been removed (`$ORACLE_HOME/drdaas`) diff --git a/install.1840.sh b/install.1840.sh index b5a9619..daf2022 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -1001,6 +1001,12 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove Spatial rm -r "${ORACLE_HOME}"/md + # Remove ord directory + rm -r "${ORACLE_HOME}"/ord + + # Remove ordim directory + rm -r "${ORACLE_HOME}"/ordim + # Remove Oracle R rm -r "${ORACLE_HOME}"/R rm "${ORACLE_HOME}"/bin/ORE From f29eadf00947e759a1ff255dbdee6dc68ffc64bf Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 11 Jul 2021 20:30:24 -0700 Subject: [PATCH 111/192] Remove Universal Installer Signed-off-by: gvenzl --- README.md | 1 + install.1840.sh | 3 +++ 2 files changed, 4 insertions(+) diff --git a/README.md b/README.md index a3483ad..a6aba3c 100644 --- a/README.md +++ b/README.md @@ -302,6 +302,7 @@ The regular image strives to balance between the functionality required by most * The `Cluster Ready Services` directory has been removed (`$ORACLE_HOME/crs`) * The `Cluster Verification Utility` directory has been removed (`$ORACLE_HOME/cv`) * The `install` directory has been removed (`$ORACLE_HOME/install`) +* The `Oracle Universal installer` has been removed (`$ORACLE_HOME/oui`) #### Database settings diff --git a/install.1840.sh b/install.1840.sh index daf2022..70720b5 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -1017,6 +1017,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove Oracle Database Provider for Distributed Relational Database Architecture (DRDA) rm -r "${ORACLE_HOME}"/drdaas + # Remove Oracle Universal Installer + rm -r "${ORACLE_HOME}"/oui + # TODO fi; From b7d3fa8e98af5d080b201e3f57eca31eba3de5d3 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 17 Jul 2021 11:09:01 -0700 Subject: [PATCH 112/192] Remove additional components Signed-off-by: gvenzl --- README.md | 9 +++++++-- install.1840.sh | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a6aba3c..8779215 100644 --- a/README.md +++ b/README.md @@ -296,13 +296,17 @@ The regular image strives to balance between the functionality required by most * The `inventory` directory has been removed (`$ORACLE_HOME/inventory`) * `JDBC` drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`) * `Universal Connection Pool` driver has been removed (`$ORACLE_HOME/ucp`) -* Intel Math Kernel libraries have been removed (`$ORACLE_HOME/lib/libmkl_*`) -* Other utilities have been removed (`$ORACLE_HOME/lib/*.zip`) +* `Intel Math Kernel` libraries have been removed (`$ORACLE_HOME/lib/libmkl_*`) +* Zip files in lib/ have been removed (`$ORACLE_HOME/lib/*.zip`) +* Jar files in lib/ have been removed (`$ORACLE_HOME/lib/*.jar`) * Additional Java libraries have been removed (`$ORACLE_HOME/rdbms/jlib`) * The `Cluster Ready Services` directory has been removed (`$ORACLE_HOME/crs`) * The `Cluster Verification Utility` directory has been removed (`$ORACLE_HOME/cv`) * The `install` directory has been removed (`$ORACLE_HOME/install`) * The `Oracle Universal installer` has been removed (`$ORACLE_HOME/oui`) +* The `network/jlib` directory has been remove (`$ORACLE_HOME/network/jlib`) +* The `network/tools` directory has been remove (`$ORACLE_HOME/network/tools`) +* The `Oracle Process Manager and Notification` directory has been removed (`$ORACLE_HOME/opmn`) #### Database settings @@ -343,6 +347,7 @@ The slim images aims for smallest possible image size with only the Oracle Datab * `Oracle R` has been removed (`$ORACLE_HOME/R`) * The `deinstall` directory has been removed (`$ORACLE_HOME/deinstall`) * The `Oracle Database Provider for Distributed Relational Database Architecture (DRDA)` has been removed (`$ORACLE_HOME/drdaas`) +* `Perl` has been removed (`$ORACLE_HOME/perl`) ## 11g XE diff --git a/install.1840.sh b/install.1840.sh index 70720b5..262411b 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -923,6 +923,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove zip artifacts in $ORACLE_HOME/lib rm "${ORACLE_HOME}"/lib/*.zip + # Remove lib/*.jar files + rm "${ORACLE_HOME}"/lib/*.jar + # Remove Multimedia rm -r "${ORACLE_HOME}"/ord/im @@ -956,6 +959,15 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove install directory rm -r "${ORACLE_HOME}"/install + # Remove network/jlib directory + rm -r "${ORACLE_HOME}"/network/jlib + + # Remove network/tools directory + rm -r "${ORACLE_HOME}"/network/tools + + # Remove opmn directory + rm -r "${ORACLE_HOME}"/opmn + # Remove not needed packages # Use rpm instad of microdnf to allow removing packages regardless of their dependencies rpm -e --nodeps glibc-devel glibc-headers kernel-headers libpkgconf libxcrypt-devel \ @@ -1020,6 +1032,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove Oracle Universal Installer rm -r "${ORACLE_HOME}"/oui + # Remove Perl + rm -r "${ORACLE_HOME}"/perl + # TODO fi; From e3bde873e5daf49cf6fdb62dd5c8eeed98045b58 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 17 Jul 2021 11:09:27 -0700 Subject: [PATCH 113/192] update option flag for build script Signed-off-by: gvenzl --- buildContainerImage.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/buildContainerImage.sh b/buildContainerImage.sh index 16b4198..fd90a35 100755 --- a/buildContainerImage.sh +++ b/buildContainerImage.sh @@ -30,19 +30,19 @@ SKIP_CHECKSUM="false" function usage() { cat << EOF -Usage: buildContainerImage.sh [-f | -n | -s] [-v version] [-i] [-o] [container build option] +Usage: buildContainerImage.sh [-f | -r | -s] [-v version] [-i] [-o] [container build option] Builds a container image for Oracle Database XE. Parameters: -f: creates a 'full' image - -n: creates a regular image (default) + -r: creates a regular image (default) -s: creates a 'slim' image -v: version of Oracle Database XE to build Choose one of: 11.2.0.2, 18.4.0 -i: ignores checksum test -o: passes on container build option -* select only one flavor: -f, -n, or -s +* select only one flavor: -f, -r, or -s Apache License, Version 2.0 @@ -64,7 +64,7 @@ while getopts "hfnsv:io:" optname; do "f") FLAVOR="FULL" ;; - "n") + "r") FLAVOR="REGULAR" ;; "s") From 1b6613328e3d6c31222253c83372f1a920517abc Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 28 Aug 2021 12:43:12 -0700 Subject: [PATCH 114/192] Fix typo in sqlnet.ora Signed-off-by: gvenzl --- install.11202.sh | 2 +- install.1840.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index cd094fa..72697bc 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -164,7 +164,7 @@ EXTPROC_CONNECTION_DATA = " > "${ORACLE_HOME}/network/admin/tnsnames.ora" # sqlnet.ora -echo "NAME.DIRECTORY_PATH= (EZCONNECT, TNSNAMES)" > "${ORACLE_HOME}"/network/admin/sqlnet.ora +echo "NAMES.DIRECTORY_PATH = (EZCONNECT, TNSNAMES)" > "${ORACLE_HOME}"/network/admin/sqlnet.ora chown -R oracle:dba "${ORACLE_HOME}"/network/admin diff --git a/install.1840.sh b/install.1840.sh index 262411b..a0b2a59 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -138,7 +138,7 @@ EXTPROC_CONNECTION_DATA = " > "${ORACLE_HOME}"/network/admin/tnsnames.ora # sqlnet.ora -echo "NAME.DIRECTORY_PATH= (EZCONNECT, TNSNAMES)" > "${ORACLE_HOME}"/network/admin/sqlnet.ora +echo "NAMES.DIRECTORY_PATH = (EZCONNECT, TNSNAMES)" > "${ORACLE_HOME}"/network/admin/sqlnet.ora chown -R oracle:dba "${ORACLE_HOME}"/network/admin From c8bc2036a98d9f947df105542224a548da596fdd Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 28 Aug 2021 15:21:31 -0700 Subject: [PATCH 115/192] disable netca Signed-off-by: gvenzl --- install.1840.sh | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/install.1840.sh b/install.1840.sh index a0b2a59..cf56679 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -63,9 +63,9 @@ fi; # (used by the entrypoint script, not the database itself) microdnf -y install unzip gzip -################################ -###### Install Database ######## -################################ +############################################## +###### Install and configure Database ######## +############################################## echo "BUILDER: installing database binaries" @@ -79,12 +79,23 @@ usermod -d ${ORACLE_BASE} oracle sed -i "s/LISTENER_PORT=/LISTENER_PORT=1521/g" /etc/sysconfig/oracle-xe-18c.conf sed -i "s/SKIP_VALIDATIONS=false/SKIP_VALIDATIONS=true/g" /etc/sysconfig/oracle-xe-18c.conf +# Disable netca to avoid "No IP address found" issue +mv "${ORACLE_HOME}"/bin/netca "${ORACLE_HOME}"/bin/netca.bak +echo "exit 0" > "${ORACLE_HOME}"/bin/netca +chmod a+x "${ORACLE_HOME}"/bin/netca + echo "BUILDER: configuring database" # Set random password ORACLE_PASSWORD=$(date '+%s' | sha256sum | base64 | head -c 8) (echo "${ORACLE_PASSWORD}"; echo "${ORACLE_PASSWORD}";) | /etc/init.d/oracle-xe-18c configure +# Stop unconfigured listener +su -p oracle -c "lsnrctl stop" + +# Re-enable netca +mv "${ORACLE_HOME}"/bin/netca.bak "${ORACLE_HOME}"/bin/netca + echo "BUILDER: post config database steps" ############################ @@ -142,6 +153,9 @@ echo "NAMES.DIRECTORY_PATH = (EZCONNECT, TNSNAMES)" > "${ORACLE_HOME}"/network/a chown -R oracle:dba "${ORACLE_HOME}"/network/admin +# Start listener +su -p oracle -c "lsnrctl start" + #################### ### bash_profile ### #################### @@ -885,14 +899,17 @@ rm "${ORACLE_BASE}"/cfgtoollogs/netca/* rm -r "${ORACLE_BASE}"/cfgtoollogs/sqlpatch/* rm "${ORACLE_BASE}"/oraInventory/logs/* rm "${ORACLE_HOME}"/cfgtoollogs/oui/* +rm -r "${ORACLE_HOME}"/log/* # Remove diag files -rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/lck/* -rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/metadata/* -rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/"${ORACLE_SID}"_* -rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/drc"${ORACLE_SID}".log -rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/lck/* -rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/metadata/* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/lck/* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/metadata/* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/"${ORACLE_SID}"_* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/drc"${ORACLE_SID}".log +rm -r "${ORACLE_BASE}"/diag/tnslsnr/* + +# TODO: clean up os files +# /var/log/lastlog # Remove additional files for NOMRAL and SLIM builds if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then From d89c038e190366d7fde35d4422e21e4cebbb07f8 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 28 Aug 2021 16:17:47 -0700 Subject: [PATCH 116/192] Register new PDB with Listener Signed-off-by: gvenzl --- container-entrypoint.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/container-entrypoint.sh b/container-entrypoint.sh index a09f3f4..f231e68 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -269,8 +269,12 @@ function create_database { DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/${ORACLE_DATABASE}/users01.dbf' \ SIZE 1m AUTOEXTEND ON NEXT 10m MAXSIZE UNLIMITED; + -- Open PDB and save state ALTER PLUGGABLE DATABASE ${ORACLE_DATABASE} OPEN READ WRITE; ALTER PLUGGABLE DATABASE ${ORACLE_DATABASE} SAVE STATE; + + -- Register new database with listener + ALTER SYSTEM REGISTER; exit; EOF From 41b349730e657a39a8c522fff8bf8cb044c6d564 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 28 Aug 2021 16:38:02 -0700 Subject: [PATCH 117/192] set shared servers to 0 Signed-off-by: gvenzl --- README.md | 2 ++ install.11202.sh | 3 +++ install.1840.sh | 3 +++ 3 files changed, 8 insertions(+) diff --git a/README.md b/README.md index 8779215..172a852 100644 --- a/README.md +++ b/README.md @@ -313,6 +313,7 @@ The regular image strives to balance between the functionality required by most * The `DEFAULT` profile has the following set: * `FAILED_LOGIN_ATTEMPTS=UNLIMITED` * `PASSWORD_LIFE_TIME=UNLIMITED` +* `SHARED_SERVERS=0` #### Operating system @@ -379,6 +380,7 @@ The regular image strives to balance between the functionality required by most * The `DEFAULT` profile has the following set: * `FAILED_LOGIN_ATTEMPTS=UNLIMITED` * `PASSWORD_LIFE_TIME=UNLIMITED` +* `SHARED_SERVERS=0` #### Operating system diff --git a/install.11202.sh b/install.11202.sh index 72697bc..29011d5 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -241,6 +241,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then -- Exit on any errors WHENEVER SQLERROR EXIT SQL.SQLCODE + -- Disable shared servers (enables faster shutdown) + ALTER SYSTEM SET SHARED_SERVERS=0; + -- Disable password profile checks ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; diff --git a/install.1840.sh b/install.1840.sh index cf56679..0c0ec90 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -259,6 +259,9 @@ EOF -- Like with every underscore parameter, DO NOT SET THIS PARAMETER EVER UNLESS YOU KNOW WHAT THE HECK YOU ARE DOING! ALTER SYSTEM SET "_dmm_blas_library"='libora_netlib.so' SCOPE=SPFILE; + -- Disable shared servers (enables faster shutdown) + ALTER SYSTEM SET SHARED_SERVERS=0; + ------------------------------------- -- Disable password profile checks -- ------------------------------------- From d7e5b821aa1dd9a4b94e3a85f183a946f4d77cb3 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 28 Aug 2021 17:33:56 -0700 Subject: [PATCH 118/192] Fix cleanup for non-localhost bulid containers Signed-off-by: gvenzl --- install.11202.sh | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 29011d5..547dee8 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -560,11 +560,10 @@ rm "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/dpdump/dp.log rm "${ORACLE_HOME}"/config/log/* # Remove diag files -rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/lck/* -rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/metadata/* -rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/"${ORACLE_SID}"_* -rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/lck/* -rm "${ORACLE_BASE}"/diag/tnslsnr/localhost/listener/metadata/* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/lck/* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/metadata/* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/"${ORACLE_SID}"_* +rm -r "${ORACLE_BASE}"/diag/tnslsnr/* rm -r "${ORACLE_BASE}"/oradiag_oracle/* # Remove additional files for REGULAR and SLIM builds From ebad4e157fdea8530481d7fbacd4fdf26c960e36 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 29 Aug 2021 00:05:30 -0700 Subject: [PATCH 119/192] Remove unnecessary bianries and libraries Signed-off-by: gvenzl --- install.1840.sh | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/install.1840.sh b/install.1840.sh index 0c0ec90..50861cd 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -988,6 +988,27 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove opmn directory rm -r "${ORACLE_HOME}"/opmn + # Remove unnecessary binaries (see http://yong321.freeshell.org/computer/oraclebin.html#18c) + rm "${ORACLE_HOME}"/bin/afd* # ASM Filter Drive components + rm "${ORACLE_HOME}"/bin/proc # Pro*C/C++ Precompiler + rm "${ORACLE_HOME}"/bin/procob # Pro COBOL Precomipler + rm "${ORACLE_HOME}"/bin/orion # ORacle IO Numbers benchmark tool + rm "${ORACLE_HOME}"/bin/drda* # Distributed Relational Database Architecture components + + # Replace `orabase` with static path shell script + su -p oracle -c "echo '${ORACLE_BASE}' > ${ORACLE_HOME}/bin/orabase" + + # Replace `orabasehome` with static path shell script + su -p oracle -c "echo '${ORACLE_HOME}' > ${ORACLE_HOME}/bin/orabasehome" + + # Replace `orabaseconfig` with static path shell script + su -p oracle -c "echo '${ORACLE_HOME}' > ${ORACLE_HOME}/bin/orabaseconfig" + + # Remove unnecessary libraries + rm "${ORACLE_HOME}"/lib/libra.so # Recovery appliance + rm "${ORACLE_HOME}"/lib/libopc.so # Oracle public cloud + rm "${ORACLE_HOME}"/lib/libosbws.so # Oracle Secure Backup Cloud Module + # Remove not needed packages # Use rpm instad of microdnf to allow removing packages regardless of their dependencies rpm -e --nodeps glibc-devel glibc-headers kernel-headers libpkgconf libxcrypt-devel \ @@ -1055,7 +1076,12 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove Perl rm -r "${ORACLE_HOME}"/perl - # TODO + # Remove unnecessary binaries + rm "${ORACLE_HOME}"/bin/rman # Oracle Recovery Manager + rm "${ORACLE_HOME}"/bin/wrap # PL/SQL Wrapper + + # Remove unnecessary libraries + rm "${ORACLE_HOME}"/lib/asm* # Oracle Automatic Storage Management fi; From 007fd0a1684f0bcc2703f9fd0063766702948e29 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 29 Aug 2021 00:31:57 -0700 Subject: [PATCH 120/192] Doc: Remove unnecessary bianries and libraries Signed-off-by: gvenzl --- README.md | 37 +++++++++++++++++++++++++++++++++++++ install.1840.sh | 6 +++--- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 172a852..11ba4f5 100644 --- a/README.md +++ b/README.md @@ -308,6 +308,30 @@ The regular image strives to balance between the functionality required by most * The `network/tools` directory has been remove (`$ORACLE_HOME/network/tools`) * The `Oracle Process Manager and Notification` directory has been removed (`$ORACLE_HOME/opmn`) +##### Database binaries + +The following binaries have been removed from the `$ORACLE_HOME/bin` directory: + +* `$ORACLE_HOME/bin/afd*` (ASM Filter Drive components) +* `$ORACLE_HOME}/bin/proc` (Pro\*C/C++ Precompiler) +* `$ORACLE_HOME/bin/procob` (Pro COBOL Precompiler) +* `$ORACLE_HOME/bin/orion` (ORacle IO Numbers benchmark tool) +* `$ORACLE_HOME/bin/drda*` (Distributed Relational Database Architecture components) + +The following binaries have been replaces by shell scripts with static output: + +* `orabase` +* `orabasehome` +* `orabaseconfig` + +##### Database libraries + +The following libraries have been removed from the `$ORACLE_HOME/lib` directory: + +* `$ORACLE_HOME/lib/libra.so` (Recovery Appliance) +* `$ORACLE_HOME/lib/libopc.so` (Oracle Public Cloud) +* `$ORACLE_HOME/lib/libosbws.so` (Oracle Secure Backup Cloud Module) + #### Database settings * The `DEFAULT` profile has the following set: @@ -350,6 +374,19 @@ The slim images aims for smallest possible image size with only the Oracle Datab * The `Oracle Database Provider for Distributed Relational Database Architecture (DRDA)` has been removed (`$ORACLE_HOME/drdaas`) * `Perl` has been removed (`$ORACLE_HOME/perl`) +##### Database binaries + +The following binaries have been removed from the `$ORACLE_HOME/bin` directory: + +* `$ORACLE_HOME/bin/rman` (Oracle Recovery Manager) +* `$ORACLE_HOME/bin/wrap` (PL/SQL Wrapper) + +##### Database libraries + +The following libraries have been removed from the `$ORACLE_HOME/lib` directory: + +* `$ORACLE_HOME/lib/asm*` (Oracle Automatic Storage Management) + ## 11g XE ### Full image flavor (`11-full`) diff --git a/install.1840.sh b/install.1840.sh index 50861cd..677a95c 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -991,7 +991,7 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove unnecessary binaries (see http://yong321.freeshell.org/computer/oraclebin.html#18c) rm "${ORACLE_HOME}"/bin/afd* # ASM Filter Drive components rm "${ORACLE_HOME}"/bin/proc # Pro*C/C++ Precompiler - rm "${ORACLE_HOME}"/bin/procob # Pro COBOL Precomipler + rm "${ORACLE_HOME}"/bin/procob # Pro COBOL Precompiler rm "${ORACLE_HOME}"/bin/orion # ORacle IO Numbers benchmark tool rm "${ORACLE_HOME}"/bin/drda* # Distributed Relational Database Architecture components @@ -1005,8 +1005,8 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then su -p oracle -c "echo '${ORACLE_HOME}' > ${ORACLE_HOME}/bin/orabaseconfig" # Remove unnecessary libraries - rm "${ORACLE_HOME}"/lib/libra.so # Recovery appliance - rm "${ORACLE_HOME}"/lib/libopc.so # Oracle public cloud + rm "${ORACLE_HOME}"/lib/libra.so # Recovery Appliance + rm "${ORACLE_HOME}"/lib/libopc.so # Oracle Public Cloud rm "${ORACLE_HOME}"/lib/libosbws.so # Oracle Secure Backup Cloud Module # Remove not needed packages From da6bdcd2349decbaffc238740401757aac152108 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 29 Aug 2021 11:38:05 -0700 Subject: [PATCH 121/192] Add backup for old images Signed-off-by: gvenzl --- tests/backup_old_images.sh | 101 +++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100755 tests/backup_old_images.sh diff --git a/tests/backup_old_images.sh b/tests/backup_old_images.sh new file mode 100755 index 0000000..3d464d3 --- /dev/null +++ b/tests/backup_old_images.sh @@ -0,0 +1,101 @@ +#!/bin/bash +# Since: August 2021 +# Author: gvenzl +# Name: backup_old_images.sh +# Description: Backup current images on Docker Hub +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +# Download images +echo "Backup latest" +podman pull docker.io/gvenzl/oracle-xe:latest +podman tag docker.io/gvenzl/oracle-xe:latest docker.io/gvenzl/oracle-xe:latest-backup +podman rmi docker.io/gvenzl/oracle-xe:latest + +# Backup 18c images +echo "Backup 18.4.0-full" +podman pull docker.io/gvenzl/oracle-xe:18.4.0-full +podman tag docker.io/gvenzl/oracle-xe:18.4.0-full docker.io/gvenzl/oracle-xe:18.4.0-full-backup +podman rmi docker.io/gvenzl/oracle-xe:18.4.0-full + +echo "Backup 18-full" +podman pull docker.io/gvenzl/oracle-xe:18-full +podman tag docker.io/gvenzl/oracle-xe:18-full docker.io/gvenzl/oracle-xe:18-full-backup +podman rmi docker.io/gvenzl/oracle-xe:18-full + +echo "Backup full" +podman pull docker.io/gvenzl/oracle-xe:full +podman tag docker.io/gvenzl/oracle-xe:full docker.io/gvenzl/oracle-xe:full-backup +podman rmi docker.io/gvenzl/oracle-xe:full + +echo "Backup 18.4.0" +podman pull docker.io/gvenzl/oracle-xe:18.4.0 +podman tag docker.io/gvenzl/oracle-xe:18.4.0 docker.io/gvenzl/oracle-xe:18.4.0-backup +podman rmi docker.io/gvenzl/oracle-xe:18.4.0 + +echo "Backup 18" +podman pull docker.io/gvenzl/oracle-xe:18 +podman tag docker.io/gvenzl/oracle-xe:18 docker.io/gvenzl/oracle-xe:18-backup +podman rmi docker.io/gvenzl/oracle-xe:18 + +echo "Backup 18.4.0-slim" +podman pull docker.io/gvenzl/oracle-xe:18.4.0-slim +podman tag docker.io/gvenzl/oracle-xe:18.4.0-slim docker.io/gvenzl/oracle-xe:18.4.0-slim-backup +podman rmi docker.io/gvenzl/oracle-xe:18.4.0-slim + +echo "Backup 18-slim" +podman pull docker.io/gvenzl/oracle-xe:18-slim +podman tag docker.io/gvenzl/oracle-xe:18-slim docker.io/gvenzl/oracle-xe:18-slim-backup +podman rmi docker.io/gvenzl/oracle-xe:18-slim + +echo "Backup slim" +podman pull docker.io/gvenzl/oracle-xe:slim +podman tag docker.io/gvenzl/oracle-xe:slim docker.io/gvenzl/oracle-xe:slim-backup +podman rmi docker.io/gvenzl/oracle-xe:slim + +# Backup 11g images +echo "Backup 11.2.0.2-full" +podman pull docker.io/gvenzl/oracle-xe:11.2.0.2-full +podman tag docker.io/gvenzl/oracle-xe:11.2.0.2-full docker.io/gvenzl/oracle-xe:11.2.0.2-full-backup +podman rmi docker.io/gvenzl/oracle-xe:11.2.0.2-full + +echo "Backup 11-full" +podman pull docker.io/gvenzl/oracle-xe:11-full +podman tag docker.io/gvenzl/oracle-xe:11-full docker.io/gvenzl/oracle-xe:11-full-backup +podman rmi docker.io/gvenzl/oracle-xe:11-full + +echo "Backup 11.2.0.2" +podman pull docker.io/gvenzl/oracle-xe:11.2.0.2 +podman tag docker.io/gvenzl/oracle-xe:11.2.0.2 docker.io/gvenzl/oracle-xe:11.2.0.2-backup +podman rmi docker.io/gvenzl/oracle-xe:11.2.0.2 + +echo "Backup 11" +podman pull docker.io/gvenzl/oracle-xe:11 +podman tag docker.io/gvenzl/oracle-xe:11 docker.io/gvenzl/oracle-xe:11-backup +podman rmi docker.io/gvenzl/oracle-xe:11 + +echo "Backup 11.2.0.2-slim" +podman pull docker.io/gvenzl/oracle-xe:11.2.0.2-slim +podman tag docker.io/gvenzl/oracle-xe:11.2.0.2-slim docker.io/gvenzl/oracle-xe:11.2.0.2-slim-backup +podman rmi docker.io/gvenzl/oracle-xe:11.2.0.2-slim + +echo "Backup 11-slim" +podman pull docker.io/gvenzl/oracle-xe:11-slim +podman tag docker.io/gvenzl/oracle-xe:11-slim docker.io/gvenzl/oracle-xe:11-slim-backup +podman rmi docker.io/gvenzl/oracle-xe:11-slim From c240fd0cff5a2fb8fe7191fc6ab1f79e960c3be2 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 29 Aug 2021 11:57:18 -0700 Subject: [PATCH 122/192] use fully qualified image urls Signed-off-by: gvenzl --- tests/upload_images.sh | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/tests/upload_images.sh b/tests/upload_images.sh index 0df70fa..f32d7bd 100755 --- a/tests/upload_images.sh +++ b/tests/upload_images.sh @@ -31,38 +31,38 @@ podman login # Upload latest echo "Upload latest" -podman push gvenzl/oracle-xe:latest docker.io/gvenzl/oracle-xe:latest +podman push localhost/gvenzl/oracle-xe:latest docker.io/gvenzl/oracle-xe:latest # Upload 18c images echo "Upload 18.4.0-full" -podman push gvenzl/oracle-xe:18.4.0-full docker.io/gvenzl/oracle-xe:18.4.0-full +podman push localhost/gvenzl/oracle-xe:18.4.0-full docker.io/gvenzl/oracle-xe:18.4.0-full echo "Upload 18-full" -podman push gvenzl/oracle-xe:18-full docker.io/gvenzl/oracle-xe:18-full +podman push localhost/gvenzl/oracle-xe:18-full docker.io/gvenzl/oracle-xe:18-full echo "Upload full" -podman push gvenzl/oracle-xe:full docker.io/gvenzl/oracle-xe:full +podman push localhost/gvenzl/oracle-xe:full docker.io/gvenzl/oracle-xe:full echo "Upload 18.4.0" -podman push gvenzl/oracle-xe:18.4.0 docker.io/gvenzl/oracle-xe:18.4.0 +podman push localhost/gvenzl/oracle-xe:18.4.0 docker.io/gvenzl/oracle-xe:18.4.0 echo "Upload 18" -podman push gvenzl/oracle-xe:18 docker.io/gvenzl/oracle-xe:18 +podman push localhost/gvenzl/oracle-xe:18 docker.io/gvenzl/oracle-xe:18 echo "Upload 18.4.0-slim" -podman push gvenzl/oracle-xe:18.4.0-slim docker.io/gvenzl/oracle-xe:18.4.0-slim +podman push localhost/gvenzl/oracle-xe:18.4.0-slim docker.io/gvenzl/oracle-xe:18.4.0-slim echo "Upload 18-slim" -podman push gvenzl/oracle-xe:18-slim docker.io/gvenzl/oracle-xe:18-slim +podman push localhost/gvenzl/oracle-xe:18-slim docker.io/gvenzl/oracle-xe:18-slim echo "Upload slim" -podman push gvenzl/oracle-xe:slim docker.io/gvenzl/oracle-xe:slim +podman push localhost/gvenzl/oracle-xe:slim docker.io/gvenzl/oracle-xe:slim # Upload 11g images echo "Upload 11.2.0.2-full" -podman push gvenzl/oracle-xe:11.2.0.2-full docker.io/gvenzl/oracle-xe:11.2.0.2-full +podman push localhost/gvenzl/oracle-xe:11.2.0.2-full docker.io/gvenzl/oracle-xe:11.2.0.2-full echo "Upload 11-full" -podman push gvenzl/oracle-xe:11-full docker.io/gvenzl/oracle-xe:11-full +podman push localhost/gvenzl/oracle-xe:11-full docker.io/gvenzl/oracle-xe:11-full echo "Upload 11.2.0.2" -podman push gvenzl/oracle-xe:11.2.0.2 docker.io/gvenzl/oracle-xe:11.2.0.2 +podman push localhost/gvenzl/oracle-xe:11.2.0.2 docker.io/gvenzl/oracle-xe:11.2.0.2 echo "Upload 11" -podman push gvenzl/oracle-xe:11 docker.io/gvenzl/oracle-xe:11 +podman push localhost/gvenzl/oracle-xe:11 docker.io/gvenzl/oracle-xe:11 echo "Upload 11.2.0.2-slim" -podman push gvenzl/oracle-xe:11.2.0.2-slim docker.io/gvenzl/oracle-xe:11.2.0.2-slim +podman push localhost/gvenzl/oracle-xe:11.2.0.2-slim docker.io/gvenzl/oracle-xe:11.2.0.2-slim echo "Upload 11-slim" -podman push gvenzl/oracle-xe:11-slim docker.io/gvenzl/oracle-xe:11-slim +podman push localhost/gvenzl/oracle-xe:11-slim docker.io/gvenzl/oracle-xe:11-slim From a54ba9e2580fc0aa5bdeadaaf5544da98209928e Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 29 Aug 2021 11:57:41 -0700 Subject: [PATCH 123/192] invoke backup of old images by default Signed-off-by: gvenzl --- tests/upload_images.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/upload_images.sh b/tests/upload_images.sh index f32d7bd..6910be4 100755 --- a/tests/upload_images.sh +++ b/tests/upload_images.sh @@ -25,6 +25,14 @@ set -Eeuo pipefail # Ensure all tags are in place ./all_tag_images.sh +# Backup images +read -r -p "Do you want to backup the old images? [Y/n]: " response +# Default --> "Y" +response=${response:-Y} +if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]; then + ./backup_old_images.sh +fi; + # Upload images echo "Login to Docker Hub:" podman login From a5f56d9d06343c2e6605f0dc4aa9e6b66ded6569 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 29 Aug 2021 12:15:27 -0700 Subject: [PATCH 124/192] Add users to ReadMe Signed-off-by: gvenzl --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 11ba4f5..ea68cc3 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,16 @@ Reset database `SYS` and `SYSTEM` passwords: docker exec resetPassword ``` +# Users of these images + +We are proud of the following users of these images: + +* [Liquibase](https://www.liquibase.org/) [[`c6a31c0`](https://github.com/liquibase/liquibase-test-harness/commit/c6a31c0c54c1aa798839a2ef55ef6eb2363ea48f)] +* [Quarkus](https://quarkus.io/) [[`9a63a58`](https://github.com/quarkusio/quarkus/commit/9a63a58a6740fa1d5e3cc7912f89522dd78cee85)] +* [Testcontainers](https://www.testcontainers.org/) [[`99b91b8`](https://github.com/testcontainers/testcontainers-java/commit/99b91b89b6ee3f8f0e9545e86d9f0744b301db30)] + +If you are using these images and would like to be listed as well, please open an [issue on GitHub](https://github.com/gvenzl/oci-oracle-xe/issues) or reach out on [Twitter](https://twitter.com/geraldvenzl). + # How to use this image ## Subtle differences between versions From 08af735c9dcfdc08b8868be67771e82335b86bc4 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 12 Sep 2021 11:37:53 -0700 Subject: [PATCH 125/192] List RPM package removal alphabetically Signed-off-by: gvenzl --- install.11202.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 547dee8..a6e7fd7 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -635,13 +635,13 @@ fi; # Unfortunately microdnf does not automatically uninstall dependencies that have been # installed with a package, so if you were to uninstall just util-linux, for example, # it does not automatically also remove gzip and cracklib again. -microdnf -y remove bc libtirpc libnsl2 libfdisk libutempter cracklib cracklib-dicts \ - libpwquality hwdata libibverbs libnl3 pciutils pciutils-libs \ - rdma-core pam dbus-libs dbus-tools pam dbus-common \ - dbus-daemon libpcap iptables-libs libseccomp kmod-libs acl \ - device-mapper device-mapper-libs cryptsetup-libs \ - elfutils-default-yama-scope elfutils-libs systemd-pam systemd dbus \ - procps-ng net-tools util-linux +microdnf -y remove acl bc cracklib cracklib-dicts cryptsetup-libs \ + dbus dbus-common dbus-daemon dbus-libs dbus-tools \ + device-mapper device-mapper-libs elfutils-default-yama-scope \ + elfutils-libs hwdata ibpwquality iptables-libs kmod-libs libfdisk \ + libibverbs libnl3 libnsl2 libpcap libseccomp libtirpc libutempter \ + net-tools pam pam pciutils pciutils-libs procps-ng rdma-core \ + systemd systemd-pam util-linux # Remove dnf cache microdnf clean all From 7d59d6e5eb81125c8ed302a97eb5e88fe8b797fb Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 12 Sep 2021 11:42:04 -0700 Subject: [PATCH 126/192] List RPM package removal alphabetically Signed-off-by: gvenzl --- install.1840.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/install.1840.sh b/install.1840.sh index 677a95c..87f7315 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -1089,13 +1089,14 @@ fi; # Remove installation dependencies # Use rpm instead of microdnf to allow removing packages regardless of dependencies specified by the Oracle XE RPM -rpm -e --nodeps dbus-libs libtirpc diffutils libnsl2 dbus-tools dbus-common dbus-daemon \ - libpcap iptables-libs libseccomp libfdisk xz lm_sensors-libs libutempter \ - kmod-libs cracklib cracklib-dicts libpwquality pam util-linux findutils acl \ - device-mapper device-mapper-libs cryptsetup-libs elfutils-default-yama-scope \ - elfutils-libs systemd-pam systemd dbus smartmontools ksh sysstat procps-ng \ - binutils file make bc net-tools hostname hwdata pciutils-libs pciutils \ - rdma-core libibverbs libnl3 +rpm -e --nodeps acl bc binutils cracklib cracklib-dicts cryptsetup-libs \ + dbus dbus-common dbus-daemon dbus-libs dbus-tools \ + device-mapper device-mapper-libs diffutils elfutils-default-yama-scope \ + elfutils-libs file findutils hostname hwdata iptables-libs kmod-libs \ + ksh libfdisk libibverbs libnl3 libnsl2 libpcap libpwquality libseccomp \ + libtirpc libutempter lm_sensors-libs make net-tools pam \ + pciutils pciutils-libs procps-ng rdma-core smartmontools sysstat \ + systemd systemd-pam util-linux xz rm /etc/sysctl.conf.rpmsave From 3dc56240f929c527a19da590cd262eacd238a5db Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 12 Sep 2021 11:45:20 -0700 Subject: [PATCH 127/192] Gracefully stop listener (now that listener is started manually) Signed-off-by: gvenzl --- install.1840.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install.1840.sh b/install.1840.sh index 87f7315..a32397c 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -840,6 +840,9 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF exit; EOF +# Stop listener +su -p oracle -c "lsnrctl stop" + ############################### ### Compress Database files ### ############################### From f91b252f875e393df5a8f9dc9df1306c0b0a9eee Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 12 Sep 2021 14:46:38 -0700 Subject: [PATCH 128/192] Fix typo in RPM package removal Signed-off-by: gvenzl --- install.11202.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.11202.sh b/install.11202.sh index a6e7fd7..a2893c5 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -638,7 +638,7 @@ fi; microdnf -y remove acl bc cracklib cracklib-dicts cryptsetup-libs \ dbus dbus-common dbus-daemon dbus-libs dbus-tools \ device-mapper device-mapper-libs elfutils-default-yama-scope \ - elfutils-libs hwdata ibpwquality iptables-libs kmod-libs libfdisk \ + elfutils-libs hwdata libpwquality iptables-libs kmod-libs libfdisk \ libibverbs libnl3 libnsl2 libpcap libseccomp libtirpc libutempter \ net-tools pam pam pciutils pciutils-libs procps-ng rdma-core \ systemd systemd-pam util-linux From c7091e3252fa34ae8e3bea8eff7ce4235bc12eba Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 23 Oct 2021 23:18:07 -0700 Subject: [PATCH 129/192] Introducing 21c-full Signed-off-by: gvenzl --- Dockerfile.11202 | 2 + Dockerfile.1840 | 2 + Dockerfile.2130 | 41 ++ README.md | 18 +- buildContainerImage.sh | 7 +- container-entrypoint.sh | 50 +- install.2130.sh | 1104 ++++++++++++++++++++++++++++++++ tests/all_build_tests.sh | 4 + tests/all_container_tests.sh | 3 +- tests/all_tag_images.sh | 1 + tests/build_Dockerfile_2130.sh | 33 + tests/tag_images_11202.sh | 1 - tests/tag_images_1840.sh | 4 - tests/tag_images_2130.sh | 32 + tests/test_container_2130.sh | 293 +++++++++ 15 files changed, 1559 insertions(+), 36 deletions(-) create mode 100644 Dockerfile.2130 create mode 100644 install.2130.sh create mode 100755 tests/build_Dockerfile_2130.sh create mode 100755 tests/tag_images_2130.sh create mode 100755 tests/test_container_2130.sh diff --git a/Dockerfile.11202 b/Dockerfile.11202 index 1fced89..57e4e69 100644 --- a/Dockerfile.11202 +++ b/Dockerfile.11202 @@ -41,6 +41,8 @@ FROM oraclelinux:8-slim ARG BUILD_MODE ENV ORACLE_BASE=/u01/app/oracle \ + ORACLE_BASE_CONFIG=/u01/app/oracle/product/11.2.0/xe \ + ORACLE_BASE_HOME=/u01/app/oracle/product/11.2.0/xe \ ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe \ ORACLE_SID=XE \ PATH=${PATH}:/u01/app/oracle/product/11.2.0/xe/bin:/u01/app/oracle diff --git a/Dockerfile.1840 b/Dockerfile.1840 index c9d3eee..d8c4166 100644 --- a/Dockerfile.1840 +++ b/Dockerfile.1840 @@ -23,6 +23,8 @@ FROM oraclelinux:8-slim ARG BUILD_MODE ENV ORACLE_BASE=/opt/oracle \ + ORACLE_BASE_CONFIG=/opt/oracle/product/18c/dbhomeXE \ + ORACLE_BASE_HOME=/opt/oracle/product/18c/dbhomeXE \ ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE \ ORACLE_SID=XE \ PATH=${PATH}:/opt/oracle/product/18c/dbhomeXE/bin:/opt/oracle diff --git a/Dockerfile.2130 b/Dockerfile.2130 new file mode 100644 index 0000000..a071b26 --- /dev/null +++ b/Dockerfile.2130 @@ -0,0 +1,41 @@ +# +# Since: September, 2021 +# Author: gvenzl +# Name: Dockerfile.2130 +# Description: Dockerfile to build Oracle DB XE 21.3.0 +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM oraclelinux:8-slim + +ARG BUILD_MODE + +ENV ORACLE_BASE=/opt/oracle \ + ORACLE_BASE_CONFIG=/opt/oracle \ + ORACLE_BASE_HOME=/opt/oracle/homes/OraDBHome21cXE \ + ORACLE_HOME=/opt/oracle/product/21c/dbhomeXE \ + ORACLE_SID=XE \ + PATH=${PATH}:/opt/oracle/product/21c/dbhomeXE/bin:/opt/oracle + +COPY oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm install.2130.sh container-entrypoint.sh resetPassword healthcheck.sh /install/ + +RUN /install/install.2130.sh "${BUILD_MODE}" + +USER oracle +WORKDIR ${ORACLE_BASE} + +HEALTHCHECK CMD "${ORACLE_BASE}"/healthcheck.sh >/dev/null || exit 1 + +ENTRYPOINT ["container-entrypoint.sh"] \ No newline at end of file diff --git a/README.md b/README.md index ea68cc3..954793d 100644 --- a/README.md +++ b/README.md @@ -270,6 +270,20 @@ The execution order and implications are the same as with the [Initialization sc | Regular | [None] | A well-balanced image between image size and functionality. Recommended for most use cases. | Recommended for most use cases. | | Full | `-full` | An image containing all functionality as provided by the Oracle Database installation. | Best for extensions and/or customizations. | +## 21c XE + +### Full image flavor (`21-full`) + +The full image provides an Oracle Database XE installation "as is", meaning as provided by the RPM install file. +A couple of modifications have been performed to make the installation more suitable for running inside a container. + +#### Database settings + +* `DBMS_XDB.SETLISTENERLOCALACCESS(FALSE)` +* `COMMON_USER_PREFIX=''` +* `LOCAL_LISTENER=''` +* An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) + ## 18c XE ### Full image flavor (`18-full`) @@ -280,9 +294,9 @@ A couple of modifications have been performed to make the installation more suit #### Database settings * `DBMS_XDB.SETLISTENERLOCALACCESS(FALSE)` -* An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) -* `LOCAL_LISTENER=''` * `COMMON_USER_PREFIX=''` +* `LOCAL_LISTENER=''` +* An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) ### Regular image flavor (`18`) diff --git a/buildContainerImage.sh b/buildContainerImage.sh index fd90a35..e49ed05 100755 --- a/buildContainerImage.sh +++ b/buildContainerImage.sh @@ -22,7 +22,7 @@ # Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ set -Eeuo pipefail -VERSION="18.4.0" +VERSION="21.3.0" FLAVOR="REGULAR" IMAGE_NAME="gvenzl/oracle-xe" SKIP_CHECKSUM="false" @@ -38,7 +38,7 @@ Parameters: -r: creates a regular image (default) -s: creates a 'slim' image -v: version of Oracle Database XE to build - Choose one of: 11.2.0.2, 18.4.0 + Choose one of: 21.3.0, 18.4.0, 11.2.0.2 -i: ignores checksum test -o: passes on container build option @@ -95,7 +95,8 @@ if [ "${SKIP_CHECKSUM}" == "false" ]; then SHASUM_RET=$(shasum -a 256 oracle*xe*"${VERSION%%.*}"*.rpm) if [[ ( "${VERSION}" == "11.2.0.2" && "${SHASUM_RET%% *}" != "6629c8f014402fbc9db844421a6a0d2c71580838f4ac0e8df6659b62bb905268" ) || - ( "${VERSION}" == "18.4.0" && "${SHASUM_RET%% *}" != "4df0318d72a0b97f5468b36919a23ec07533f5897b324843108e0376566d50c8" ) ]]; then + ( "${VERSION}" == "18.4.0" && "${SHASUM_RET%% *}" != "4df0318d72a0b97f5468b36919a23ec07533f5897b324843108e0376566d50c8" ) || + ( "${VERSION}" == "21.3.0" && "${SHASUM_RET%% *}" != "f8357b432de33478549a76557e8c5220ec243710ed86115c65b0c2bc00a848db" ) ]]; then echo "BUILDER: WARNING! SHA sum of RPM does not match with what's expected!" echo "BUILDER: WARNING! Verify that the .rpm file is not corrupt!" fi; diff --git a/container-entrypoint.sh b/container-entrypoint.sh index f231e68..b692e73 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -140,11 +140,11 @@ function create_dbconfig() { mkdir -p "${ORACLE_BASE}/oradata/dbconfig/${ORACLE_SID}" - 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/listener.ora "${ORACLE_BASE}"/oradata/dbconfig/"${ORACLE_SID}"/ - mv "${ORACLE_HOME}"/network/admin/tnsnames.ora "${ORACLE_BASE}"/oradata/dbconfig/"${ORACLE_SID}"/ - mv "${ORACLE_HOME}"/network/admin/sqlnet.ora "${ORACLE_BASE}"/oradata/dbconfig/"${ORACLE_SID}"/ + mv "${ORACLE_BASE_CONFIG}"/dbs/spfile"${ORACLE_SID}".ora "${ORACLE_BASE}"/oradata/dbconfig/"${ORACLE_SID}"/ + mv "${ORACLE_BASE_CONFIG}"/dbs/orapw"${ORACLE_SID}" "${ORACLE_BASE}"/oradata/dbconfig/"${ORACLE_SID}"/ + mv "${ORACLE_BASE_HOME}"/network/admin/listener.ora "${ORACLE_BASE}"/oradata/dbconfig/"${ORACLE_SID}"/ + mv "${ORACLE_BASE_HOME}"/network/admin/tnsnames.ora "${ORACLE_BASE}"/oradata/dbconfig/"${ORACLE_SID}"/ + mv "${ORACLE_BASE_HOME}"/network/admin/sqlnet.ora "${ORACLE_BASE}"/oradata/dbconfig/"${ORACLE_SID}"/ sym_link_dbconfig } @@ -152,48 +152,48 @@ function create_dbconfig() { # Remove the existing config files inside the image function remove_config_files() { - if [ -f "${ORACLE_HOME}"/dbs/spfile"${ORACLE_SID}".ora ]; then - rm "${ORACLE_HOME}"/dbs/spfile"${ORACLE_SID}".ora + if [ -f "${ORACLE_BASE_CONFIG}"/dbs/spfile"${ORACLE_SID}".ora ]; then + rm "${ORACLE_BASE_CONFIG}"/dbs/spfile"${ORACLE_SID}".ora fi; - if [ -f "${ORACLE_HOME}"/dbs/orapw"${ORACLE_SID}" ]; then - rm "${ORACLE_HOME}"/dbs/orapw"${ORACLE_SID}" + if [ -f "${ORACLE_BASE_CONFIG}"/dbs/orapw"${ORACLE_SID}" ]; then + rm "${ORACLE_BASE_CONFIG}"/dbs/orapw"${ORACLE_SID}" fi; - if [ -f "${ORACLE_HOME}"/network/admin/listener.ora ]; then - rm "${ORACLE_HOME}"/network/admin/listener.ora + if [ -f "${ORACLE_BASE_HOME}"/network/admin/listener.ora ]; then + rm "${ORACLE_BASE_HOME}"/network/admin/listener.ora fi; - if [ -f "${ORACLE_HOME}"/network/admin/tnsnames.ora ]; then - rm "${ORACLE_HOME}"/network/admin/tnsnames.ora + if [ -f "${ORACLE_BASE_HOME}"/network/admin/tnsnames.ora ]; then + rm "${ORACLE_BASE_HOME}"/network/admin/tnsnames.ora fi; - if [ -f "${ORACLE_HOME}"/network/admin/sqlnet.ora ]; then - rm "${ORACLE_HOME}"/network/admin/sqlnet.ora + if [ -f "${ORACLE_BASE_HOME}"/network/admin/sqlnet.ora ]; then + rm "${ORACLE_BASE_HOME}"/network/admin/sqlnet.ora fi; } # Create symbolic links to dbconfig files function sym_link_dbconfig() { - 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 + if [ ! -L "${ORACLE_BASE_CONFIG}"/dbs/spfile"${ORACLE_SID}".ora ]; then + ln -s "${ORACLE_BASE}"/oradata/dbconfig/"${ORACLE_SID}"/spfile"${ORACLE_SID}".ora "${ORACLE_BASE_CONFIG}"/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}" + if [ ! -L "${ORACLE_BASE_CONFIG}"/dbs/orapw"${ORACLE_SID}" ]; then + ln -s "${ORACLE_BASE}"/oradata/dbconfig/"${ORACLE_SID}"/orapw"${ORACLE_SID}" "${ORACLE_BASE_CONFIG}"/dbs/orapw"${ORACLE_SID}" 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 + if [ ! -L "${ORACLE_BASE_HOME}"/network/admin/listener.ora ]; then + ln -s "${ORACLE_BASE}"/oradata/dbconfig/"${ORACLE_SID}"/listener.ora "${ORACLE_BASE_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 + if [ ! -L "${ORACLE_BASE_HOME}"/network/admin/tnsnames.ora ]; then + ln -s "${ORACLE_BASE}"/oradata/dbconfig/"${ORACLE_SID}"/tnsnames.ora "${ORACLE_BASE_HOME}"/network/admin/tnsnames.ora 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 + if [ ! -L "${ORACLE_BASE_HOME}"/network/admin/sqlnet.ora ]; then + ln -s "${ORACLE_BASE}"/oradata/dbconfig/"${ORACLE_SID}"/sqlnet.ora "${ORACLE_BASE_HOME}"/network/admin/sqlnet.ora fi; } diff --git a/install.2130.sh b/install.2130.sh new file mode 100644 index 0000000..8f10025 --- /dev/null +++ b/install.2130.sh @@ -0,0 +1,1104 @@ +#!/bin/bash +# Since: September, 2021 +# Author: gvenzl +# Name: install.2130.sh +# Description: Install script for Oracle DB XE 21.3.0 +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +echo "BUILDER: started" + +# Build mode ("SLIM", "REGULAR", "FULL") +BUILD_MODE=${1:-"REGULAR"} + +echo "BUILDER: BUILD_MODE=${BUILD_MODE}" + +# Set data file sizes +#CDB_SYSAUX_SIZE=480 +#PDB_SYSAUX_SIZE=342 +#CDB_SYSTEM_SIZE=840 +#PDB_SYSTEM_SIZE=255 +if [ "${BUILD_MODE}" == "FULL" ]; then + REDO_SIZE=50 +#elif [ "${BUILD_MODE}" == "REGULAR" ]; then +# REDO_SIZE=20 +# USERS_SIZE=10 +# CDB_SYSAUX_SIZE=464 +#elif [ "${BUILD_MODE}" == "SLIM" ]; then +# REDO_SIZE=10 +# USERS_SIZE=2 +# CDB_SYSAUX_SIZE=464 +fi; + +echo "BUILDER: Installing OS dependencies" + +# Install installation dependencies +microdnf -y install bc binutils file compat-openssl10 elfutils-libelf ksh sysstat \ + procps-ng smartmontools make hostname + +# Install runtime dependencies +microdnf -y install libnsl glibc glibc-devel libaio libgcc libstdc++ + +# Install fortran runtime for libora_netlib.so (so that the Intel Math Kernel libraries are no longer needed) +if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then + microdnf -y install compat-libgfortran-48 +fi; + +# Install container runtime specific packages +# (used by the entrypoint script, not the database itself) +microdnf -y install unzip gzip + +############################################## +###### Install and configure Database ######## +############################################## + +echo "BUILDER: installing database binaries" + +# Install Oracle XE +rpm -iv --nodeps /install/oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm + +# Set 'oracle' user home directory to ${ORACE_BASE} +usermod -d ${ORACLE_BASE} oracle + +# Add listener port and skip validations to conf file +sed -i "s/LISTENER_PORT=/LISTENER_PORT=1521/g" /etc/sysconfig/oracle-xe-21c.conf +sed -i "s/SKIP_VALIDATIONS=false/SKIP_VALIDATIONS=true/g" /etc/sysconfig/oracle-xe-21c.conf + +# Disable netca to avoid "No IP address found" issue +mv "${ORACLE_HOME}"/bin/netca "${ORACLE_HOME}"/bin/netca.bak +echo "exit 0" > "${ORACLE_HOME}"/bin/netca +chmod a+x "${ORACLE_HOME}"/bin/netca + +echo "BUILDER: configuring database" + +# Set random password +ORACLE_PASSWORD=$(date '+%s' | sha256sum | base64 | head -c 8) +(echo "${ORACLE_PASSWORD}"; echo "${ORACLE_PASSWORD}";) | /etc/init.d/oracle-xe-21c configure + +# Stop unconfigured listener +su -p oracle -c "lsnrctl stop" + +# Re-enable netca +mv "${ORACLE_HOME}"/bin/netca.bak "${ORACLE_HOME}"/bin/netca + +echo "BUILDER: post config database steps" + +############################ +### Create network files ### +############################ + +echo "BUILDER: creating network files" + +# listener.ora +echo \ +"LISTENER = + (DESCRIPTION_LIST = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_${ORACLE_SID})) + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + ) + ) + +DEFAULT_SERVICE_LISTENER = ${ORACLE_SID}" > "${ORACLE_BASE_HOME}"/network/admin/listener.ora + +# tnsnames.ora +echo \ +"${ORACLE_SID} = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = ${ORACLE_SID}) + ) + ) + +${ORACLE_SID}PDB1 = + (DESCRIPTION = + (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) + (CONNECT_DATA = + (SERVER = DEDICATED) + (SERVICE_NAME = ${ORACLE_SID}PDB1) + ) + ) + +EXTPROC_CONNECTION_DATA = + (DESCRIPTION = + (ADDRESS_LIST = + (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_${ORACLE_SID})) + ) + (CONNECT_DATA = + (SID = PLSExtProc) + (PRESENTATION = RO) + ) + ) +" > "${ORACLE_BASE_HOME}"/network/admin/tnsnames.ora + +# sqlnet.ora +echo "NAMES.DIRECTORY_PATH = (EZCONNECT, TNSNAMES)" > "${ORACLE_BASE_HOME}"/network/admin/sqlnet.ora + +chown -R oracle:dba "${ORACLE_BASE_HOME}"/network/admin + +# Start listener +su -p oracle -c "lsnrctl start" + +#################### +### bash_profile ### +#################### + +# Create .bash_profile for oracle user +echo "BUILDER: creating .bash_profile" +echo \ +"export ORACLE_BASE=${ORACLE_BASE} +export ORACLE_BASE_CONFIG=${ORACLE_BASE_CONFIG} +export ORACLE_BASE_HOME=\${ORACLE_BASE}/homes/OraDBHome21cXE +export ORACLE_HOME=\${ORACLE_BASE}/product/21c/dbhomeXE +export ORACLE_SID=XE +export PATH=\${PATH}:\${ORACLE_HOME}/bin:\${ORACLE_BASE} +" >> "${ORACLE_BASE}"/.bash_profile +chown oracle:dba "${ORACLE_BASE}"/.bash_profile + +# Perform further Database setup operations +echo "BUILDER: changing database configuration and parameters for all images" +su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + + -- Enable remote HTTP access + EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE); + + -- Disable common_user_prefix (needed for OS authenticated user) + ALTER SYSTEM SET COMMON_USER_PREFIX='' SCOPE=SPFILE; + + -- Remove original redo logs from fast_recovery_area and create new ones + ALTER DATABASE ADD LOGFILE GROUP 4 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log') SIZE ${REDO_SIZE}m; + ALTER DATABASE ADD LOGFILE GROUP 5 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo05.log') SIZE ${REDO_SIZE}m; + ALTER DATABASE ADD LOGFILE GROUP 6 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo06.log') SIZE ${REDO_SIZE}m; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT; + ALTER DATABASE DROP LOGFILE GROUP 1; + ALTER DATABASE DROP LOGFILE GROUP 2; + ALTER DATABASE DROP LOGFILE GROUP 3; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log + ALTER DATABASE ADD LOGFILE GROUP 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') SIZE ${REDO_SIZE}m REUSE; + ALTER DATABASE ADD LOGFILE GROUP 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') SIZE ${REDO_SIZE}m REUSE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT; + ALTER DATABASE DROP LOGFILE GROUP 4; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log + ALTER DATABASE DROP LOGFILE GROUP 5; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo05.log + ALTER DATABASE DROP LOGFILE GROUP 6; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo06.log + + -- Remove local_listener entry (using default 1521) + ALTER SYSTEM SET LOCAL_LISTENER=''; + + -- Reboot of DB + SHUTDOWN IMMEDIATE; + STARTUP; + + -- Setup healthcheck user + CREATE USER OPS\$ORACLE IDENTIFIED EXTERNALLY; + GRANT CONNECT, SELECT_CATALOG_ROLE TO OPS\$ORACLE; + + exit; +EOF + +################################### +######## FULL INSTALL DONE ######## +################################### + +# If not building the FULL image, remove and shrink additional components +# if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then +# +# echo "BUILDER: further optimizations for REGULAR and SLIM image" +# +# # Open PDB\$SEED to READ/WRITE +# echo "BUILDER: Opening PDB\$SEED in READ/WRITE mode" +# su -p oracle -c "sqlplus -s / as sysdba" << EOF +# +# -- Exit on any errors +# WHENEVER SQLERROR EXIT SQL.SQLCODE +# +# -- Open PDB\$SEED to READ WRITE mode +# ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; +# ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; +# +# exit; +# EOF +# +# # Change parameters/settings +# echo "BUILDER: changing database configuration and parameters for REGULAR and SLIM images" +# su -p oracle -c "sqlplus -s / as sysdba" << EOF +# +# -- Exit on any errors +# WHENEVER SQLERROR EXIT SQL.SQLCODE +# +# -- Deactivate Intel's Math Kernel Libraries +# -- Like with every underscore parameter, DO NOT SET THIS PARAMETER EVER UNLESS YOU KNOW WHAT THE HECK YOU ARE DOING! +# ALTER SYSTEM SET "_dmm_blas_library"='libora_netlib.so' SCOPE=SPFILE; +# +# -- Disable shared servers (enables faster shutdown) +# ALTER SYSTEM SET SHARED_SERVERS=0; +# +# ------------------------------------- +# -- Disable password profile checks -- +# ------------------------------------- +# +# -- Disable password profile checks (can only be done container by container) +# ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; +# +# ALTER SESSION SET CONTAINER=PDB\$SEED; +# ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; +# +# ALTER SESSION SET CONTAINER=XEPDB1; +# ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; +# +# ------------------------------- +# -- Remove HR schema from PDB -- +# ------------------------------- +# +# ALTER SESSION SET CONTAINER=XEPDB1; +# DROP user HR cascade; +# +# exit; +# EOF +# +# ######################## +# # Remove DB components # +# ######################## +# +# # Needs to be run as 'oracle' user (Perl script otherwise fails #TODO: see whether it can be run with su -c somehow instead) +# echo "BUILDER: Removing additional components for REGULAR image" +# su - oracle << EOF +# cd "${ORACLE_HOME}"/rdbms/admin +# +# # Remove Workspace Manager +# echo "BUILDER: Removing Oracle Workspace Manager" +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_workspace_manager_pdbs -d "${ORACLE_HOME}"/rdbms/admin owmuinst.plb +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_workspace_manager_cdb -d "${ORACLE_HOME}"/rdbms/admin owmuinst.plb +# +# echo "BUILDER: Removing Oracle Multimedia" +# # Remove Multimedia (dependent on Oracle Database Java Packages) +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_multimedia_pdbs -d "${ORACLE_HOME}"/ord/im/admin imremdo.sql +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_multimedia_cdb -d "${ORACLE_HOME}"/ord/im/admin imremdo.sql +# +# # Remove Oracle Database Java Packages +# echo "BUILDER: Removing Oracle Database Java Packages" +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_java_packages -d "${ORACLE_HOME}"/rdbms/admin catnojav.sql +# +# # Remove Oracle XDK +# echo "BUILDER: Removing Oracle XDK" +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_xdk -d "${ORACLE_HOME}"/xdk/admin rmxml.sql +# +# # Remove Oracle JServer JAVA Virtual Machine +# echo "BUILDER: Removing Oracle JServer JAVA Virtual Machine" +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_jvm -d "${ORACLE_HOME}"/javavm/install rmjvm.sql +# +# # Remove Oracle OLAP API +# echo "BUILDER: Removing Oracle OLAP API" +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_olap_api_pdbs_1 -d "${ORACLE_HOME}"/olap/admin/ olapidrp.plb +# # Needs to be done one by one, otherwise there is a ORA-65023: active transaction exists in container PDB\$SEED +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'PDB\$SEED' -b builder_remove_olap_api_pdbseed_2 -d "${ORACLE_HOME}"/olap/admin/ catnoxoq.sql +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'XEPDB1' -b builder_remove_olap_api_xepdb1_2 -d "${ORACLE_HOME}"/olap/admin/ catnoxoq.sql +# # Remove it from the CDB +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_olap_api_cdb_1 -d "${ORACLE_HOME}"/olap/admin/ olapidrp.plb +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_olap_api_cdb_2 -d "${ORACLE_HOME}"/olap/admin/ catnoxoq.sql +# +# # Remove OLAP Analytic Workspace +# echo "BUILDER: Removing OLAP Analytic Workspace" +# # Needs to be done one by one, otherwise there is a ORA-65023: active transaction exists in container PDB\$SEED +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'PDB\$SEED' -b builder_remove_olap_workspace_pdb_seed -d "${ORACLE_HOME}"/olap/admin/ catnoaps.sql +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'XEPDB1' -b builder_remove_olap_workspace_xepdb1 -d "${ORACLE_HOME}"/olap/admin/ catnoaps.sql +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_olap_workspace_cdb -d "${ORACLE_HOME}"/olap/admin/ catnoaps.sql +# +# # Recompile +# echo "BUILDER: Recompiling database objects" +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_recompile_all_objects -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql +# +# # Remove all log files +# rm "${ORACLE_HOME}"/rdbms/admin/builder_* +# +# exit; +# EOF +# +# # Drop leftover items +# echo "BUILDER: Dropping leftover Database dictionary objects for REGULAR image" +# su -p oracle -c "sqlplus -s / as sysdba" << EOF +# +# -- Exit on any errors +# WHENEVER SQLERROR EXIT SQL.SQLCODE +# +# -- Oracle Multimedia leftovers +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORDIMDPCALLOUTS'); +# +# -- Open PDB\$SEED to READ WRITE mode (catcon put it into READY ONLY again) +# ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; +# ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; +# +# ALTER SESSION SET CONTAINER=PDB\$SEED; +# +# -- Remove Java VM leftovers +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JAVAVM_SYS'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JVMRJBCINV'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE DBMS_JAVA_MISC'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE OJDS_CONTEXT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$NODE_NUMBER\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$BINDINGS\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$INODE\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$ATTRIBUTES\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$REFADDR\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$PERMISSIONS\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$SEQ\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP TRIGGER OJDS\$ROLE_TRIGGER\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER OJVMSYS'); +# +# -- Oracle Multimedia leftovers +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORDIMDPCALLOUTS'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLOR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_STILLIMAGE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_AVERAGECOLOR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLORHISTOGRAM'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_POSITIONALCOLOR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_TEXTURE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FEATURELIST'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDAUDIO'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDVIDEO'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDOC'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGESIGNATURE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDICOM'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDATASOURCE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDPLSGWYUTIL'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE1'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE2'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORA_SI_MKSTILLIMAGE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CHGCONTENT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CONVERTFORMAT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTHMBNL'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETSIZEDTHMBNL'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENTLNGTH'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETHEIGHT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETWIDTH'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETFORMAT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKRGBCLR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDAVGCLR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKAVGCLR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYAVGCLR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDCLRHSTGR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKCLRHSTGR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_ARRAYCLRHSTGR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_APPENDCLRHSTGR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYCLRHSTGR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDPSTNLCLR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYPSTNLCLR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDTEXTURE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYTEXTURE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKFTRLIST'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETAVGCLRFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETCLRHSTGRFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETPSTNLCLRFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETTEXTUREFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTRW'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTRW'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTRW'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTRW'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYFTRLIST'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM_ADMIN'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_IMAGE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_AUDIO'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_VIDEO'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DOC'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DBRELEASE_DOCS'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENTS'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_TYPES'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONSTRAINT_NAMES'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_REFS'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONFORMANCE_VLD_MSGS'); +# +# ALTER SESSION SET CONTAINER=XEPDB1; +# +# -- Remove Java VM leftovers +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JAVAVM_SYS'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JVMRJBCINV'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE DBMS_JAVA_MISC'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE OJDS_CONTEXT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$NODE_NUMBER\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$BINDINGS\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$INODE\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$ATTRIBUTES\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$REFADDR\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$PERMISSIONS\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$SEQ\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP TRIGGER OJDS\$ROLE_TRIGGER\$'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER OJVMSYS'); +# +# -- Oracle Multimedia leftovers +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORDIMDPCALLOUTS'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLOR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_STILLIMAGE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_AVERAGECOLOR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLORHISTOGRAM'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_POSITIONALCOLOR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_TEXTURE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FEATURELIST'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDAUDIO'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDVIDEO'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDOC'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGESIGNATURE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDICOM'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDATASOURCE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDPLSGWYUTIL'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE1'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE2'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORA_SI_MKSTILLIMAGE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CHGCONTENT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CONVERTFORMAT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTHMBNL'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETSIZEDTHMBNL'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENTLNGTH'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETHEIGHT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETWIDTH'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETFORMAT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKRGBCLR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDAVGCLR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKAVGCLR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYAVGCLR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDCLRHSTGR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKCLRHSTGR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_ARRAYCLRHSTGR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_APPENDCLRHSTGR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYCLRHSTGR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDPSTNLCLR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYPSTNLCLR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDTEXTURE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYTEXTURE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKFTRLIST'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETAVGCLRFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETCLRHSTGRFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETPSTNLCLRFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETTEXTUREFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTRW'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTRW'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTRW'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTR'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTRW'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYFTRLIST'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM_ADMIN'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_IMAGE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_AUDIO'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_VIDEO'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DOC'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DBRELEASE_DOCS'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENTS'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_TYPES'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONSTRAINT_NAMES'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_REFS'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONFORMANCE_VLD_MSGS'); +# +# exit; +# EOF +# +# #################################### +# # SLIM Image: Remove DB components # +# #################################### +# +# if [ "${BUILD_MODE}" == "SLIM" ]; then +# +# # Needs to be run as 'oracle' user (Perl script otherwise fails #TODO: see whether it can be run with su -c somehow instead) +# +# echo "BUILDER: Removing additional components for SLIM image" +# su - oracle << EOF +# cd "${ORACLE_HOME}"/rdbms/admin +# +# # Remove Oracle Text +# echo "BUILDER: Removing Oracle Text" +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_text_pdbs -C 'CDB\$ROOT' -d "${ORACLE_HOME}"/ctx/admin catnoctx.sql +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_text_cdb -c 'CDB\$ROOT' -d "${ORACLE_HOME}"/ctx/admin catnoctx.sql +# +# # Remove Spatial +# echo "BUILDER: Removing Oracle Spatial" +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_spatial_pdbs -d "${ORACLE_HOME}"/md/admin mddins.sql +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_spatial_cdb -d "${ORACLE_HOME}"/md/admin mddins.sql +# +# # Recompile +# echo "BUILDER: Recompiling database objects" +# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_recompile_all_objects -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql +# +# # Remove all log files +# rm "${ORACLE_HOME}"/rdbms/admin/builder_* +# +# exit; +# EOF +# +# # Drop leftover items +# echo "BUILDER: Dropping leftover Database dictionary objects for SLIM image" +# su -p oracle -c "sqlplus -s / as sysdba" << EOF +# +# -- Exit on any errors +# WHENEVER SQLERROR EXIT SQL.SQLCODE +# +# -- Oracle Text leftovers +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE XDB.XDB_DATASTORE_PROC'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_XDBT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); +# +# -- Remove Spatial leftover components +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDDATA CASCADE'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDSYS CASCADE'); +# +# -- Open PDB\$SEED to READ WRITE mode (catcon put it into READY ONLY again) +# ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; +# ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; +# +# ALTER SESSION SET CONTAINER=PDB\$SEED; +# +# -- Oracle Text leftovers +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE XDB.XDB_DATASTORE_PROC'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_XDBT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); +# +# -- Remove Spatial leftover components +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDDATA CASCADE'); +# +# ALTER SESSION SET CONTAINER=XEPDB1; +# +# -- Oracle Text leftovers +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE XDB.XDB_DATASTORE_PROC'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_XDBT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); +# +# -- Remove Spatial leftover components +# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDDATA CASCADE'); +# +# exit; +# EOF +# +# fi; +# +# ##################### +# # Shrink data files # +# ##################### +# su -p oracle -c "sqlplus -s / as sysdba" << EOF +# +# -- Exit on any errors +# WHENEVER SQLERROR EXIT SQL.SQLCODE +# +# ---------------------------- +# -- Shrink SYSAUX tablespaces +# ---------------------------- +# +# -- Create new temporary SYSAUX tablespace +# --CREATE TABLESPACE SYSAUX_TEMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux_temp.dbf' +# --SIZE 250M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED; +# +# -- Move tables to temporary SYSAUX tablespace +# --#TODO +# --BEGIN +# -- FOR cur IN (SELECT owner || '.' || table_name AS name FROM all_tables WHERE tablespace_name = 'SYSAUX') LOOP +# -- EXECUTE IMMEDIATE 'ALTER TABLE ' || cur.name || ' MOVE TABLESPACE SYSAUX_TEMP'; +# -- END LOOP; +# --END; +# --/ +# +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux01.dbf' RESIZE ${CDB_SYSAUX_SIZE}M; +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux01.dbf' +# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# ALTER SESSION SET CONTAINER=PDB\$SEED; +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/sysaux01.dbf' RESIZE ${PDB_SYSAUX_SIZE}M; +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/sysaux01.dbf' +# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# ALTER SESSION SET CONTAINER=XEPDB1; +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/sysaux01.dbf' RESIZE ${PDB_SYSAUX_SIZE}M; +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/sysaux01.dbf' +# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# ALTER SESSION SET CONTAINER=CDB\$ROOT; +# +# ---------------------------- +# -- Shrink SYSTEM tablespaces +# ---------------------------- +# +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/system01.dbf' RESIZE ${CDB_SYSTEM_SIZE}M; +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/system01.dbf' +# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# ALTER SESSION SET CONTAINER=PDB\$SEED; +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/system01.dbf' RESIZE ${PDB_SYSTEM_SIZE}M; +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/system01.dbf' +# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# ALTER SESSION SET CONTAINER=XEPDB1; +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/system01.dbf' RESIZE ${PDB_SYSTEM_SIZE}M; +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/system01.dbf' +# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# ALTER SESSION SET CONTAINER=CDB\$ROOT; +# +# -------------------------- +# -- Shrink TEMP tablespaces +# -------------------------- +# +# ALTER TABLESPACE TEMP SHRINK SPACE; +# ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp01.dbf' +# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# -------------------------------------- +# ALTER SESSION SET CONTAINER=PDB\$SEED; +# -------------------------------------- +# +# CREATE TEMPORARY TABLESPACE TEMP_TMP TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/temp_tmp.dbf' +# SIZE 2M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP_TMP; +# +# DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES; +# +# CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/temp01.dbf' +# SIZE 2M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP; +# +# DROP TABLESPACE TEMP_TMP INCLUDING CONTENTS AND DATAFILES; +# +# ----------------------------------- +# ALTER SESSION SET CONTAINER=XEPDB1; +# ----------------------------------- +# +# ALTER TABLESPACE TEMP SHRINK SPACE; +# ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/temp01.dbf' +# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# ALTER SESSION SET CONTAINER=CDB\$ROOT; +# +# ---------------------------- +# -- Shrink USERS tablespaces +# ---------------------------- +# +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/users01.dbf' RESIZE ${USERS_SIZE}M; +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/users01.dbf' +# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# ALTER SESSION SET CONTAINER=XEPDB1; +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/users01.dbf' RESIZE ${USERS_SIZE}M; +# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/users01.dbf' +# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# ALTER SESSION SET CONTAINER=CDB\$ROOT; +# +# ---------------------------- +# -- Shrink UNDO tablespaces +# ---------------------------- +# +# -- Create new temporary UNDO tablespace +# CREATE UNDO TABLESPACE UNDO_TMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs_tmp.dbf' +# SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# -- Use new temporary UNDO tablespace (so that old one can be deleted) +# ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP'; +# +# -- Delete old UNDO tablespace +# DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES; +# +# -- Recreate old UNDO tablespace with 1M size and AUTOEXTEND +# CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs01.dbf' +# SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# -- Use newly created UNDO tablespace +# ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'; +# +# -- Drop temporary UNDO tablespace +# DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; +# +# -------------------------------------- +# ALTER SESSION SET CONTAINER=PDB\$SEED; +# -------------------------------------- +# +# -- Create new temporary UNDO tablespace +# CREATE UNDO TABLESPACE UNDO_TMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/undotbs_tmp.dbf' +# SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# -- Use new temporary UNDO tablespace (so that old one can be deleted) +# ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP'; +# +# -- Delete old UNDO tablespace +# DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES; +# +# -- Recreate old UNDO tablespace with 1M size and AUTOEXTEND +# CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/undotbs01.dbf' +# SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# -- Use newly created UNDO tablespace +# ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'; +# +# -- Drop temporary UNDO tablespace +# DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; +# +# ----------------------------------- +# ALTER SESSION SET CONTAINER=XEPDB1; +# ----------------------------------- +# +# -- Create new temporary UNDO tablespace +# CREATE UNDO TABLESPACE UNDO_TMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/undotbs_tmp.dbf' +# SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# -- Use new temporary UNDO tablespace (so that old one can be deleted) +# ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP'; +# ALTER SYSTEM CHECKPOINT; +# +# -- Delete old UNDO tablespace +# DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES; +# +# -- Recreate old UNDO tablespace with 1M size and AUTOEXTEND +# CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/undotbs01.dbf' +# SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; +# +# -- Use newly created UNDO tablespace +# ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'; +# ALTER SYSTEM CHECKPOINT; +# +# -- Drop temporary UNDO tablespace +# DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; +# +# exit; +# EOF +# +# # Close PDB\$SEED to READ ONLY again +# echo "BUILDER: Opening PDB\$SEED in READ ONLY (default) mode" +# su -p oracle -c "sqlplus -s / as sysdba" << EOF +# +# -- Exit on any errors +# WHENEVER SQLERROR EXIT SQL.SQLCODE +# +# -- Open PDB\$SEED to READ WRITE mode +# ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; +# ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ ONLY; +# +# exit; +# EOF +# +# fi; + +################################### +########### DB SHUTDOWN ########### +################################### + +echo "BUILDER: graceful database shutdown" + +# Shutdown database gracefully +su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + + -- Shutdown database gracefully + SHUTDOWN IMMEDIATE; + + exit; +EOF + +# Stop listener +su -p oracle -c "lsnrctl stop" + +############################### +### Compress Database files ### +############################### + +echo "BUILDER: compressing database data files" + +cd "${ORACLE_BASE}"/oradata +zip -r "${ORACLE_SID}".zip "${ORACLE_SID}" +chown oracle:dba "${ORACLE_SID}".zip +mv "${ORACLE_SID}".zip "${ORACLE_BASE}"/ +rm -r "${ORACLE_SID}" +cd - 1> /dev/null + +######################## +### Install run file ### +######################## + +echo "BUILDER: install operational files" + +# Move operational files to ${ORACLE_BASE} +mv /install/*.sh "${ORACLE_BASE}"/ +mv /install/resetPassword "${ORACLE_BASE}"/ + +chown oracle:dba "${ORACLE_BASE}"/*.sh \ + "${ORACLE_BASE}"/resetPassword + +chmod u+x "${ORACLE_BASE}"/*.sh \ + "${ORACLE_BASE}"/resetPassword + +# TODO: relink Oracle binaries +# Multimedia: ord/im/lib/env_ordim.mk +# Java JIT (JOT) compiler: make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk jox_off_static ioracle + +######################### +####### Cleanup ######### +######################### + +echo "BUILDER: cleanup" + +# Remove install directory +rm -r /install + +# # Cleanup XE files not needed for being in a container but were installed by the rpm +/sbin/chkconfig --del oracle-xe-21c +rm /etc/init.d/oracle-xe-21c +rm /etc/sysconfig/oracle-xe-21c.conf +rm -r /var/log/oracle-database-xe-21c +rm -r /tmp/* + +# # Remove SYS audit directories and files created during install +# rm -r "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/adump/* +# rm -r "${ORACLE_BASE}"/audit/"${ORACLE_SID}"/* +# +# # Remove Data Pump log file +# rm "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/dpdump/dp.log +# +# # Remove Oracle DB install logs +# rm "${ORACLE_BASE}"/cfgtoollogs/dbca/XE/* +# rm "${ORACLE_BASE}"/cfgtoollogs/netca/* +# rm -r "${ORACLE_BASE}"/cfgtoollogs/sqlpatch/* +# rm "${ORACLE_BASE}"/oraInventory/logs/* +# rm "${ORACLE_HOME}"/cfgtoollogs/oui/* +# rm -r "${ORACLE_HOME}"/log/* +# +# # Remove diag files +# rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/lck/* +# rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/metadata/* +# rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/"${ORACLE_SID}"_* +# rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/drc"${ORACLE_SID}".log +# rm -r "${ORACLE_BASE}"/diag/tnslsnr/* +# +# # TODO: clean up os files +# # /var/log/lastlog +# +# # Remove additional files for NOMRAL and SLIM builds +# if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then +# +# echo "BUILDER: further cleanup for REGULAR and SLIM image" +# +# # Remove OPatch and QOpatch +# rm -r "${ORACLE_HOME}"/OPatch +# rm -r "${ORACLE_HOME}"/QOpatch +# +# # Remove assistants +# rm -r "${ORACLE_HOME}"/assistants +# +# # Remove Oracle Database Migration Assistant for Unicode (dmu) +# rm -r "${ORACLE_HOME}"/dmu +# +# # Remove inventory directory +# rm -r "${ORACLE_HOME}"/inventory +# +# # Remove JDBC drivers +# rm -r "${ORACLE_HOME}"/jdbc +# rm -r "${ORACLE_HOME}"/jlib +# rm -r "${ORACLE_HOME}"/ucp +# +# # Remove Intel's Math kernel libraries +# rm "${ORACLE_HOME}"/lib/libmkl_* +# +# # Remove zip artifacts in $ORACLE_HOME/lib +# rm "${ORACLE_HOME}"/lib/*.zip +# +# # Remove lib/*.jar files +# rm "${ORACLE_HOME}"/lib/*.jar +# +# # Remove Multimedia +# rm -r "${ORACLE_HOME}"/ord/im +# +# # Remove Oracle XDK +# rm -r "${ORACLE_HOME}"/xdk +# +# # Remove JServer JAVA Virtual Machine +# rm -r "${ORACLE_HOME}"/javavm +# +# # Remove Java JDK +# rm -r "${ORACLE_HOME}"/jdk +# +# # Remove dbjava directory +# rm -r "${ORACLE_HOME}"/dbjava +# +# # Remove rdbms/jlib +# rm -r "${ORACLE_HOME}"/rdbms/jlib +# +# # Remove olap +# rm -r "${ORACLE_HOME}"/olap +# +# # Remove property graph (standalone component that can be downloaded from the web) +# rm -r "${ORACLE_HOME}"/md/property_graph +# +# # Remove Cluster Ready Services +# rm -r "${ORACLE_HOME}"/crs +# +# # Remove Cluster Verification Utility (CVU) +# rm -r "${ORACLE_HOME}"/cv +# +# # Remove install directory +# rm -r "${ORACLE_HOME}"/install +# +# # Remove network/jlib directory +# rm -r "${ORACLE_HOME}"/network/jlib +# +# # Remove network/tools directory +# rm -r "${ORACLE_HOME}"/network/tools +# +# # Remove opmn directory +# rm -r "${ORACLE_HOME}"/opmn +# +# # Remove unnecessary binaries (see http://yong321.freeshell.org/computer/oraclebin.html#21c) +# rm "${ORACLE_HOME}"/bin/afd* # ASM Filter Drive components +# rm "${ORACLE_HOME}"/bin/proc # Pro*C/C++ Precompiler +# rm "${ORACLE_HOME}"/bin/procob # Pro COBOL Precompiler +# rm "${ORACLE_HOME}"/bin/orion # ORacle IO Numbers benchmark tool +# rm "${ORACLE_HOME}"/bin/drda* # Distributed Relational Database Architecture components +# +# # Replace `orabase` with static path shell script +# su -p oracle -c "echo '${ORACLE_BASE}' > ${ORACLE_HOME}/bin/orabase" +# +# # Replace `orabasehome` with static path shell script +# su -p oracle -c "echo '${ORACLE_BASE_HOME}' > ${ORACLE_HOME}/bin/orabasehome" +# +# # Replace `orabaseconfig` with static path shell script +# su -p oracle -c "echo '${ORACLE_HOME}' > ${ORACLE_HOME}/bin/orabaseconfig" +# +# # Remove unnecessary libraries +# rm "${ORACLE_HOME}"/lib/libra.so # Recovery Appliance +# rm "${ORACLE_HOME}"/lib/libopc.so # Oracle Public Cloud +# rm "${ORACLE_HOME}"/lib/libosbws.so # Oracle Secure Backup Cloud Module +# +# # Remove not needed packages +# # Use rpm instad of microdnf to allow removing packages regardless of their dependencies +# rpm -e --nodeps glibc-devel glibc-headers kernel-headers libpkgconf libxcrypt-devel \ +# pkgconf pkgconf-m4 pkgconf-pkg-config +# +# # Remove components from ORACLE_HOME +# if [ "${BUILD_MODE}" == "SLIM" ]; then +# +# echo "BUILDER: further cleanup for SLIM image" +# +# # Remove Oracle Text directory +# rm -r "${ORACLE_HOME}"/ctx +# +# # Remove demo directory +# rm -r "${ORACLE_HOME}"/demo +# +# # Remove ODBC samples +# rm -r "${ORACLE_HOME}"/odbc +# +# # Remove TNS samples +# rm -r "${ORACLE_HOME}"/network/admin/samples +# +# # Remove NLS LBuilder +# rm -r "${ORACLE_HOME}"/nls/lbuilder +# +# # Remove hs directory +# rm -r "${ORACLE_HOME}"/hs +# +# # DO NOT remove ldap directory. +# # Some message files (mesg/*.msb) are needed for ALTER USER ... IDENTIFIED BY +# # TODO: Clean up not needed ldap files +# #rm -r "${ORACLE_HOME}"/ldap +# +# # Remove precomp directory +# rm -r "${ORACLE_HOME}"/precomp +# +# # Remove rdbms/public directory +# rm -r "${ORACLE_HOME}"/rdbms/public +# +# # Remove rdbms/jlib directory +# rm -r "${ORACLE_HOME}"/rdbms/xml +# +# # Remove Spatial +# rm -r "${ORACLE_HOME}"/md +# +# # Remove ord directory +# rm -r "${ORACLE_HOME}"/ord +# +# # Remove ordim directory +# rm -r "${ORACLE_HOME}"/ordim +# +# # Remove Oracle R +# rm -r "${ORACLE_HOME}"/R +# rm "${ORACLE_HOME}"/bin/ORE +# +# # Remove deinstall directory +# rm -r "${ORACLE_HOME}"/deinstall +# +# # Remove Oracle Database Provider for Distributed Relational Database Architecture (DRDA) +# rm -r "${ORACLE_HOME}"/drdaas +# +# # Remove Oracle Universal Installer +# rm -r "${ORACLE_HOME}"/oui +# +# # Remove Perl +# rm -r "${ORACLE_HOME}"/perl +# +# # Remove unnecessary binaries +# rm "${ORACLE_HOME}"/bin/rman # Oracle Recovery Manager +# rm "${ORACLE_HOME}"/bin/wrap # PL/SQL Wrapper +# +# # Remove unnecessary libraries +# rm "${ORACLE_HOME}"/lib/asm* # Oracle Automatic Storage Management +# +# fi; +# +# fi; + +# Remove installation dependencies +# Use rpm instead of microdnf to allow removing packages regardless of dependencies specified by the Oracle XE RPM +rpm -e --nodeps acl bc binutils cracklib cracklib-dicts cryptsetup-libs \ + dbus dbus-common dbus-daemon dbus-libs dbus-tools \ + device-mapper device-mapper-libs diffutils \ + elfutils-default-yama-scope elfutils-libs file findutils hostname hwdata \ + iptables-libs kmod-libs ksh libfdisk libibverbs libnl3 libnsl2 libpcap \ + libpwquality libseccomp libtirpc libutempter lm_sensors-libs make pam \ + pciutils pciutils-libs procps-ng rdma-core smartmontools sysstat \ + systemd systemd-pam util-linux xz + +# Remove dnf cache +microdnf clean all diff --git a/tests/all_build_tests.sh b/tests/all_build_tests.sh index 1d547d9..4965d3a 100755 --- a/tests/all_build_tests.sh +++ b/tests/all_build_tests.sh @@ -22,5 +22,9 @@ # Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ set -Eeuo pipefail +# 11g is quickest to build and to verify whether something went wrong, leave it first ./build_Dockerfile_11202.sh + +# In order of newest to latest +./build_cokerfile_2130.sh ./build_Dockerfile_1840.sh diff --git a/tests/all_container_tests.sh b/tests/all_container_tests.sh index 3200623..af76e7c 100755 --- a/tests/all_container_tests.sh +++ b/tests/all_container_tests.sh @@ -22,5 +22,6 @@ # Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ set -Eeuo pipefail -./test_container_11202.sh +./test_container_2130.sh ./test_container_1840.sh +./test_container_11202.sh diff --git a/tests/all_tag_images.sh b/tests/all_tag_images.sh index e3c2fd7..64a8525 100755 --- a/tests/all_tag_images.sh +++ b/tests/all_tag_images.sh @@ -23,5 +23,6 @@ set -Eeuo pipefail ./tag_image_latest.sh +./tag_images_2130.sh ./tag_images_1840.sh ./tag_images_11202.sh diff --git a/tests/build_Dockerfile_2130.sh b/tests/build_Dockerfile_2130.sh new file mode 100755 index 0000000..b0a14d3 --- /dev/null +++ b/tests/build_Dockerfile_2130.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# Since: September, 2021 +# Author: gvenzl +# Name: build_Dockerfile_2130.sh +# Description: Build test scripts for Oracle DB XE 21.3.0 +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +CURRENT_DIR=${PWD} + +cd ../ + +echo "TEST: Building 21.3.0 FULL image" +./buildContainerImage.sh -v 21.3.0 -f +echo "DONE: Building 18.4.0 FULL image" + +cd "${CURRENT_DIR}" diff --git a/tests/tag_images_11202.sh b/tests/tag_images_11202.sh index 83f88ec..30f9836 100755 --- a/tests/tag_images_11202.sh +++ b/tests/tag_images_11202.sh @@ -23,7 +23,6 @@ set -Eeuo pipefail # Tag 11g images - podman tag gvenzl/oracle-xe:11.2.0.2-full gvenzl/oracle-xe:11-full podman tag gvenzl/oracle-xe:11.2.0.2 gvenzl/oracle-xe:11 podman tag gvenzl/oracle-xe:11.2.0.2-slim gvenzl/oracle-xe:11-slim diff --git a/tests/tag_images_1840.sh b/tests/tag_images_1840.sh index fb59f9b..b56bf8e 100755 --- a/tests/tag_images_1840.sh +++ b/tests/tag_images_1840.sh @@ -24,9 +24,5 @@ set -Eeuo pipefail # Tag 18c images podman tag gvenzl/oracle-xe:18.4.0-full gvenzl/oracle-xe:18-full -podman tag gvenzl/oracle-xe:18.4.0-full gvenzl/oracle-xe:full - podman tag gvenzl/oracle-xe:18.4.0 gvenzl/oracle-xe:18 - podman tag gvenzl/oracle-xe:18.4.0-slim gvenzl/oracle-xe:18-slim -podman tag gvenzl/oracle-xe:18.4.0-slim gvenzl/oracle-xe:slim diff --git a/tests/tag_images_2130.sh b/tests/tag_images_2130.sh new file mode 100755 index 0000000..f096166 --- /dev/null +++ b/tests/tag_images_2130.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# Since: September, 2021 +# Author: gvenzl +# Name: tag_images_2130.sh +# Description: Tag all 21c images +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +# Tag 18c images +podman tag gvenzl/oracle-xe:21.3.0-full gvenzl/oracle-xe:21-full +podman tag gvenzl/oracle-xe:21.3.0-full gvenzl/oracle-xe:full + +podman tag gvenzl/oracle-xe:21.3.0 gvenzl/oracle-xe:21 + +podman tag gvenzl/oracle-xe:21.3.0-slim gvenzl/oracle-xe:21-slim +podman tag gvenzl/oracle-xe:21.3.0-slim gvenzl/oracle-xe:slim diff --git a/tests/test_container_2130.sh b/tests/test_container_2130.sh new file mode 100755 index 0000000..81d46e4 --- /dev/null +++ b/tests/test_container_2130.sh @@ -0,0 +1,293 @@ +#!/bin/bash +# Since: September, 2021 +# Author: gvenzl +# Name: test_container_2130.sh +# Description: Run container test scripts for Oracle DB XE 21.3.0 +# +# Copyright 2021 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +source ./functions.sh + +####################### +###### 21c TESTS ###### +####################### + +####################### +##### Image tests ##### +####################### + +runContainerTest "21.3.0 FULL image" "2130-full" "gvenzl/oracle-xe:21.3.0-full" +runContainerTest "21 FULL image" "21-full" "gvenzl/oracle-xe:21-full" +runContainerTest "FULL image" "full" "gvenzl/oracle-xe:full" + +#runContainerTest "18.4.0 REGULAR image" "1840" "gvenzl/oracle-xe:18.4.0" +#runContainerTest "18 REGULAR image" "18" "gvenzl/oracle-xe:18" +#runContainerTest "REGULAR image" "latest" "gvenzl/oracle-xe" + +#runContainerTest "18.4.0 SLIM image" "1840-slim" "gvenzl/oracle-xe:18.4.0-slim" +#runContainerTest "18 SLIM image" "18-slim" "gvenzl/oracle-xe:18-slim" +#runContainerTest "SLIM image" "slim" "gvenzl/oracle-xe:slim" + + +################################# +##### Oracle password tests ##### +################################# + +# Provide different password +ORA_PWD="MyTestPassword" +ORA_PWD_CMD="-e ORACLE_PASSWORD=${ORA_PWD}" +# Tell test method not to tear down container +NO_TEAR_DOWN="true" +# Let's keep the container name in a var to keep it simple +CONTAINER_NAME="21-ora-pwd" +# Let's keep the test name in a var to keep it simple too +TEST_NAME="21.3.0 ORACLE_PASSWORD" +# This is what we want to have back from the SQL statement +EXPECTED_RESULT="OK" + +# Spin up container +runContainerTest "${TEST_NAME}" "${CONTAINER_NAME}" "gvenzl/oracle-xe:21.3.0-full" + +# Test password, if it works we will get "OK" back from the SQL statement +result=$(podman exec -i ${CONTAINER_NAME} sqlplus -s system/"${ORA_PWD}" < Date: Sat, 23 Oct 2021 23:18:57 -0700 Subject: [PATCH 130/192] Fixing minor Doc bug Signed-off-by: gvenzl --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 954793d..04bf7d3 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ If you are using these images and would like to be listed as well, please open a ## Subtle differences between versions The 11gR2 (11.2.0.2) Oracle Database version stores the database data files under `/u01/app/oracle/oradata/XE`. -**A volume for 11gR2 has to be pointed at `/u01/app/oradata`!** +**A volume for 11gR2 has to be pointed at `/u01/app/oracle/oradata`!** ## Environment variables From dac7f9d11204c7c5d5c7080707f5615278a863b1 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 23 Oct 2021 23:20:19 -0700 Subject: [PATCH 131/192] Add image users Signed-off-by: gvenzl --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 04bf7d3..f95c676 100644 --- a/README.md +++ b/README.md @@ -42,8 +42,17 @@ docker exec resetPassword We are proud of the following users of these images: +* [Airbyte](https://airbyte.io/) [[`6e53a57`](https://github.com/airbytehq/airbyte/commit/6e53a574e3d7f4c4885336c4e3205c051ee74ed6)] +* [Apache Spark](https://spark.apache.org/) [[`e03afc9`](https://github.com/apache/spark/commit/e03afc906fd87b0354783b438fa9f7e36231b778)] +* [Eclipse Vert.x](https://vertx.io/) [[`ffedbce`](https://github.com/eclipse-vertx/vertx-sql-client/commit/ffedbce6f91425ce603d47da6290ac30e19fd2e5)] +* [Flowable](https://www.flowable.com/open-source/) [[`18c751f`](https://github.com/flowable/flowable-engine/commit/18c751fb369a74b71abc203f0b4ace151a96e862)] +* [GeoTools](https://geotools.org/) [[`f922f0b`](https://github.com/geotools/geotools/commit/f922f0bdd19e32b9648ad644af2a1eed75417964)] +* [Hibernate Search](https://hibernate.org/search/) [[`173f0b7`](https://github.com/hibernate/hibernate-search/commit/173f0b703defee81b6600c693d4d30b87a6ade41)] * [Liquibase](https://www.liquibase.org/) [[`c6a31c0`](https://github.com/liquibase/liquibase-test-harness/commit/c6a31c0c54c1aa798839a2ef55ef6eb2363ea48f)] +* [Micronaut Data](https://github.com/micronaut-projects/micronaut-data) [[`ddf11c1`](https://github.com/micronaut-projects/micronaut-data/commit/ddf11c1e8a7a27a1f6765cc5e1c1c3d3f74b475f)] * [Quarkus](https://quarkus.io/) [[`9a63a58`](https://github.com/quarkusio/quarkus/commit/9a63a58a6740fa1d5e3cc7912f89522dd78cee85)] +* [Rucio by CERN](https://rucio.cern.ch/) [[`80dffbb`](https://github.com/rucio/rucio/commit/80dffbb09f58a9f30d2a9a4c3297e8ed22a78963)] +* [SchemaCrawler](https://www.schemacrawler.com/) [[`08d9b87`](https://github.com/schemacrawler/SchemaCrawler/commit/08d9b87c280bf23e405bea6265abf01448fa71d3)] * [Testcontainers](https://www.testcontainers.org/) [[`99b91b8`](https://github.com/testcontainers/testcontainers-java/commit/99b91b89b6ee3f8f0e9545e86d9f0744b301db30)] If you are using these images and would like to be listed as well, please open an [issue on GitHub](https://github.com/gvenzl/oci-oracle-xe/issues) or reach out on [Twitter](https://twitter.com/geraldvenzl). From ac450c210e2b27d064d229d2f365c4adabf7dfe2 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 23 Oct 2021 23:29:49 -0700 Subject: [PATCH 132/192] Add 21c supported tags Signed-off-by: gvenzl --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f95c676..766af34 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Oracle Database Express Edition Container / Docker images. # Supported tags and respective `Dockerfile` links +* [`21.3.0-full`, `21-full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.2130) * [`18.4.0`, `18`, `latest`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) * [`18.4.0-slim`, `18-slim`, `slim`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) * [`18.4.0-full`, `18-full`, `full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) From e5baf14140b0b4e70f904a2f00dcdbc505ef39e8 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 23 Oct 2021 23:37:48 -0700 Subject: [PATCH 133/192] Explain persistent containers Signed-off-by: gvenzl --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 766af34..b85e7ff 100644 --- a/README.md +++ b/README.md @@ -15,19 +15,19 @@ Oracle Database Express Edition Container / Docker images. # Quick Start -Run a new database container: +Run a new database container (data is removed when container is removed, but kept throughout container restarts): ```shell docker run -d -p 1521:1521 -e ORACLE_PASSWORD= gvenzl/oracle-xe ``` -Run a new persistent **18c** database container: +Run a new persistent database container (data is kept throughout container lifecycles): ```shell docker run -d -p 1521:1521 -e ORACLE_PASSWORD= -v oracle-volume:/opt/oracle/oradata gvenzl/oracle-xe ``` -Run a new persistent **11g R2** database container: +Run a new persistent **11g R2** database container (volume path differs in 11g R2): ```shell docker run -d -p 1521:1521 -e ORACLE_PASSWORD= -v oracle-volume:/u01/app/oracle/oradata gvenzl/oracle-xe:11 From 3d59a0ced1f0e853cf6241df097ae4ebf690fa06 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 23 Oct 2021 23:39:36 -0700 Subject: [PATCH 134/192] Update 18c to '18c and onwards' Signed-off-by: gvenzl --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b85e7ff..f413044 100644 --- a/README.md +++ b/README.md @@ -75,9 +75,9 @@ This variable is mandatory for the first container startup and specifies the pas ### `ORACLE_RANDOM_PASSWORD` This is an optional variable. Set this variable to a non-empty value, like `yes`, to generate a random initial password for the `SYS` and `SYSTEM` users. The generated password will be printed to stdout (`ORACLE PASSWORD FOR SYS AND SYSTEM: ...`). -### `ORACLE_DATABASE` (for 18c only) +### `ORACLE_DATABASE` (for 18c and onwards) This is an optional variable. Set this variable to a non-empty string to create a new pluggable database with the name specified in this variable. -**Note:** this variable is only supported for Oracle Database XE 18c as 11g does not support pluggable databases. +**Note:** this variable is only supported for Oracle Database XE 18c and onwards; 11g does not support pluggable databases. **Note:** creating a new database will add to the initial container startup time. If you do not want that additional startup time, use the already existing `XEPDB1` database instead. ### `APP_USER` From b257ed8ba327a64d18be7a0ab1f7a2e268e8ded3 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 29 Oct 2021 22:56:56 -0700 Subject: [PATCH 135/192] Add cleanup to 21c images Signed-off-by: gvenzl --- install.2130.sh | 51 ++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/install.2130.sh b/install.2130.sh index 8f10025..d445ea0 100644 --- a/install.2130.sh +++ b/install.2130.sh @@ -871,10 +871,6 @@ chown oracle:dba "${ORACLE_BASE}"/*.sh \ chmod u+x "${ORACLE_BASE}"/*.sh \ "${ORACLE_BASE}"/resetPassword -# TODO: relink Oracle binaries -# Multimedia: ord/im/lib/env_ordim.mk -# Java JIT (JOT) compiler: make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk jox_off_static ioracle - ######################### ####### Cleanup ######### ######################### @@ -892,28 +888,31 @@ rm -r /var/log/oracle-database-xe-21c rm -r /tmp/* # # Remove SYS audit directories and files created during install -# rm -r "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/adump/* -# rm -r "${ORACLE_BASE}"/audit/"${ORACLE_SID}"/* -# -# # Remove Data Pump log file -# rm "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/dpdump/dp.log -# -# # Remove Oracle DB install logs -# rm "${ORACLE_BASE}"/cfgtoollogs/dbca/XE/* -# rm "${ORACLE_BASE}"/cfgtoollogs/netca/* -# rm -r "${ORACLE_BASE}"/cfgtoollogs/sqlpatch/* -# rm "${ORACLE_BASE}"/oraInventory/logs/* -# rm "${ORACLE_HOME}"/cfgtoollogs/oui/* -# rm -r "${ORACLE_HOME}"/log/* -# -# # Remove diag files -# rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/lck/* -# rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/metadata/* -# rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/"${ORACLE_SID}"_* -# rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/drc"${ORACLE_SID}".log -# rm -r "${ORACLE_BASE}"/diag/tnslsnr/* -# -# # TODO: clean up os files +rm -r "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/adump/* +rm -r "${ORACLE_BASE}"/audit/"${ORACLE_SID}"/* + +# Remove Data Pump log file +rm "${ORACLE_BASE}"/admin/"${ORACLE_SID}"/dpdump/dp.log + +# Remove Oracle DB install logs +rm "${ORACLE_BASE}"/cfgtoollogs/dbca/XE/* +rm "${ORACLE_BASE}"/cfgtoollogs/netca/* +rm "${ORACLE_BASE}"/cfgtoollogs/roohctl/* +rm -r "${ORACLE_BASE_HOME}"/cfgtoollogs/sqlpatch/* +rm "${ORACLE_BASE}"/oraInventory/logs/* +rm -r "${ORACLE_BASE_HOME}"/log/* +rm -r "${ORACLE_BASE_HOME}"/rdbms/log/* + +# Remove diag files +rm -r "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/incident/* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/lck/* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/metadata/* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/"${ORACLE_SID}"_* +rm "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/stage/* +rm -r "${ORACLE_BASE}"/diag/rdbms/xe/"${ORACLE_SID}"/trace/cdmp_* +rm -r "${ORACLE_BASE}"/diag/tnslsnr/* + +# TODO: clean up os files # # /var/log/lastlog # # # Remove additional files for NOMRAL and SLIM builds From 5f6a8e11517d1afe5c259c29e071c9cebfe16397 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 29 Oct 2021 22:57:39 -0700 Subject: [PATCH 136/192] Add jOOQ as image user Signed-off-by: gvenzl --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f413044..a11aad6 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ We are proud of the following users of these images: * [Flowable](https://www.flowable.com/open-source/) [[`18c751f`](https://github.com/flowable/flowable-engine/commit/18c751fb369a74b71abc203f0b4ace151a96e862)] * [GeoTools](https://geotools.org/) [[`f922f0b`](https://github.com/geotools/geotools/commit/f922f0bdd19e32b9648ad644af2a1eed75417964)] * [Hibernate Search](https://hibernate.org/search/) [[`173f0b7`](https://github.com/hibernate/hibernate-search/commit/173f0b703defee81b6600c693d4d30b87a6ade41)] +* [jOOQ](https://www.jooq.org/) [[`#35`](https://github.com/gvenzl/oci-oracle-xe/issues/35)] * [Liquibase](https://www.liquibase.org/) [[`c6a31c0`](https://github.com/liquibase/liquibase-test-harness/commit/c6a31c0c54c1aa798839a2ef55ef6eb2363ea48f)] * [Micronaut Data](https://github.com/micronaut-projects/micronaut-data) [[`ddf11c1`](https://github.com/micronaut-projects/micronaut-data/commit/ddf11c1e8a7a27a1f6765cc5e1c1c3d3f74b475f)] * [Quarkus](https://quarkus.io/) [[`9a63a58`](https://github.com/quarkusio/quarkus/commit/9a63a58a6740fa1d5e3cc7912f89522dd78cee85)] From f0a3c6ffd3508aedc841c668e0ad620b4bdf0624 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 7 Nov 2021 22:41:40 -0700 Subject: [PATCH 137/192] Introducing 21c regular Signed-off-by: gvenzl --- ImageDetails.md | 280 ++++++++ README.md | 223 +----- install.2130.sh | 1212 ++++++++++++++++---------------- tests/build_Dockerfile_2130.sh | 6 +- tests/tag_image_latest.sh | 2 +- tests/tag_images_1840.sh | 2 + tests/tag_images_2130.sh | 4 +- tests/test_container_1840.sh | 2 - tests/test_container_2130.sh | 6 +- 9 files changed, 896 insertions(+), 841 deletions(-) create mode 100644 ImageDetails.md diff --git a/ImageDetails.md b/ImageDetails.md new file mode 100644 index 0000000..31f5ad2 --- /dev/null +++ b/ImageDetails.md @@ -0,0 +1,280 @@ +# Image details + +Here you can find a full description of all changes that have been made to the Oracle Database and OS installation for the various image flavors. + +## 21c XE + +### Full image flavor (`21-full`) + +The full image provides an Oracle Database XE installation "as is", meaning as provided by the RPM install file. +A couple of modifications have been performed to make the installation more suitable for running inside a container. + +#### Database settings + +* `DBMS_XDB.SETLISTENERLOCALACCESS(FALSE)` +* `COMMON_USER_PREFIX=''` +* `LOCAL_LISTENER=''` +* An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) + +### Regular image flavor (`21`) + +The regular image strives to balance between the functionality required by most users and image size. It has all customizations that the full image has and removes additional components to further decrease the image size: + +#### Database components + +* `Oracle Workspace Manager` has been removed +* `Oracle Database Java Packages` have been removed +* `Oracle Multimedia` has been removed (`$ORACLE_HOME/ord/im`) +* `Oracle XDK` has been removed (`$ORACLE_HOME/xdk`) +* `JServer JAVA Virtual Machine` has been removed (`$ORACLE_HOME/javavm`) +* `Oracle OLAP API` has been removed (`$ORACLE_HOME/olap`) +* `OLAP Analytic Workspace` has been removed +* `OPatch` utility has been removed (`$ORACLE_HOME/OPatch`) +* `QOpatch` utility has been removed (`$ORACLE_HOME/QOpatch`) +* `Oracle Database Assistants` have been removed (`$ORACLE_HOME/assistants`) +* The `inventory` directory has been removed (`$ORACLE_HOME/inventory`) +* `JDBC` drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`) +* `Universal Connection Pool` driver has been removed (`$ORACLE_HOME/ucp`) +* `Intel Math Kernel` libraries have been removed (`$ORACLE_HOME/lib/libmkl_*`) +* Zip files in lib/ have been removed (`$ORACLE_HOME/lib/*.zip`) +* Jar files in lib/ have been removed (`$ORACLE_HOME/lib/*.jar`) +* Additional Java libraries have been removed (`$ORACLE_HOME/rdbms/jlib`) +* The `Cluster Ready Services` directory has been removed (`$ORACLE_HOME/crs`) +* The `Cluster Verification Utility` directory has been removed (`$ORACLE_HOME/cv`) +* The `install` directory has been emptied, except `orabasetab` (`$ORACLE_HOME/install`) +* The `network/jlib` directory has been removed (`$ORACLE_HOME/network/jlib`) +* The `network/tools` directory has been removed (`$ORACLE_HOME/network/tools`) +* The `Oracle Process Manager and Notification` directory has been removed (`$ORACLE_HOME/opmn`) +* The `Oracle Machine Learning 4 Python` directory has been removed (`$ORACLE_HOME/oml4py`) +* `Python` has been removed (`$ORACLE_HOME/python`) + +##### Database binaries + +The following binaries have been removed from the `$ORACLE_HOME/bin` directory: + +* `$ORACLE_HOME/bin/afd*` (ASM Filter Drive components) +* `$ORACLE_HOME}/bin/proc` (Pro\*C/C++ Precompiler) +* `$ORACLE_HOME/bin/procob` (Pro COBOL Precompiler) +* `$ORACLE_HOME/bin/orion` (ORacle IO Numbers benchmark tool) + +The following binaries have been replaced by shell scripts with static output: + +* `orabase` +* `orabasehome` +* `orabaseconfig` + +##### Database libraries + +The following libraries have been removed from the `$ORACLE_HOME/lib` directory: + +* `$ORACLE_HOME/lib/libopc.so` (Oracle Public Cloud) +* `$ORACLE_HOME/lib/libosbws.so` (Oracle Secure Backup Cloud Module) +* `$ORACLE_HOME/lib/libra.so` (Recovery Appliance) + +#### Database settings + +* The `DEFAULT` profile has the following set: + * `FAILED_LOGIN_ATTEMPTS=UNLIMITED` + * `PASSWORD_LIFE_TIME=UNLIMITED` +* `SHARED_SERVERS=0` + +#### Operating system + +* The following Linux packages are not installed: + * `glibc-devel` + * `glibc-headers` + * `kernel-headers` + * `libpkgconf` + * `libxcrypt-devel` + * `pkgconf` + * `pkgconf-m4` + * `pkgconf-pkg-config` + +## 18c XE + +### Full image flavor (`18-full`) + +The full image provides an Oracle Database XE installation "as is", meaning as provided by the RPM install file. +A couple of modifications have been performed to make the installation more suitable for running inside a container. + +#### Database settings + +* `DBMS_XDB.SETLISTENERLOCALACCESS(FALSE)` +* `COMMON_USER_PREFIX=''` +* `LOCAL_LISTENER=''` +* An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) + +### Regular image flavor (`18`) + +The regular image strives to balance between the functionality required by most users and image size. It has all customizations that the full image has and removes additional components to further decrease the image size: + +#### Database components + +* The `HR` schema has been removed +* `Oracle Workspace Manager` has been removed +* `Oracle Multimedia` has been removed (`$ORACLE_HOME/ord/im`) +* `Oracle Database Java Packages` have been removed +* `Oracle XDK` has been removed (`$ORACLE_HOME/xdk`) +* `JServer JAVA Virtual Machine` has been removed (`$ORACLE_HOME/javavm`) +* `Oracle OLAP API` has been removed (`$ORACLE_HOME/olap`) +* `OLAP Analytic Workspace` has been removed +* `Oracle PGX` has been removed (`$ORACLE_HOME/md/property_graph`) +* `OPatch` utility has been removed (`$ORACLE_HOME/OPatch`) +* `QOpatch` utility has been removed (`$ORACLE_HOME/QOpatch`) +* `Oracle Database Assistants` have been removed (`$ORACLE_HOME/assistants`) +* `Oracle Database Migration Assistant for Unicode` has been removed (`$ORACLE_HOME/dmu`) +* The `inventory` directory has been removed (`$ORACLE_HOME/inventory`) +* `JDBC` drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`) +* `Universal Connection Pool` driver has been removed (`$ORACLE_HOME/ucp`) +* `Intel Math Kernel` libraries have been removed (`$ORACLE_HOME/lib/libmkl_*`) +* Zip files in lib/ have been removed (`$ORACLE_HOME/lib/*.zip`) +* Jar files in lib/ have been removed (`$ORACLE_HOME/lib/*.jar`) +* Additional Java libraries have been removed (`$ORACLE_HOME/rdbms/jlib`) +* The `Cluster Ready Services` directory has been removed (`$ORACLE_HOME/crs`) +* The `Cluster Verification Utility` directory has been removed (`$ORACLE_HOME/cv`) +* The `install` directory has been removed (`$ORACLE_HOME/install`) +* The `network/jlib` directory has been removed (`$ORACLE_HOME/network/jlib`) +* The `network/tools` directory has been removed (`$ORACLE_HOME/network/tools`) +* The `Oracle Process Manager and Notification` directory has been removed (`$ORACLE_HOME/opmn`) + +##### Database binaries + +The following binaries have been removed from the `$ORACLE_HOME/bin` directory: + +* `$ORACLE_HOME/bin/afd*` (ASM Filter Drive components) +* `$ORACLE_HOME}/bin/proc` (Pro\*C/C++ Precompiler) +* `$ORACLE_HOME/bin/procob` (Pro COBOL Precompiler) +* `$ORACLE_HOME/bin/orion` (ORacle IO Numbers benchmark tool) +* `$ORACLE_HOME/bin/drda*` (Distributed Relational Database Architecture components) + +The following binaries have been replaced by shell scripts with static output: + +* `orabase` +* `orabasehome` +* `orabaseconfig` + +##### Database libraries + +The following libraries have been removed from the `$ORACLE_HOME/lib` directory: + +* `$ORACLE_HOME/lib/libra.so` (Recovery Appliance) +* `$ORACLE_HOME/lib/libopc.so` (Oracle Public Cloud) +* `$ORACLE_HOME/lib/libosbws.so` (Oracle Secure Backup Cloud Module) + +#### Database settings + +* The `DEFAULT` profile has the following set: + * `FAILED_LOGIN_ATTEMPTS=UNLIMITED` + * `PASSWORD_LIFE_TIME=UNLIMITED` +* `SHARED_SERVERS=0` + +#### Operating system + +* The following Linux packages are not installed: + * `glibc-devel` + * `glibc-headers` + * `kernel-headers` + * `libpkgconf` + * `libxcrypt-devel` + * `pkgconf` + * `pkgconf-m4` + * `pkgconf-pkg-config` + +### Slim image flavor (`18-slim`) + +The slim images aims for smallest possible image size with only the Oracle Database relational components. It has all customizations that the regular image has and removes all non-relational components (where possible) to further decrease the image size: + +#### Database components + +* `Oracle Text` has been uninstalled and removed (`$ORACLE_HOME/ctx`) +* The demo samples directory has been removed (`$ORACLE_HOME/demo`) +* `ODBC` driver samples have been removed (`$ORACLE_HOME/odbc`) +* `TNS` demo samples have been removed (`$ORACLE_HOME/network/admin/samples`) +* `NLS LBuilder` directory has been removed (`$ORACLE_HOME/nls/lbuilder`) +* The hs directory has been removed (`$ORACLE_HOME/hs`) +* The `precomp` directory has been removed (`$ORACLE_HOME/precomp`) +* The `rdbms/public` directory has been removed (`$ORACLE_HOME/rdbms/public`) +* The `rdbms/xml` directory has been removed (`$ORACLE_HOME/rdbms/xml`) +* `Oracle Spatial` has been uninstalled and removed (`$ORACLE_HOME/md`) +* The `ord` directory has been removed (`$ORACLE_HOME/ord`) +* The `ordim` directory has been removed (`$ORACLE_HOME/ordim`) +* `Oracle R` has been removed (`$ORACLE_HOME/R`) +* The `deinstall` directory has been removed (`$ORACLE_HOME/deinstall`) +* The `Oracle Database Provider for Distributed Relational Database Architecture (DRDA)` has been removed (`$ORACLE_HOME/drdaas`) +* The `Oracle Universal installer` has been removed (`$ORACLE_HOME/oui`) +* `Perl` has been removed (`$ORACLE_HOME/perl`) + +##### Database binaries + +The following binaries have been removed from the `$ORACLE_HOME/bin` directory: + +* `$ORACLE_HOME/bin/rman` (Oracle Recovery Manager) +* `$ORACLE_HOME/bin/wrap` (PL/SQL Wrapper) + +##### Database libraries + +The following libraries have been removed from the `$ORACLE_HOME/lib` directory: + +* `$ORACLE_HOME/lib/asm*` (Oracle Automatic Storage Management) + +## 11g XE + +### Full image flavor (`11-full`) + +The full image provides an Oracle Database XE installation "as is", meaning as provided by the RPM install file. +A couple of modifications have been performed to make the installation more suitable for running inside a container. + +#### Database settings + +* Automatic Memory Management has been disables (`MEMORY_TARGET`) +* `DBMS_XDB.SETLISTENERLOCALACCESS()` has been set to `FALSE` +* An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) +* The `REDO` logs have been located into `$ORACLE_BASE/oradata/$ORACLE_SID/` +* The fast recovery area has been removed (`DB_RECOVERY_FILE_DEST=''`) + +### Regular image flavor (`11`) + +The regular image strives to balance between the functionality required by most users and image size. It has all customizations that the full image has and removes additional components to further decrease the image size: + +#### Database components + +* Oracle APEX has been removed (you can download and install the latest and greatest from [apex.oracle.com](https://apex.oracle.com) +* The `HR` schema has been removed +* `JDBC` drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`) + +#### Database settings + +* The `DEFAULT` profile has the following set: + * `FAILED_LOGIN_ATTEMPTS=UNLIMITED` + * `PASSWORD_LIFE_TIME=UNLIMITED` +* `SHARED_SERVERS=0` + +#### Operating system + +* The following Linux packages are not installed: + * `binutils` + * `gcc` + * `glibc` + * `make` + +### Slim image flavor (`11-slim`) + +The slim images aims for smallest possible image size with only the Oracle Database relational components. It has all customizations that the regular image has and removes all non-relational components (where possible) to further decrease the image size: + +#### Database components + +* `Oracle Text` has been uninstalled and removed (`$ORACLE_HOME/ctx`) +* `XML DB` has been uninstalled +* `XDK` has been removed (`$ORACLE_HOME/xdk`) +* `Oracle Spatial` has been uninstalled and removed (`$ORACLE_HOME/md`) +* The demo samples directory has been removed (`$ORACLE_HOME/demo`) +* `ODBC` driver samples have been removed (`$ORACLE_HOME/odbc`) +* `TNS` demo samples have been removed (`$ORACLE_HOME/network/admin/samples`) +* `NLS` demo samples have been removed (`$ORACLE_HOME/nls/demo`) +* The hs directory has been removed (`$ORACLE_HOME/hs`) +* The ldap directory has been removed (`$ORACLE_HOME/ldap`) +* The precomp directory has been removed (`$ORACLE_HOME/precomp`) +* The rdbms/demo directory has been removed (`$ORACLE_HOME/rdbms/demo`) +* The rdbms/jlib directory has been removed (`$ORACLE_HOME/rdbms/jlib`) +* The rdbms/public directory has been removed (`$ORACLE_HOME/rdbms/public`) +* The rdbms/xml directory has been removed (`$ORACLE_HOME/rdbms/xml`) diff --git a/README.md b/README.md index a11aad6..033a390 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Oracle Database Express Edition Container / Docker images. # Quick Start -Run a new database container (data is removed when container is removed, but kept throughout container restarts): +Run a new database container (data is removed when the container is removed, but kept throughout container restarts): ```shell docker run -d -p 1521:1521 -e ORACLE_PASSWORD= gvenzl/oracle-xe @@ -117,6 +117,16 @@ The images can be used as a [Service Container](https://docs.github.com/en/actio --health-retries 10 ``` +# Image flavors + +| Flavor | Extension | Description | Use cases | +| --------| --------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------| +| Slim | `-slim` | An image focussed on smallest possible image size instead of additional functionality. | Wherever small images sizes are important but advanced functionality of Oracle Database is not needed. | +| Regular | [None] | A well-balanced image between image size and functionality. Recommended for most use cases. | Recommended for most use cases. | +| Full | `-full` | An image containing all functionality as provided by the Oracle Database installation. | Best for extensions and/or customizations. | + +For a full list of changes that have been made to the Oracle Database and OS installation in each individual image flavor, please see [ImageDetails.md](https://github.com/gvenzl/oci-oracle-xe/blob/main/ImageDetails.md). + ## Container secrets As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to some of the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Container/Docker secrets stored in `/run/secrets/` files. For example: @@ -273,213 +283,6 @@ The execution order and implications are the same as with the [Initialization sc ***Warning:*** files placed in `/container-entrypoint-startdb.d` are always executed after the database in a container is started, including pre-created databases. Use this mechanism only if you wish to perform a certain task always after the database has been (re)started by the container. -# Image flavors - -| Flavor | Extension | Description | Use cases | -| --------| --------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------| -| Slim | `-slim` | An image focussed on smallest possible image size instead of additional functionality. | Wherever small images sizes are important but advanced functionality of Oracle Database is not needed. | -| Regular | [None] | A well-balanced image between image size and functionality. Recommended for most use cases. | Recommended for most use cases. | -| Full | `-full` | An image containing all functionality as provided by the Oracle Database installation. | Best for extensions and/or customizations. | - -## 21c XE - -### Full image flavor (`21-full`) - -The full image provides an Oracle Database XE installation "as is", meaning as provided by the RPM install file. -A couple of modifications have been performed to make the installation more suitable for running inside a container. - -#### Database settings - -* `DBMS_XDB.SETLISTENERLOCALACCESS(FALSE)` -* `COMMON_USER_PREFIX=''` -* `LOCAL_LISTENER=''` -* An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) - -## 18c XE - -### Full image flavor (`18-full`) - -The full image provides an Oracle Database XE installation "as is", meaning as provided by the RPM install file. -A couple of modifications have been performed to make the installation more suitable for running inside a container. - -#### Database settings - -* `DBMS_XDB.SETLISTENERLOCALACCESS(FALSE)` -* `COMMON_USER_PREFIX=''` -* `LOCAL_LISTENER=''` -* An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) - -### Regular image flavor (`18`) - -The regular image strives to balance between the functionality required by most users and image size. It has all customizations that the full image has and removes additional components to further decrease the image size: - -#### Database components - -* The `HR` schema has been removed -* `Oracle Workspace Manager` has been removed -* `Oracle Multimedia` has been removed -* `Oracle Database Java Packages` have been removed -* `Oracle XDK` has been removed (`$ORACLE_HOME/xdk`) -* `JServer JAVA Virtual Machine` has been removed -* `Oracle OLAP API` has been removed -* `OLAP Analytic Workspace` has been removed -* `Oracle PGX` has been removed (`$ORACLE_HOME/md/property_graph`) -* `OPatch` utility has been removed (`$ORACLE_HOME/OPatch`) -* `QOpatch` utility has been removed (`$ORACLE_HOME/QOpatch`) -* `Oracle Database Assistants` have been removed (`$ORACLE_HOME/assistants`) -* `Oracle Database Migration Assistant for Unicode` has been removed (`$ORACLE_HOME/dmu`) -* The `inventory` directory has been removed (`$ORACLE_HOME/inventory`) -* `JDBC` drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`) -* `Universal Connection Pool` driver has been removed (`$ORACLE_HOME/ucp`) -* `Intel Math Kernel` libraries have been removed (`$ORACLE_HOME/lib/libmkl_*`) -* Zip files in lib/ have been removed (`$ORACLE_HOME/lib/*.zip`) -* Jar files in lib/ have been removed (`$ORACLE_HOME/lib/*.jar`) -* Additional Java libraries have been removed (`$ORACLE_HOME/rdbms/jlib`) -* The `Cluster Ready Services` directory has been removed (`$ORACLE_HOME/crs`) -* The `Cluster Verification Utility` directory has been removed (`$ORACLE_HOME/cv`) -* The `install` directory has been removed (`$ORACLE_HOME/install`) -* The `Oracle Universal installer` has been removed (`$ORACLE_HOME/oui`) -* The `network/jlib` directory has been remove (`$ORACLE_HOME/network/jlib`) -* The `network/tools` directory has been remove (`$ORACLE_HOME/network/tools`) -* The `Oracle Process Manager and Notification` directory has been removed (`$ORACLE_HOME/opmn`) - -##### Database binaries - -The following binaries have been removed from the `$ORACLE_HOME/bin` directory: - -* `$ORACLE_HOME/bin/afd*` (ASM Filter Drive components) -* `$ORACLE_HOME}/bin/proc` (Pro\*C/C++ Precompiler) -* `$ORACLE_HOME/bin/procob` (Pro COBOL Precompiler) -* `$ORACLE_HOME/bin/orion` (ORacle IO Numbers benchmark tool) -* `$ORACLE_HOME/bin/drda*` (Distributed Relational Database Architecture components) - -The following binaries have been replaces by shell scripts with static output: - -* `orabase` -* `orabasehome` -* `orabaseconfig` - -##### Database libraries - -The following libraries have been removed from the `$ORACLE_HOME/lib` directory: - -* `$ORACLE_HOME/lib/libra.so` (Recovery Appliance) -* `$ORACLE_HOME/lib/libopc.so` (Oracle Public Cloud) -* `$ORACLE_HOME/lib/libosbws.so` (Oracle Secure Backup Cloud Module) - -#### Database settings - -* The `DEFAULT` profile has the following set: - * `FAILED_LOGIN_ATTEMPTS=UNLIMITED` - * `PASSWORD_LIFE_TIME=UNLIMITED` -* `SHARED_SERVERS=0` - -#### Operating system - -* The following Linux packages are not installed: - * `glibc-devel` - * `glibc-headers` - * `kernel-headers` - * `libpkgconf` - * `libxcrypt-devel` - * `pkgconf` - * `pkgconf-m4` - * `pkgconf-pkg-config` - -### Slim image flavor (`18-slim`) - -The slim images aims for smallest possible image size with only the Oracle Database relational components. It has all customizations that the regular image has and removes all non-relational components (where possible) to further decrease the image size: - -#### Database components - -* `Oracle Text` has been uninstalled and removed (`$ORACLE_HOME/ctx`) -* The demo samples directory has been removed (`$ORACLE_HOME/demo`) -* `ODBC` driver samples have been removed (`$ORACLE_HOME/odbc`) -* `TNS` demo samples have been removed (`$ORACLE_HOME/network/admin/samples`) -* `NLS LBuilder` directory has been removed (`$ORACLE_HOME/nls/lbuilder`) -* The hs directory has been removed (`$ORACLE_HOME/hs`) -* The `precomp` directory has been removed (`$ORACLE_HOME/precomp`) -* The `rdbms/public` directory has been removed (`$ORACLE_HOME/rdbms/public`) -* The `rdbms/xml` directory has been removed (`$ORACLE_HOME/rdbms/xml`) -* `Oracle Spatial` has been uninstalled and removed (`$ORACLE_HOME/md`) -* The `ord` directory has been removed (`$ORACLE_HOME/ord`) -* The `ordim` directory has been removed (`$ORACLE_HOME/ordim`) -* `Oracle R` has been removed (`$ORACLE_HOME/R`) -* The `deinstall` directory has been removed (`$ORACLE_HOME/deinstall`) -* The `Oracle Database Provider for Distributed Relational Database Architecture (DRDA)` has been removed (`$ORACLE_HOME/drdaas`) -* `Perl` has been removed (`$ORACLE_HOME/perl`) - -##### Database binaries - -The following binaries have been removed from the `$ORACLE_HOME/bin` directory: - -* `$ORACLE_HOME/bin/rman` (Oracle Recovery Manager) -* `$ORACLE_HOME/bin/wrap` (PL/SQL Wrapper) - -##### Database libraries - -The following libraries have been removed from the `$ORACLE_HOME/lib` directory: - -* `$ORACLE_HOME/lib/asm*` (Oracle Automatic Storage Management) - -## 11g XE - -### Full image flavor (`11-full`) - -The full image provides an Oracle Database XE installation "as is", meaning as provided by the RPM install file. -A couple of modifications have been performed to make the installation more suitable for running inside a container. - -#### Database settings - -* Automatic Memory Management has been disables (`MEMORY_TARGET`) -* `DBMS_XDB.SETLISTENERLOCALACCESS()` has been set to `FALSE` -* An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) -* The `REDO` logs have been located into `$ORACLE_BASE/oradata/$ORACLE_SID/` -* The fast recovery area has been removed (`DB_RECOVERY_FILE_DEST=''`) - -### Regular image flavor (`11`) - -The regular image strives to balance between the functionality required by most users and image size. It has all customizations that the full image has and removes additional components to further decrease the image size: - -#### Database components - -* Oracle APEX has been removed (you can download and install the latest and greatest from [apex.oracle.com](https://apex.oracle.com) -* The `HR` schema has been removed -* `JDBC` drivers have been removed (`$ORACLE_HOME/jdbc`, `$ORACLE_HOME/jlib`) - -#### Database settings - -* The `DEFAULT` profile has the following set: - * `FAILED_LOGIN_ATTEMPTS=UNLIMITED` - * `PASSWORD_LIFE_TIME=UNLIMITED` -* `SHARED_SERVERS=0` - -#### Operating system - -* The following Linux packages are not installed: - * `binutils` - * `gcc` - * `glibc` - * `make` - -### Slim image flavor (`11-slim`) - -The slim images aims for smallest possible image size with only the Oracle Database relational components. It has all customizations that the regular image has and removes all non-relational components (where possible) to further decrease the image size: - -#### Database components +# Feedback -* `Oracle Text` has been uninstalled and removed (`$ORACLE_HOME/ctx`) -* `XML DB` has been uninstalled -* `XDK` has been removed (`$ORACLE_HOME/xdk`) -* `Oracle Spatial` has been uninstalled and removed (`$ORACLE_HOME/md`) -* The demo samples directory has been removed (`$ORACLE_HOME/demo`) -* `ODBC` driver samples have been removed (`$ORACLE_HOME/odbc`) -* `TNS` demo samples have been removed (`$ORACLE_HOME/network/admin/samples`) -* `NLS` demo samples have been removed (`$ORACLE_HOME/nls/demo`) -* The hs directory has been removed (`$ORACLE_HOME/hs`) -* The ldap directory has been removed (`$ORACLE_HOME/ldap`) -* The precomp directory has been removed (`$ORACLE_HOME/precomp`) -* The rdbms/demo directory has been removed (`$ORACLE_HOME/rdbms/demo`) -* The rdbms/jlib directory has been removed (`$ORACLE_HOME/rdbms/jlib`) -* The rdbms/public directory has been removed (`$ORACLE_HOME/rdbms/public`) -* The rdbms/xml directory has been removed (`$ORACLE_HOME/rdbms/xml`) +If you have questions or constructive feedback about these images, please file a ticket over at [github.com/gvenzl/oci-oracle-xe](https://github.com/gvenzl/oci-oracle-xe/issues). diff --git a/install.2130.sh b/install.2130.sh index d445ea0..46bbe0b 100644 --- a/install.2130.sh +++ b/install.2130.sh @@ -30,16 +30,15 @@ BUILD_MODE=${1:-"REGULAR"} echo "BUILDER: BUILD_MODE=${BUILD_MODE}" # Set data file sizes -#CDB_SYSAUX_SIZE=480 -#PDB_SYSAUX_SIZE=342 -#CDB_SYSTEM_SIZE=840 -#PDB_SYSTEM_SIZE=255 +CDB_SYSAUX_SIZE=560 +PDB_SYSAUX_SIZE=330 +CDB_SYSTEM_SIZE=1330 +PDB_SYSTEM_SIZE=272 if [ "${BUILD_MODE}" == "FULL" ]; then REDO_SIZE=50 -#elif [ "${BUILD_MODE}" == "REGULAR" ]; then -# REDO_SIZE=20 -# USERS_SIZE=10 -# CDB_SYSAUX_SIZE=464 +elif [ "${BUILD_MODE}" == "REGULAR" ]; then + REDO_SIZE=20 + USERS_SIZE=10 #elif [ "${BUILD_MODE}" == "SLIM" ]; then # REDO_SIZE=10 # USERS_SIZE=2 @@ -229,313 +228,284 @@ EOF ################################### # If not building the FULL image, remove and shrink additional components -# if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then -# -# echo "BUILDER: further optimizations for REGULAR and SLIM image" -# -# # Open PDB\$SEED to READ/WRITE -# echo "BUILDER: Opening PDB\$SEED in READ/WRITE mode" -# su -p oracle -c "sqlplus -s / as sysdba" << EOF -# -# -- Exit on any errors -# WHENEVER SQLERROR EXIT SQL.SQLCODE -# -# -- Open PDB\$SEED to READ WRITE mode -# ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; -# ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; -# -# exit; -# EOF -# -# # Change parameters/settings -# echo "BUILDER: changing database configuration and parameters for REGULAR and SLIM images" -# su -p oracle -c "sqlplus -s / as sysdba" << EOF -# -# -- Exit on any errors -# WHENEVER SQLERROR EXIT SQL.SQLCODE -# -# -- Deactivate Intel's Math Kernel Libraries -# -- Like with every underscore parameter, DO NOT SET THIS PARAMETER EVER UNLESS YOU KNOW WHAT THE HECK YOU ARE DOING! -# ALTER SYSTEM SET "_dmm_blas_library"='libora_netlib.so' SCOPE=SPFILE; -# -# -- Disable shared servers (enables faster shutdown) -# ALTER SYSTEM SET SHARED_SERVERS=0; -# -# ------------------------------------- -# -- Disable password profile checks -- -# ------------------------------------- -# -# -- Disable password profile checks (can only be done container by container) -# ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; -# -# ALTER SESSION SET CONTAINER=PDB\$SEED; -# ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; -# -# ALTER SESSION SET CONTAINER=XEPDB1; -# ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; -# -# ------------------------------- -# -- Remove HR schema from PDB -- -# ------------------------------- -# -# ALTER SESSION SET CONTAINER=XEPDB1; -# DROP user HR cascade; -# -# exit; -# EOF -# -# ######################## -# # Remove DB components # -# ######################## -# -# # Needs to be run as 'oracle' user (Perl script otherwise fails #TODO: see whether it can be run with su -c somehow instead) -# echo "BUILDER: Removing additional components for REGULAR image" -# su - oracle << EOF -# cd "${ORACLE_HOME}"/rdbms/admin -# -# # Remove Workspace Manager -# echo "BUILDER: Removing Oracle Workspace Manager" -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_workspace_manager_pdbs -d "${ORACLE_HOME}"/rdbms/admin owmuinst.plb -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_workspace_manager_cdb -d "${ORACLE_HOME}"/rdbms/admin owmuinst.plb -# -# echo "BUILDER: Removing Oracle Multimedia" -# # Remove Multimedia (dependent on Oracle Database Java Packages) -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_multimedia_pdbs -d "${ORACLE_HOME}"/ord/im/admin imremdo.sql -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_multimedia_cdb -d "${ORACLE_HOME}"/ord/im/admin imremdo.sql -# -# # Remove Oracle Database Java Packages -# echo "BUILDER: Removing Oracle Database Java Packages" -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_java_packages -d "${ORACLE_HOME}"/rdbms/admin catnojav.sql -# -# # Remove Oracle XDK -# echo "BUILDER: Removing Oracle XDK" -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_xdk -d "${ORACLE_HOME}"/xdk/admin rmxml.sql -# -# # Remove Oracle JServer JAVA Virtual Machine -# echo "BUILDER: Removing Oracle JServer JAVA Virtual Machine" -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_jvm -d "${ORACLE_HOME}"/javavm/install rmjvm.sql -# -# # Remove Oracle OLAP API -# echo "BUILDER: Removing Oracle OLAP API" -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_olap_api_pdbs_1 -d "${ORACLE_HOME}"/olap/admin/ olapidrp.plb -# # Needs to be done one by one, otherwise there is a ORA-65023: active transaction exists in container PDB\$SEED -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'PDB\$SEED' -b builder_remove_olap_api_pdbseed_2 -d "${ORACLE_HOME}"/olap/admin/ catnoxoq.sql -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'XEPDB1' -b builder_remove_olap_api_xepdb1_2 -d "${ORACLE_HOME}"/olap/admin/ catnoxoq.sql -# # Remove it from the CDB -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_olap_api_cdb_1 -d "${ORACLE_HOME}"/olap/admin/ olapidrp.plb -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_olap_api_cdb_2 -d "${ORACLE_HOME}"/olap/admin/ catnoxoq.sql -# -# # Remove OLAP Analytic Workspace -# echo "BUILDER: Removing OLAP Analytic Workspace" -# # Needs to be done one by one, otherwise there is a ORA-65023: active transaction exists in container PDB\$SEED -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'PDB\$SEED' -b builder_remove_olap_workspace_pdb_seed -d "${ORACLE_HOME}"/olap/admin/ catnoaps.sql -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'XEPDB1' -b builder_remove_olap_workspace_xepdb1 -d "${ORACLE_HOME}"/olap/admin/ catnoaps.sql -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_olap_workspace_cdb -d "${ORACLE_HOME}"/olap/admin/ catnoaps.sql -# -# # Recompile -# echo "BUILDER: Recompiling database objects" -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_recompile_all_objects -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql -# -# # Remove all log files -# rm "${ORACLE_HOME}"/rdbms/admin/builder_* -# -# exit; -# EOF -# -# # Drop leftover items -# echo "BUILDER: Dropping leftover Database dictionary objects for REGULAR image" -# su -p oracle -c "sqlplus -s / as sysdba" << EOF -# -# -- Exit on any errors -# WHENEVER SQLERROR EXIT SQL.SQLCODE -# -# -- Oracle Multimedia leftovers -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORDIMDPCALLOUTS'); -# -# -- Open PDB\$SEED to READ WRITE mode (catcon put it into READY ONLY again) -# ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; -# ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; -# -# ALTER SESSION SET CONTAINER=PDB\$SEED; -# -# -- Remove Java VM leftovers -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JAVAVM_SYS'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JVMRJBCINV'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE DBMS_JAVA_MISC'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE OJDS_CONTEXT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$NODE_NUMBER\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$BINDINGS\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$INODE\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$ATTRIBUTES\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$REFADDR\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$PERMISSIONS\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$SEQ\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP TRIGGER OJDS\$ROLE_TRIGGER\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER OJVMSYS'); -# -# -- Oracle Multimedia leftovers -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORDIMDPCALLOUTS'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLOR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_STILLIMAGE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_AVERAGECOLOR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLORHISTOGRAM'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_POSITIONALCOLOR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_TEXTURE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FEATURELIST'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDAUDIO'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDVIDEO'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDOC'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGESIGNATURE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDICOM'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDATASOURCE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDPLSGWYUTIL'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE1'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE2'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORA_SI_MKSTILLIMAGE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CHGCONTENT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CONVERTFORMAT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTHMBNL'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETSIZEDTHMBNL'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENTLNGTH'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETHEIGHT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETWIDTH'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETFORMAT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKRGBCLR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDAVGCLR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKAVGCLR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYAVGCLR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDCLRHSTGR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKCLRHSTGR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_ARRAYCLRHSTGR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_APPENDCLRHSTGR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYCLRHSTGR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDPSTNLCLR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYPSTNLCLR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDTEXTURE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYTEXTURE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKFTRLIST'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETAVGCLRFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETCLRHSTGRFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETPSTNLCLRFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETTEXTUREFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTRW'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTRW'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTRW'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTRW'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYFTRLIST'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM_ADMIN'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_IMAGE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_AUDIO'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_VIDEO'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DOC'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DBRELEASE_DOCS'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENTS'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_TYPES'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONSTRAINT_NAMES'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_REFS'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONFORMANCE_VLD_MSGS'); -# -# ALTER SESSION SET CONTAINER=XEPDB1; -# -# -- Remove Java VM leftovers -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JAVAVM_SYS'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE JVMRJBCINV'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE DBMS_JAVA_MISC'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE OJDS_CONTEXT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$NODE_NUMBER\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$BINDINGS\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$INODE\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$ATTRIBUTES\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$REFADDR\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$PERMISSIONS\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$SEQ\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP SYNONYM OJDS\$SHARED\$OBJ\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP TRIGGER OJDS\$ROLE_TRIGGER\$'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER OJVMSYS'); -# -# -- Oracle Multimedia leftovers -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORD_ADMIN'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE SYS.ORDIMDPCALLOUTS'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLOR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_STILLIMAGE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_AVERAGECOLOR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLORHISTOGRAM'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_POSITIONALCOLOR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_TEXTURE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FEATURELIST'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDAUDIO'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDVIDEO'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDOC'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGESIGNATURE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDICOM'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDATASOURCE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDPLSGWYUTIL'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE1'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE2'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORA_SI_MKSTILLIMAGE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CHGCONTENT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CONVERTFORMAT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTHMBNL'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETSIZEDTHMBNL'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENTLNGTH'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETHEIGHT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETWIDTH'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETFORMAT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKRGBCLR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDAVGCLR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKAVGCLR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYAVGCLR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDCLRHSTGR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKCLRHSTGR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_ARRAYCLRHSTGR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_APPENDCLRHSTGR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYCLRHSTGR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDPSTNLCLR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYPSTNLCLR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDTEXTURE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYTEXTURE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKFTRLIST'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETAVGCLRFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETCLRHSTGRFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETPSTNLCLRFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETTEXTUREFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTRW'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTRW'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTRW'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTR'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTRW'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYFTRLIST'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM_ADMIN'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_IMAGE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_AUDIO'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_VIDEO'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DOC'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DBRELEASE_DOCS'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENTS'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_TYPES'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONSTRAINT_NAMES'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_REFS'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONFORMANCE_VLD_MSGS'); -# -# exit; -# EOF -# +if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then + + echo "BUILDER: further optimizations for REGULAR and SLIM image" + + # Open PDB\$SEED to READ/WRITE + echo "BUILDER: Opening PDB\$SEED in READ/WRITE mode" + su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + + -- Open PDB\$SEED to READ WRITE mode + ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; + ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; + + exit; +EOF + + # Change parameters/settings + echo "BUILDER: changing database configuration and parameters for REGULAR and SLIM images" + su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + + -- Deactivate Intel's Math Kernel Libraries + -- Like with every underscore parameter, DO NOT SET THIS PARAMETER EVER UNLESS YOU KNOW WHAT THE HECK YOU ARE DOING! + ALTER SYSTEM SET "_dmm_blas_library"='libora_netlib.so' SCOPE=SPFILE; + + -- Disable shared servers (enables faster shutdown) + ALTER SYSTEM SET SHARED_SERVERS=0; + + ------------------------------------- + -- Disable password profile checks -- + ------------------------------------- + + -- Disable password profile checks (can only be done container by container) + ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; + + ALTER SESSION SET CONTAINER=PDB\$SEED; + ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; + + ALTER SESSION SET CONTAINER=XEPDB1; + ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; + + exit; +EOF + + ######################## + # Remove DB components # + ######################## + + # Needs to be run as 'oracle' user (Perl script otherwise fails #TODO: see whether it can be run with su -c somehow instead) + echo "BUILDER: Removing additional components for REGULAR image" + su - oracle << EOF + cd "${ORACLE_HOME}"/rdbms/admin + + # Remove Workspace Manager + echo "BUILDER: Removing Oracle Workspace Manager" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_workspace_manager_pdbs -d "${ORACLE_HOME}"/rdbms/admin owmuinst.plb + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_workspace_manager_cdb -d "${ORACLE_HOME}"/rdbms/admin owmuinst.plb + + # Remove Oracle Database Java Packages + echo "BUILDER: Removing Oracle Database Java Packages" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_java_packages -d "${ORACLE_HOME}"/rdbms/admin catnojav.sql + + echo "BUILDER: Removing Oracle Multimedia" + # Remove Multimedia (dependent on Oracle Database Java Packages) + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_multimedia_pdbs -d "${ORACLE_HOME}"/ord/im/admin imremdo.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_multimedia_cdb -d "${ORACLE_HOME}"/ord/im/admin imremdo.sql + + # Remove Oracle XDK + echo "BUILDER: Removing Oracle XDK" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_xdk -d "${ORACLE_HOME}"/xdk/admin rmxml.sql + + # Remove Oracle JServer JAVA Virtual Machine + echo "BUILDER: Removing Oracle JServer JAVA Virtual Machine" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_jvm -d "${ORACLE_HOME}"/javavm/install rmjvm.sql + + # Remove Oracle OLAP API + echo "BUILDER: Removing Oracle OLAP API" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_olap_api_pdbs_1 -d "${ORACLE_HOME}"/olap/admin/ olapidrp.plb + # Needs to be done one by one, otherwise there is a ORA-65023: active transaction exists in container PDB\$SEED + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'PDB\$SEED' -b builder_remove_olap_api_pdbseed_2 -d "${ORACLE_HOME}"/olap/admin/ catnoxoq.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'XEPDB1' -b builder_remove_olap_api_xepdb1_2 -d "${ORACLE_HOME}"/olap/admin/ catnoxoq.sql + # Remove it from the CDB + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_olap_api_cdb_1 -d "${ORACLE_HOME}"/olap/admin/ olapidrp.plb + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_olap_api_cdb_2 -d "${ORACLE_HOME}"/olap/admin/ catnoxoq.sql + + # Remove OLAP Analytic Workspace + echo "BUILDER: Removing OLAP Analytic Workspace" + # Needs to be done one by one, otherwise there is a ORA-65023: active transaction exists in container PDB\$SEED + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'PDB\$SEED' -b builder_remove_olap_workspace_pdb_seed -d "${ORACLE_HOME}"/olap/admin/ catnoaps.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'XEPDB1' -b builder_remove_olap_workspace_xepdb1 -d "${ORACLE_HOME}"/olap/admin/ catnoaps.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_olap_workspace_cdb -d "${ORACLE_HOME}"/olap/admin/ catnoaps.sql + + # Recompile + echo "BUILDER: Recompiling database objects" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_recompile_all_objects -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql + + # Remove all log files + rm "${ORACLE_HOME}"/rdbms/admin/builder_* + + exit; +EOF + + # Drop leftover items + echo "BUILDER: Dropping leftover Database dictionary objects for REGULAR image" + su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + + -- Open PDB\$SEED to READ WRITE mode (catcon put it into READY ONLY again) + ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; + ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; + + -- Remove Java VM leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE DBMS_JAVA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP FUNCTION DBJ_SHORT_NAME'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_JAVA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBJ_SHORT_NAME'); + + ALTER SESSION SET CONTAINER=PDB\$SEED; + + -- Remove Java VM leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE DBMS_JAVA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP FUNCTION DBJ_SHORT_NAME'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_JAVA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBJ_SHORT_NAME'); + + -- Oracle Multimedia leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_STILLIMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_AVERAGECOLOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLORHISTOGRAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_POSITIONALCOLOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_TEXTURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FEATURELIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDAUDIO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDVIDEO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDOC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGESIGNATURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDICOM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDATASOURCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDPLSGWYUTIL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE1'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE2'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORA_SI_MKSTILLIMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CHGCONTENT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CONVERTFORMAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTHMBNL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETSIZEDTHMBNL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENTLNGTH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETHEIGHT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETWIDTH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETFORMAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKRGBCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDAVGCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKAVGCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYAVGCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_ARRAYCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_APPENDCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDPSTNLCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYPSTNLCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDTEXTURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYTEXTURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKFTRLIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETAVGCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETCLRHSTGRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETPSTNLCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETTEXTUREFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYFTRLIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM_ADMIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_IMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_AUDIO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_VIDEO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DOC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DBRELEASE_DOCS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_TYPES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONSTRAINT_NAMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_REFS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONFORMANCE_VLD_MSGS'); + + ALTER SESSION SET CONTAINER=XEPDB1; + + -- Remove Java VM leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE DBMS_JAVA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP FUNCTION DBJ_SHORT_NAME'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_JAVA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBJ_SHORT_NAME'); + + -- Oracle Multimedia leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_STILLIMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_AVERAGECOLOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_COLORHISTOGRAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_POSITIONALCOLOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_TEXTURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FEATURELIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDAUDIO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDVIDEO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDOC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDIMAGESIGNATURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDICOM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDATASOURCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDPLSGWYUTIL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE1'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKSTILLIMAGE2'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORA_SI_MKSTILLIMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CHGCONTENT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_CONVERTFORMAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTHMBNL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETSIZEDTHMBNL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCONTENTLNGTH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETHEIGHT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETWIDTH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETFORMAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKRGBCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDAVGCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKAVGCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYAVGCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_ARRAYCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_APPENDCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYCLRHSTGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDPSTNLCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYPSTNLCLR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_FINDTEXTURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYTEXTURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_MKFTRLIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETAVGCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETCLRHSTGRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETPSTNLCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SETTEXTUREFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETAVGCLRFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETCLRHSTGRFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETPSTNLCLRFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_GETTEXTUREFTRW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SI_SCOREBYFTRLIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DICOM_ADMIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_IMAGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_AUDIO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_VIDEO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORD_DOC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DBRELEASE_DOCS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_TYPES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONSTRAINT_NAMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_DOCUMENT_REFS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ORDDCM_CONFORMANCE_VLD_MSGS'); + + exit; +EOF + # #################################### # # SLIM Image: Remove DB components # # #################################### @@ -616,210 +586,210 @@ EOF # # fi; # -# ##################### -# # Shrink data files # -# ##################### -# su -p oracle -c "sqlplus -s / as sysdba" << EOF -# -# -- Exit on any errors -# WHENEVER SQLERROR EXIT SQL.SQLCODE -# -# ---------------------------- -# -- Shrink SYSAUX tablespaces -# ---------------------------- -# -# -- Create new temporary SYSAUX tablespace -# --CREATE TABLESPACE SYSAUX_TEMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux_temp.dbf' -# --SIZE 250M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED; -# -# -- Move tables to temporary SYSAUX tablespace -# --#TODO -# --BEGIN -# -- FOR cur IN (SELECT owner || '.' || table_name AS name FROM all_tables WHERE tablespace_name = 'SYSAUX') LOOP -# -- EXECUTE IMMEDIATE 'ALTER TABLE ' || cur.name || ' MOVE TABLESPACE SYSAUX_TEMP'; -# -- END LOOP; -# --END; -# --/ -# -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux01.dbf' RESIZE ${CDB_SYSAUX_SIZE}M; -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux01.dbf' -# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# ALTER SESSION SET CONTAINER=PDB\$SEED; -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/sysaux01.dbf' RESIZE ${PDB_SYSAUX_SIZE}M; -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/sysaux01.dbf' -# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# ALTER SESSION SET CONTAINER=XEPDB1; -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/sysaux01.dbf' RESIZE ${PDB_SYSAUX_SIZE}M; -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/sysaux01.dbf' -# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# ALTER SESSION SET CONTAINER=CDB\$ROOT; -# -# ---------------------------- -# -- Shrink SYSTEM tablespaces -# ---------------------------- -# -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/system01.dbf' RESIZE ${CDB_SYSTEM_SIZE}M; -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/system01.dbf' -# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# ALTER SESSION SET CONTAINER=PDB\$SEED; -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/system01.dbf' RESIZE ${PDB_SYSTEM_SIZE}M; -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/system01.dbf' -# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# ALTER SESSION SET CONTAINER=XEPDB1; -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/system01.dbf' RESIZE ${PDB_SYSTEM_SIZE}M; -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/system01.dbf' -# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# ALTER SESSION SET CONTAINER=CDB\$ROOT; -# -# -------------------------- -# -- Shrink TEMP tablespaces -# -------------------------- -# -# ALTER TABLESPACE TEMP SHRINK SPACE; -# ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp01.dbf' -# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# -------------------------------------- -# ALTER SESSION SET CONTAINER=PDB\$SEED; -# -------------------------------------- -# -# CREATE TEMPORARY TABLESPACE TEMP_TMP TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/temp_tmp.dbf' -# SIZE 2M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP_TMP; -# -# DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES; -# -# CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/temp01.dbf' -# SIZE 2M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP; -# -# DROP TABLESPACE TEMP_TMP INCLUDING CONTENTS AND DATAFILES; -# -# ----------------------------------- -# ALTER SESSION SET CONTAINER=XEPDB1; -# ----------------------------------- -# -# ALTER TABLESPACE TEMP SHRINK SPACE; -# ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/temp01.dbf' -# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# ALTER SESSION SET CONTAINER=CDB\$ROOT; -# -# ---------------------------- -# -- Shrink USERS tablespaces -# ---------------------------- -# -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/users01.dbf' RESIZE ${USERS_SIZE}M; -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/users01.dbf' -# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# ALTER SESSION SET CONTAINER=XEPDB1; -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/users01.dbf' RESIZE ${USERS_SIZE}M; -# ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/users01.dbf' -# AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# ALTER SESSION SET CONTAINER=CDB\$ROOT; -# -# ---------------------------- -# -- Shrink UNDO tablespaces -# ---------------------------- -# -# -- Create new temporary UNDO tablespace -# CREATE UNDO TABLESPACE UNDO_TMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs_tmp.dbf' -# SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# -- Use new temporary UNDO tablespace (so that old one can be deleted) -# ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP'; -# -# -- Delete old UNDO tablespace -# DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES; -# -# -- Recreate old UNDO tablespace with 1M size and AUTOEXTEND -# CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs01.dbf' -# SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# -- Use newly created UNDO tablespace -# ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'; -# -# -- Drop temporary UNDO tablespace -# DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; -# -# -------------------------------------- -# ALTER SESSION SET CONTAINER=PDB\$SEED; -# -------------------------------------- -# -# -- Create new temporary UNDO tablespace -# CREATE UNDO TABLESPACE UNDO_TMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/undotbs_tmp.dbf' -# SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# -- Use new temporary UNDO tablespace (so that old one can be deleted) -# ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP'; -# -# -- Delete old UNDO tablespace -# DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES; -# -# -- Recreate old UNDO tablespace with 1M size and AUTOEXTEND -# CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/undotbs01.dbf' -# SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# -- Use newly created UNDO tablespace -# ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'; -# -# -- Drop temporary UNDO tablespace -# DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; -# -# ----------------------------------- -# ALTER SESSION SET CONTAINER=XEPDB1; -# ----------------------------------- -# -# -- Create new temporary UNDO tablespace -# CREATE UNDO TABLESPACE UNDO_TMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/undotbs_tmp.dbf' -# SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# -- Use new temporary UNDO tablespace (so that old one can be deleted) -# ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP'; -# ALTER SYSTEM CHECKPOINT; -# -# -- Delete old UNDO tablespace -# DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES; -# -# -- Recreate old UNDO tablespace with 1M size and AUTOEXTEND -# CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/undotbs01.dbf' -# SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -# -# -- Use newly created UNDO tablespace -# ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'; -# ALTER SYSTEM CHECKPOINT; -# -# -- Drop temporary UNDO tablespace -# DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; -# -# exit; -# EOF -# -# # Close PDB\$SEED to READ ONLY again -# echo "BUILDER: Opening PDB\$SEED in READ ONLY (default) mode" -# su -p oracle -c "sqlplus -s / as sysdba" << EOF -# -# -- Exit on any errors -# WHENEVER SQLERROR EXIT SQL.SQLCODE -# -# -- Open PDB\$SEED to READ WRITE mode -# ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; -# ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ ONLY; -# -# exit; -# EOF -# -# fi; + ##################### + # Shrink data files # + ##################### + su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + + ---------------------------- + -- Shrink SYSAUX tablespaces + ---------------------------- + + -- Create new temporary SYSAUX tablespace + --CREATE TABLESPACE SYSAUX_TEMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux_temp.dbf' + --SIZE 250M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED; + + -- Move tables to temporary SYSAUX tablespace + --#TODO + --BEGIN + -- FOR cur IN (SELECT owner || '.' || table_name AS name FROM all_tables WHERE tablespace_name = 'SYSAUX') LOOP + -- EXECUTE IMMEDIATE 'ALTER TABLE ' || cur.name || ' MOVE TABLESPACE SYSAUX_TEMP'; + -- END LOOP; + --END; + --/ + + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux01.dbf' RESIZE ${CDB_SYSAUX_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/sysaux01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=PDB\$SEED; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/sysaux01.dbf' RESIZE ${PDB_SYSAUX_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/sysaux01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=XEPDB1; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/sysaux01.dbf' RESIZE ${PDB_SYSAUX_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/sysaux01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=CDB\$ROOT; + + ---------------------------- + -- Shrink SYSTEM tablespaces + ---------------------------- + + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/system01.dbf' RESIZE ${CDB_SYSTEM_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/system01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=PDB\$SEED; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/system01.dbf' RESIZE ${PDB_SYSTEM_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/system01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=XEPDB1; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/system01.dbf' RESIZE ${PDB_SYSTEM_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/system01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=CDB\$ROOT; + + -------------------------- + -- Shrink TEMP tablespaces + -------------------------- + + ALTER TABLESPACE TEMP SHRINK SPACE; + ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -------------------------------------- + ALTER SESSION SET CONTAINER=PDB\$SEED; + -------------------------------------- + + CREATE TEMPORARY TABLESPACE TEMP_TMP TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/temp_tmp.dbf' + SIZE 2M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP_TMP; + + DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES; + + CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/temp01.dbf' + SIZE 2M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP; + + DROP TABLESPACE TEMP_TMP INCLUDING CONTENTS AND DATAFILES; + + ----------------------------------- + ALTER SESSION SET CONTAINER=XEPDB1; + ----------------------------------- + + ALTER TABLESPACE TEMP SHRINK SPACE; + ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/temp01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=CDB\$ROOT; + + ---------------------------- + -- Shrink USERS tablespaces + ---------------------------- + + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/users01.dbf' RESIZE ${USERS_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/users01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=XEPDB1; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/users01.dbf' RESIZE ${USERS_SIZE}M; + ALTER DATABASE DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/users01.dbf' + AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + ALTER SESSION SET CONTAINER=CDB\$ROOT; + + ---------------------------- + -- Shrink UNDO tablespaces + ---------------------------- + + -- Create new temporary UNDO tablespace + CREATE UNDO TABLESPACE UNDO_TMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs_tmp.dbf' + SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -- Use new temporary UNDO tablespace (so that old one can be deleted) + ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP'; + + -- Delete old UNDO tablespace + DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES; + + -- Recreate old UNDO tablespace with 1M size and AUTOEXTEND + CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/undotbs01.dbf' + SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -- Use newly created UNDO tablespace + ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'; + + -- Drop temporary UNDO tablespace + DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; + + -------------------------------------- + ALTER SESSION SET CONTAINER=PDB\$SEED; + -------------------------------------- + + -- Create new temporary UNDO tablespace + CREATE UNDO TABLESPACE UNDO_TMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/undotbs_tmp.dbf' + SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -- Use new temporary UNDO tablespace (so that old one can be deleted) + ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP'; + + -- Delete old UNDO tablespace + DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES; + + -- Recreate old UNDO tablespace with 1M size and AUTOEXTEND + CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/pdbseed/undotbs01.dbf' + SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -- Use newly created UNDO tablespace + ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'; + + -- Drop temporary UNDO tablespace + DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; + + ----------------------------------- + ALTER SESSION SET CONTAINER=XEPDB1; + ----------------------------------- + + -- Create new temporary UNDO tablespace + CREATE UNDO TABLESPACE UNDO_TMP DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/undotbs_tmp.dbf' + SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -- Use new temporary UNDO tablespace (so that old one can be deleted) + ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP'; + ALTER SYSTEM CHECKPOINT; + + -- Delete old UNDO tablespace + DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES; + + -- Recreate old UNDO tablespace with 1M size and AUTOEXTEND + CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/XEPDB1/undotbs01.dbf' + SIZE 1M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; + + -- Use newly created UNDO tablespace + ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1'; + ALTER SYSTEM CHECKPOINT; + + -- Drop temporary UNDO tablespace + DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; + + exit; +EOF + + # Close PDB\$SEED to READ ONLY again + echo "BUILDER: Opening PDB\$SEED in READ ONLY (default) mode" + su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + + -- Open PDB\$SEED to READ WRITE mode + ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; + ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ ONLY; + + exit; +EOF + +fi; ################################### ########### DB SHUTDOWN ########### @@ -914,107 +884,105 @@ rm -r "${ORACLE_BASE}"/diag/tnslsnr/* # TODO: clean up os files # # /var/log/lastlog -# -# # Remove additional files for NOMRAL and SLIM builds -# if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then -# -# echo "BUILDER: further cleanup for REGULAR and SLIM image" -# -# # Remove OPatch and QOpatch -# rm -r "${ORACLE_HOME}"/OPatch -# rm -r "${ORACLE_HOME}"/QOpatch -# -# # Remove assistants -# rm -r "${ORACLE_HOME}"/assistants -# -# # Remove Oracle Database Migration Assistant for Unicode (dmu) -# rm -r "${ORACLE_HOME}"/dmu -# -# # Remove inventory directory -# rm -r "${ORACLE_HOME}"/inventory -# -# # Remove JDBC drivers -# rm -r "${ORACLE_HOME}"/jdbc -# rm -r "${ORACLE_HOME}"/jlib -# rm -r "${ORACLE_HOME}"/ucp -# -# # Remove Intel's Math kernel libraries -# rm "${ORACLE_HOME}"/lib/libmkl_* -# -# # Remove zip artifacts in $ORACLE_HOME/lib -# rm "${ORACLE_HOME}"/lib/*.zip -# -# # Remove lib/*.jar files -# rm "${ORACLE_HOME}"/lib/*.jar -# -# # Remove Multimedia -# rm -r "${ORACLE_HOME}"/ord/im -# -# # Remove Oracle XDK -# rm -r "${ORACLE_HOME}"/xdk -# -# # Remove JServer JAVA Virtual Machine -# rm -r "${ORACLE_HOME}"/javavm -# -# # Remove Java JDK -# rm -r "${ORACLE_HOME}"/jdk -# -# # Remove dbjava directory -# rm -r "${ORACLE_HOME}"/dbjava -# -# # Remove rdbms/jlib -# rm -r "${ORACLE_HOME}"/rdbms/jlib -# -# # Remove olap -# rm -r "${ORACLE_HOME}"/olap -# -# # Remove property graph (standalone component that can be downloaded from the web) -# rm -r "${ORACLE_HOME}"/md/property_graph -# -# # Remove Cluster Ready Services -# rm -r "${ORACLE_HOME}"/crs -# -# # Remove Cluster Verification Utility (CVU) -# rm -r "${ORACLE_HOME}"/cv -# -# # Remove install directory -# rm -r "${ORACLE_HOME}"/install -# -# # Remove network/jlib directory -# rm -r "${ORACLE_HOME}"/network/jlib -# -# # Remove network/tools directory -# rm -r "${ORACLE_HOME}"/network/tools -# -# # Remove opmn directory -# rm -r "${ORACLE_HOME}"/opmn -# -# # Remove unnecessary binaries (see http://yong321.freeshell.org/computer/oraclebin.html#21c) -# rm "${ORACLE_HOME}"/bin/afd* # ASM Filter Drive components -# rm "${ORACLE_HOME}"/bin/proc # Pro*C/C++ Precompiler -# rm "${ORACLE_HOME}"/bin/procob # Pro COBOL Precompiler -# rm "${ORACLE_HOME}"/bin/orion # ORacle IO Numbers benchmark tool -# rm "${ORACLE_HOME}"/bin/drda* # Distributed Relational Database Architecture components -# -# # Replace `orabase` with static path shell script -# su -p oracle -c "echo '${ORACLE_BASE}' > ${ORACLE_HOME}/bin/orabase" -# -# # Replace `orabasehome` with static path shell script -# su -p oracle -c "echo '${ORACLE_BASE_HOME}' > ${ORACLE_HOME}/bin/orabasehome" -# -# # Replace `orabaseconfig` with static path shell script -# su -p oracle -c "echo '${ORACLE_HOME}' > ${ORACLE_HOME}/bin/orabaseconfig" -# -# # Remove unnecessary libraries -# rm "${ORACLE_HOME}"/lib/libra.so # Recovery Appliance -# rm "${ORACLE_HOME}"/lib/libopc.so # Oracle Public Cloud -# rm "${ORACLE_HOME}"/lib/libosbws.so # Oracle Secure Backup Cloud Module -# -# # Remove not needed packages -# # Use rpm instad of microdnf to allow removing packages regardless of their dependencies -# rpm -e --nodeps glibc-devel glibc-headers kernel-headers libpkgconf libxcrypt-devel \ -# pkgconf pkgconf-m4 pkgconf-pkg-config -# + +# Remove additional files for NOMRAL and SLIM builds +if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then + + echo "BUILDER: further cleanup for REGULAR and SLIM image" + + # Remove OPatch and QOpatch + rm -r "${ORACLE_HOME}"/OPatch + rm -r "${ORACLE_HOME}"/QOpatch + + # Remove assistants + rm -r "${ORACLE_HOME}"/assistants + + # Remove inventory directory + rm -r "${ORACLE_HOME}"/inventory + + # Remove JDBC drivers + rm -r "${ORACLE_HOME}"/jdbc + rm -r "${ORACLE_HOME}"/jlib + rm -r "${ORACLE_HOME}"/ucp + + # Remove Intel's Math kernel libraries + rm "${ORACLE_HOME}"/lib/libmkl_* + + # Remove zip artifacts in $ORACLE_HOME/lib + rm "${ORACLE_HOME}"/lib/*.zip + + # Remove lib/*.jar files + rm "${ORACLE_HOME}"/lib/*.jar + + # Remove Multimedia + rm -r "${ORACLE_HOME}"/ord/im + + # Remove Oracle XDK + rm -r "${ORACLE_HOME}"/xdk + + # Remove JServer JAVA Virtual Machine + rm -r "${ORACLE_HOME}"/javavm + + # Remove Java JDK + rm -r "${ORACLE_HOME}"/jdk + + # Remove rdbms/jlib + rm -r "${ORACLE_HOME}"/rdbms/jlib + + # Remove olap + rm -r "${ORACLE_HOME}"/olap + + # Remove Cluster Ready Services + rm -r "${ORACLE_HOME}"/crs + + # Remove Cluster Verification Utility (CVU) + rm -r "${ORACLE_HOME}"/cv + + # Remove everything in install directory except orabasetab (needed for read-only homes) + mv "${ORACLE_HOME}"/install/orabasetab "${ORACLE_HOME}"/ + rm -r "${ORACLE_HOME}"/install/* + mv "${ORACLE_HOME}"/orabasetab "${ORACLE_HOME}"/install/ + + # Remove network/jlib directory + rm -r "${ORACLE_HOME}"/network/jlib + + # Remove network/tools directory + rm -r "${ORACLE_HOME}"/network/tools + + # Remove opmn directory + rm -r "${ORACLE_HOME}"/opmn + + # Remove oml4py directory + rm -r "${ORACLE_HOME}"/oml4py + + # Remove python directory + rm -r "${ORACLE_HOME}"/python + + # Remove unnecessary binaries (see http://yong321.freeshell.org/computer/oraclebin.html#21c) + rm "${ORACLE_HOME}"/bin/afd* # ASM Filter Drive components + rm "${ORACLE_HOME}"/bin/proc # Pro*C/C++ Precompiler + rm "${ORACLE_HOME}"/bin/procob # Pro COBOL Precompiler + rm "${ORACLE_HOME}"/bin/orion # ORacle IO Numbers benchmark tool + + # Replace `orabase` with static path shell script + su -p oracle -c "echo 'echo ${ORACLE_BASE}' > ${ORACLE_HOME}/bin/orabase" + + # Replace `orabasehome` with static path shell script + su -p oracle -c "echo 'echo ${ORACLE_BASE_HOME}' > ${ORACLE_HOME}/bin/orabasehome" + + # Replace `orabaseconfig` with static path shell script + su -p oracle -c "echo 'echo ${ORACLE_BASE_CONFIG}' > ${ORACLE_HOME}/bin/orabaseconfig" + + # Remove unnecessary libraries + rm "${ORACLE_HOME}"/lib/libopc.so # Oracle Public Cloud + rm "${ORACLE_HOME}"/lib/libosbws.so # Oracle Secure Backup Cloud Module + rm "${ORACLE_HOME}"/lib/libra.so # Recovery Appliance + + # Remove not needed packages + # Use rpm instad of microdnf to allow removing packages regardless of their dependencies + rpm -e --nodeps glibc-devel glibc-headers kernel-headers libpkgconf libxcrypt-devel \ + pkgconf pkgconf-m4 pkgconf-pkg-config + # # Remove components from ORACLE_HOME # if [ "${BUILD_MODE}" == "SLIM" ]; then # @@ -1085,8 +1053,8 @@ rm -r "${ORACLE_BASE}"/diag/tnslsnr/* # rm "${ORACLE_HOME}"/lib/asm* # Oracle Automatic Storage Management # # fi; -# -# fi; + +fi; # Remove installation dependencies # Use rpm instead of microdnf to allow removing packages regardless of dependencies specified by the Oracle XE RPM diff --git a/tests/build_Dockerfile_2130.sh b/tests/build_Dockerfile_2130.sh index b0a14d3..20dad27 100755 --- a/tests/build_Dockerfile_2130.sh +++ b/tests/build_Dockerfile_2130.sh @@ -28,6 +28,10 @@ cd ../ echo "TEST: Building 21.3.0 FULL image" ./buildContainerImage.sh -v 21.3.0 -f -echo "DONE: Building 18.4.0 FULL image" +echo "DONE: Building 21.3.0 FULL image" + +echo "TEST: Building 21.3.0 REGULAR image" +./buildContainerImage.sh -v 21.3.0 +echo "DONE: Building 21.3.0 REGULAR image" cd "${CURRENT_DIR}" diff --git a/tests/tag_image_latest.sh b/tests/tag_image_latest.sh index 54725e3..61dd694 100755 --- a/tests/tag_image_latest.sh +++ b/tests/tag_image_latest.sh @@ -23,4 +23,4 @@ set -Eeuo pipefail # Tag latest image -podman tag gvenzl/oracle-xe:18.4.0 gvenzl/oracle-xe:latest +podman tag gvenzl/oracle-xe:21.3.0 gvenzl/oracle-xe:latest diff --git a/tests/tag_images_1840.sh b/tests/tag_images_1840.sh index b56bf8e..d4f2b0e 100755 --- a/tests/tag_images_1840.sh +++ b/tests/tag_images_1840.sh @@ -26,3 +26,5 @@ set -Eeuo pipefail podman tag gvenzl/oracle-xe:18.4.0-full gvenzl/oracle-xe:18-full podman tag gvenzl/oracle-xe:18.4.0 gvenzl/oracle-xe:18 podman tag gvenzl/oracle-xe:18.4.0-slim gvenzl/oracle-xe:18-slim + +podman tag gvenzl/oracle-xe:18.4.0-slim gvenzl/oracle-xe:slim diff --git a/tests/tag_images_2130.sh b/tests/tag_images_2130.sh index f096166..a7d006d 100755 --- a/tests/tag_images_2130.sh +++ b/tests/tag_images_2130.sh @@ -28,5 +28,5 @@ podman tag gvenzl/oracle-xe:21.3.0-full gvenzl/oracle-xe:full podman tag gvenzl/oracle-xe:21.3.0 gvenzl/oracle-xe:21 -podman tag gvenzl/oracle-xe:21.3.0-slim gvenzl/oracle-xe:21-slim -podman tag gvenzl/oracle-xe:21.3.0-slim gvenzl/oracle-xe:slim +# podman tag gvenzl/oracle-xe:21.3.0-slim gvenzl/oracle-xe:21-slim +# podman tag gvenzl/oracle-xe:21.3.0-slim gvenzl/oracle-xe:slim diff --git a/tests/test_container_1840.sh b/tests/test_container_1840.sh index 7cff8b3..62a62b3 100755 --- a/tests/test_container_1840.sh +++ b/tests/test_container_1840.sh @@ -30,11 +30,9 @@ source ./functions.sh runContainerTest "18.4.0 FULL image" "1840-full" "gvenzl/oracle-xe:18.4.0-full" runContainerTest "18 FULL image" "18-full" "gvenzl/oracle-xe:18-full" -runContainerTest "FULL image" "full" "gvenzl/oracle-xe:full" runContainerTest "18.4.0 REGULAR image" "1840" "gvenzl/oracle-xe:18.4.0" runContainerTest "18 REGULAR image" "18" "gvenzl/oracle-xe:18" -runContainerTest "REGULAR image" "latest" "gvenzl/oracle-xe" runContainerTest "18.4.0 SLIM image" "1840-slim" "gvenzl/oracle-xe:18.4.0-slim" runContainerTest "18 SLIM image" "18-slim" "gvenzl/oracle-xe:18-slim" diff --git a/tests/test_container_2130.sh b/tests/test_container_2130.sh index 81d46e4..1bd6047 100755 --- a/tests/test_container_2130.sh +++ b/tests/test_container_2130.sh @@ -32,9 +32,9 @@ runContainerTest "21.3.0 FULL image" "2130-full" "gvenzl/oracle-xe:21.3.0-full" runContainerTest "21 FULL image" "21-full" "gvenzl/oracle-xe:21-full" runContainerTest "FULL image" "full" "gvenzl/oracle-xe:full" -#runContainerTest "18.4.0 REGULAR image" "1840" "gvenzl/oracle-xe:18.4.0" -#runContainerTest "18 REGULAR image" "18" "gvenzl/oracle-xe:18" -#runContainerTest "REGULAR image" "latest" "gvenzl/oracle-xe" +runContainerTest "21.3.0 REGULAR image" "2130" "gvenzl/oracle-xe:21.3.0" +runContainerTest "21 REGULAR image" "21" "gvenzl/oracle-xe:21" +runContainerTest "REGULAR image" "latest" "gvenzl/oracle-xe" #runContainerTest "18.4.0 SLIM image" "1840-slim" "gvenzl/oracle-xe:18.4.0-slim" #runContainerTest "18 SLIM image" "18-slim" "gvenzl/oracle-xe:18-slim" From 881afeabf7a5a00508d110be9990d56fccfa3db1 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 7 Nov 2021 23:54:19 -0700 Subject: [PATCH 138/192] Fix static ora* location scripts Signed-off-by: gvenzl --- install.1840.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.1840.sh b/install.1840.sh index a32397c..dd2f07e 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -999,13 +999,13 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then rm "${ORACLE_HOME}"/bin/drda* # Distributed Relational Database Architecture components # Replace `orabase` with static path shell script - su -p oracle -c "echo '${ORACLE_BASE}' > ${ORACLE_HOME}/bin/orabase" + su -p oracle -c "echo 'echo ${ORACLE_BASE}' > ${ORACLE_HOME}/bin/orabase" # Replace `orabasehome` with static path shell script - su -p oracle -c "echo '${ORACLE_HOME}' > ${ORACLE_HOME}/bin/orabasehome" + su -p oracle -c "echo 'echo ${ORACLE_HOME}' > ${ORACLE_HOME}/bin/orabasehome" # Replace `orabaseconfig` with static path shell script - su -p oracle -c "echo '${ORACLE_HOME}' > ${ORACLE_HOME}/bin/orabaseconfig" + su -p oracle -c "echo 'echo ${ORACLE_HOME}' > ${ORACLE_HOME}/bin/orabaseconfig" # Remove unnecessary libraries rm "${ORACLE_HOME}"/lib/libra.so # Recovery Appliance From d4113ed3004315fc8ca1ed11abb221c841515ca9 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Mon, 8 Nov 2021 00:10:24 -0700 Subject: [PATCH 139/192] Add 21c images for upload Signed-off-by: gvenzl --- tests/upload_images.sh | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tests/upload_images.sh b/tests/upload_images.sh index 6910be4..79f90ef 100755 --- a/tests/upload_images.sh +++ b/tests/upload_images.sh @@ -41,13 +41,24 @@ podman login echo "Upload latest" podman push localhost/gvenzl/oracle-xe:latest docker.io/gvenzl/oracle-xe:latest +# Upload 21c images +echo "Upload 21.3.0-full" +podman push localhost/gvenzl/oracle-xe:21.3.0-full docker.io/gvenzl/oracle-xe:21.3.0-full +echo "Upload 21-full" +podman push localhost/gvenzl/oracle-xe:21-full docker.io/gvenzl/oracle-xe:21-full +echo "Upload full" +podman push localhost/gvenzl/oracle-xe:full docker.io/gvenzl/oracle-xe:full + +echo "Upload 21.3.0" +podman push localhost/gvenzl/oracle-xe:21.3.0 docker.io/gvenzl/oracle-xe:21.3.0 +echo "Upload 21" +podman push localhost/gvenzl/oracle-xe:21 docker.io/gvenzl/oracle-xe:21 + # Upload 18c images echo "Upload 18.4.0-full" podman push localhost/gvenzl/oracle-xe:18.4.0-full docker.io/gvenzl/oracle-xe:18.4.0-full echo "Upload 18-full" podman push localhost/gvenzl/oracle-xe:18-full docker.io/gvenzl/oracle-xe:18-full -echo "Upload full" -podman push localhost/gvenzl/oracle-xe:full docker.io/gvenzl/oracle-xe:full echo "Upload 18.4.0" podman push localhost/gvenzl/oracle-xe:18.4.0 docker.io/gvenzl/oracle-xe:18.4.0 From 0b704254af1455c4815fa624b4c325c944dc2201 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Mon, 8 Nov 2021 00:17:11 -0700 Subject: [PATCH 140/192] Update Readme with 21c tags Signed-off-by: gvenzl --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 033a390..dd9e0f5 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,11 @@ Oracle Database Express Edition Container / Docker images. # Supported tags and respective `Dockerfile` links -* [`21.3.0-full`, `21-full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.2130) -* [`18.4.0`, `18`, `latest`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) +* [`21.3.0`, `21`, `latest`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.2130) +* [`21.3.0-full`, `21-full`, `full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.2130) +* [`18.4.0`, `18`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) * [`18.4.0-slim`, `18-slim`, `slim`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) -* [`18.4.0-full`, `18-full`, `full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) +* [`18.4.0-full`, `18-full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) * [`11.2.0.2`, `11`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.11202) * [`11.2.0.2-slim`, `11-slim`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.11202) * [`11.2.0.2-full`, `11-full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.11202) From 28fd1f1ce6432953808697154cd7977f7b6da9d0 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Mon, 8 Nov 2021 00:21:28 -0700 Subject: [PATCH 141/192] Add artifactory upload Signed-off-by: gvenzl --- tests/upload_images_artifactory.sh | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tests/upload_images_artifactory.sh b/tests/upload_images_artifactory.sh index de86a89..2db93c0 100755 --- a/tests/upload_images_artifactory.sh +++ b/tests/upload_images_artifactory.sh @@ -30,13 +30,24 @@ podman login gvenzl.jfrog.io echo "Upload latest" podman push gvenzl/oracle-xe:latest gvenzl.jfrog.io/docker/oracle-xe:latest +# Upload 21c images +echo "Upload 21.3.0-full" +podman push gvenzl/oracle-xe:21.3.0-full gvenzl.jfrog.io/docker/oracle-xe:21.3.0-full +echo "Upload 21-full" +podman push gvenzl/oracle-xe:21-full gvenzl.jfrog.io/docker/oracle-xe:21-full +echo "Upload full" +podman push gvenzl/oracle-xe:full gvenzl.jfrog.io/docker/oracle-xe:full + +echo "Upload 21.3.0" +podman push gvenzl/oracle-xe:21.3.0 gvenzl.jfrog.io/docker/oracle-xe:21.3.0 +echo "Upload 21" +podman push gvenzl/oracle-xe:21 gvenzl.jfrog.io/docker/oracle-xe:21 + # Upload 18c images echo "Upload 18.4.0-full" podman push gvenzl/oracle-xe:18.4.0-full gvenzl.jfrog.io/docker/oracle-xe:18.4.0-full echo "Upload 18-full" podman push gvenzl/oracle-xe:18-full gvenzl.jfrog.io/docker/oracle-xe:18-full -echo "Upload full" -podman push gvenzl/oracle-xe:full gvenzl.jfrog.io/docker/oracle-xe:full echo "Upload 18.4.0" podman push gvenzl/oracle-xe:18.4.0 gvenzl.jfrog.io/docker/oracle-xe:18.4.0 From cc217c5c24e4bf4d64d187794e12588d4af0a7a6 Mon Sep 17 00:00:00 2001 From: "Daniel Haanpaa [Lab0]" Date: Fri, 12 Nov 2021 20:02:26 -0800 Subject: [PATCH 142/192] Adding Container Example Start/Creation Script --- README.md | 4 +++ examples/README.md | 5 +++ examples/dkr-create-oracle-xe-server | 48 ++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 examples/README.md create mode 100755 examples/dkr-create-oracle-xe-server diff --git a/README.md b/README.md index dd9e0f5..ec7f32f 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,10 @@ Oracle Database Express Edition Container / Docker images. # Quick Start +## Examples +[Examples Folder](./examples) + + Run a new database container (data is removed when the container is removed, but kept throughout container restarts): ```shell diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000..2f02be1 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,5 @@ +# Examples + +| Script | Parameters | Description | +|--------|------------|-------------| +| dkr-create-oracle-xe-server | hostXePort containerName | Create Oracle XE Container using docker | diff --git a/examples/dkr-create-oracle-xe-server b/examples/dkr-create-oracle-xe-server new file mode 100755 index 0000000..1af3b0d --- /dev/null +++ b/examples/dkr-create-oracle-xe-server @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +# Variables used for the script +if [ ! -f `which pwgen` ]; then + echo "You must have pwgen on your machine to run this script" + exit 1 +fi + +CMG_COMMAND=docker +DKR_IMAGE="gvenzl/oracle-xe" +DKR_HOST_PORT=$1 +DKR_CNT_NAME=$2 +DKR_DATA_PATH=dbcxe-$DKR_CNT_NAME-dvol +DKR_ORA_USER_APP=DAAPPUSER +DKR_ORA_PW=`pwgen -1 16 | tr -d '\n'` +DKR_ORA_PW_APP=`pwgen -1 16 | tr -d '\n'` + +echo "Docker Image ...............:'$DKR_IMAGE'" +echo "Docker User ................:'$DKR_ORA_USER_APP'" +echo "Docker Password ............:'$DKR_ORA_PW'" +echo "Docker Password (app) ......:'$DKR_ORA_PW_APP'" +echo "Docker Volume Name..........:'$DKR_DATA_PATH'" +echo "Docker Host Port ...........:'$DKR_HOST_PORT'" +echo "Docker Container Name ......:'$DKR_CNT_NAME'" + + +if [ -z "$DKR_HOST_PORT" ]; then + echo "You must provide docker host port" + exit 1 +fi + + +if [ -z "$DKR_CNT_NAME" ]; then + echo "You must provide container name" + exit 1 +fi + +$CMG_COMMAND run --name $DKR_CNT_NAME \ + -p $DKR_HOST_PORT:1521 \ + -e "ORACLE_PASSWORD=$DKR_ORA_PW" \ + -e "APP_USER=$DKR_ORA_USER_APP" \ + -e "APP_USER_PASSWORD=$DKR_ORA_PW_APP" \ + -v $DKR_DATA_PATH:/opt/oracle/oradata \ + -d $DKR_IMAGE + +echo "Waiting for container '$DKR_CNT_NAME' to start ... " +sleep 10 + +echo "Oracle Container '$DKR_CNT_NAME' has been started on port '$DKR_HOST_PORT' with initial password '$DKR_ORA_PW'" From f8766320d78bbf2e334a5ce4b498f85df9784828 Mon Sep 17 00:00:00 2001 From: "Daniel Haanpaa [Lab0]" Date: Fri, 12 Nov 2021 20:38:27 -0800 Subject: [PATCH 143/192] Incorporated feedback and fixes from pull request in example script --- examples/dkr-create-oracle-xe-server | 38 +++++++++++++++------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/examples/dkr-create-oracle-xe-server b/examples/dkr-create-oracle-xe-server index 1af3b0d..78f4bd2 100755 --- a/examples/dkr-create-oracle-xe-server +++ b/examples/dkr-create-oracle-xe-server @@ -5,6 +5,18 @@ if [ ! -f `which pwgen` ]; then exit 1 fi +if [ -z "$DKR_HOST_PORT" ]; then + echo "You must provide docker host port" + exit 1 +fi + + +if [ -z "$DKR_CNT_NAME" ]; then + echo "You must provide dockercontainer name" + exit 1 +fi + + CMG_COMMAND=docker DKR_IMAGE="gvenzl/oracle-xe" DKR_HOST_PORT=$1 @@ -14,25 +26,15 @@ DKR_ORA_USER_APP=DAAPPUSER DKR_ORA_PW=`pwgen -1 16 | tr -d '\n'` DKR_ORA_PW_APP=`pwgen -1 16 | tr -d '\n'` -echo "Docker Image ...............:'$DKR_IMAGE'" -echo "Docker User ................:'$DKR_ORA_USER_APP'" -echo "Docker Password ............:'$DKR_ORA_PW'" -echo "Docker Password (app) ......:'$DKR_ORA_PW_APP'" -echo "Docker Volume Name..........:'$DKR_DATA_PATH'" -echo "Docker Host Port ...........:'$DKR_HOST_PORT'" -echo "Docker Container Name ......:'$DKR_CNT_NAME'" - - -if [ -z "$DKR_HOST_PORT" ]; then - echo "You must provide docker host port" - exit 1 -fi +echo "Docker Image ............................ :'$DKR_IMAGE'" +echo "Database (SYS AND SYSTEM) User Password . :'$DKR_ORA_PW'" +echo "Database Application User ............... :'$DKR_ORA_USER_APP'" +echo "Database Application User Password ...... :'$DKR_ORA_PW_APP'" +echo "Docker Volume Name ...................... :'$DKR_DATA_PATH'" +echo "Docker Host Port ........................ :'$DKR_HOST_PORT'" +echo "Docker Container Name ................... :'$DKR_CNT_NAME'" -if [ -z "$DKR_CNT_NAME" ]; then - echo "You must provide container name" - exit 1 -fi $CMG_COMMAND run --name $DKR_CNT_NAME \ -p $DKR_HOST_PORT:1521 \ @@ -45,4 +47,4 @@ $CMG_COMMAND run --name $DKR_CNT_NAME \ echo "Waiting for container '$DKR_CNT_NAME' to start ... " sleep 10 -echo "Oracle Container '$DKR_CNT_NAME' has been started on port '$DKR_HOST_PORT' with initial password '$DKR_ORA_PW'" +echo "Docker Container '$DKR_CNT_NAME' has been started on port '$DKR_HOST_PORT'" From 32fe315a9d7cd87cb953d71cbc2e9985eab2691c Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 12 Nov 2021 21:57:30 -0700 Subject: [PATCH 144/192] Fix for #43 Signed-off-by: gvenzl --- ImageDetails.md | 2 ++ install.2130.sh | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ImageDetails.md b/ImageDetails.md index 31f5ad2..e5f7133 100644 --- a/ImageDetails.md +++ b/ImageDetails.md @@ -15,6 +15,8 @@ A couple of modifications have been performed to make the installation more suit * `COMMON_USER_PREFIX=''` * `LOCAL_LISTENER=''` * An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) +* `DISABLE_OOB=ON` in `sqlnet.ora` (see https://github.com/gvenzl/oci-oracle-xe/issues/43) +* `BREAK_POLL_SKIP=1000` in `sqlnet.ora` (see https://github.com/gvenzl/oci-oracle-xe/issues/43) ### Regular image flavor (`21`) diff --git a/install.2130.sh b/install.2130.sh index 46bbe0b..cb9d22b 100644 --- a/install.2130.sh +++ b/install.2130.sh @@ -149,7 +149,12 @@ EXTPROC_CONNECTION_DATA = " > "${ORACLE_BASE_HOME}"/network/admin/tnsnames.ora # sqlnet.ora -echo "NAMES.DIRECTORY_PATH = (EZCONNECT, TNSNAMES)" > "${ORACLE_BASE_HOME}"/network/admin/sqlnet.ora +echo \ +"NAMES.DIRECTORY_PATH = (EZCONNECT, TNSNAMES) +# See https://github.com/gvenzl/oci-oracle-xe/issues/43 +DISABLE_OOB=ON +BREAK_POLL_SKIP=1000 +" > "${ORACLE_BASE_HOME}"/network/admin/sqlnet.ora chown -R oracle:dba "${ORACLE_BASE_HOME}"/network/admin From d0c09899b0cfbd624f3bd10faf076948875159fa Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 12 Nov 2021 21:59:17 -0700 Subject: [PATCH 145/192] Remove Oracle Memory Speed (OMS) PMEM binaries Signed-off-by: gvenzl --- ImageDetails.md | 3 +++ install.2130.sh | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ImageDetails.md b/ImageDetails.md index e5f7133..0fe760c 100644 --- a/ImageDetails.md +++ b/ImageDetails.md @@ -58,6 +58,9 @@ The following binaries have been removed from the `$ORACLE_HOME/bin` directory: * `$ORACLE_HOME}/bin/proc` (Pro\*C/C++ Precompiler) * `$ORACLE_HOME/bin/procob` (Pro COBOL Precompiler) * `$ORACLE_HOME/bin/orion` (ORacle IO Numbers benchmark tool) +* `$ORACLE_HOME/bin/oms_daemon` (Oracle Memory Speed (PMEM support) daemon) +* `$ORACLE_HOME/bin/omsfscmds` (Oracle Memory Speed (PMEM support) command line utility) + The following binaries have been replaced by shell scripts with static output: diff --git a/install.2130.sh b/install.2130.sh index cb9d22b..a68d13e 100644 --- a/install.2130.sh +++ b/install.2130.sh @@ -964,10 +964,12 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then rm -r "${ORACLE_HOME}"/python # Remove unnecessary binaries (see http://yong321.freeshell.org/computer/oraclebin.html#21c) - rm "${ORACLE_HOME}"/bin/afd* # ASM Filter Drive components - rm "${ORACLE_HOME}"/bin/proc # Pro*C/C++ Precompiler - rm "${ORACLE_HOME}"/bin/procob # Pro COBOL Precompiler - rm "${ORACLE_HOME}"/bin/orion # ORacle IO Numbers benchmark tool + rm "${ORACLE_HOME}"/bin/afd* # ASM Filter Drive components + rm "${ORACLE_HOME}"/bin/proc # Pro*C/C++ Precompiler + rm "${ORACLE_HOME}"/bin/procob # Pro COBOL Precompiler + rm "${ORACLE_HOME}"/bin/orion # ORacle IO Numbers benchmark tool + rm "${ORACLE_HOME}"/bin/oms_daemon # Oracle Memory Speed (PMEM support) daemon + rm "${ORACLE_HOME}"/bin/omsfscmds # Oracle Memory Speed command line utility # Replace `orabase` with static path shell script su -p oracle -c "echo 'echo ${ORACLE_BASE}' > ${ORACLE_HOME}/bin/orabase" From c70c9b0a37f1e06cc2ad06ce33f69b1ff2ad0d8c Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 12 Nov 2021 23:46:54 -0700 Subject: [PATCH 146/192] Remove MLE Signed-off-by: gvenzl --- ImageDetails.md | 1 + install.2130.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/ImageDetails.md b/ImageDetails.md index 0fe760c..d8c6a48 100644 --- a/ImageDetails.md +++ b/ImageDetails.md @@ -72,6 +72,7 @@ The following binaries have been replaced by shell scripts with static output: The following libraries have been removed from the `$ORACLE_HOME/lib` directory: +* `$ORACLE_HOME/lib/libmle.so` (Multilingual Engine) * `$ORACLE_HOME/lib/libopc.so` (Oracle Public Cloud) * `$ORACLE_HOME/lib/libosbws.so` (Oracle Secure Backup Cloud Module) * `$ORACLE_HOME/lib/libra.so` (Recovery Appliance) diff --git a/install.2130.sh b/install.2130.sh index a68d13e..f22d8b5 100644 --- a/install.2130.sh +++ b/install.2130.sh @@ -981,6 +981,7 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then su -p oracle -c "echo 'echo ${ORACLE_BASE_CONFIG}' > ${ORACLE_HOME}/bin/orabaseconfig" # Remove unnecessary libraries + rm "${ORACLE_HOME}"/lib/libmle.so # Multilingual Engine rm "${ORACLE_HOME}"/lib/libopc.so # Oracle Public Cloud rm "${ORACLE_HOME}"/lib/libosbws.so # Oracle Secure Backup Cloud Module rm "${ORACLE_HOME}"/lib/libra.so # Recovery Appliance From 8705392ec3b58dfdc031480e9c8ab2e7150a6814 Mon Sep 17 00:00:00 2001 From: "Daniel Haanpaa [Lab0]" Date: Sat, 13 Nov 2021 10:09:56 -0800 Subject: [PATCH 147/192] Added PWgen check --- examples/dkr-create-oracle-xe-server | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/dkr-create-oracle-xe-server b/examples/dkr-create-oracle-xe-server index 78f4bd2..c3c71ec 100755 --- a/examples/dkr-create-oracle-xe-server +++ b/examples/dkr-create-oracle-xe-server @@ -1,5 +1,6 @@ #!/usr/bin/env bash # Variables used for the script + if [ ! -f `which pwgen` ]; then echo "You must have pwgen on your machine to run this script" exit 1 From 3f72fffd2209eb1ef9a865c3dc643253ef32c179 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 13 Nov 2021 13:07:23 -0700 Subject: [PATCH 148/192] Clean lastlog Signed-off-by: gvenzl --- ImageDetails.md | 12 ++++++++++++ install.11202.sh | 3 +++ install.1840.sh | 3 +++ install.2130.sh | 3 +++ 4 files changed, 21 insertions(+) diff --git a/ImageDetails.md b/ImageDetails.md index d8c6a48..451a42e 100644 --- a/ImageDetails.md +++ b/ImageDetails.md @@ -18,6 +18,10 @@ A couple of modifications have been performed to make the installation more suit * `DISABLE_OOB=ON` in `sqlnet.ora` (see https://github.com/gvenzl/oci-oracle-xe/issues/43) * `BREAK_POLL_SKIP=1000` in `sqlnet.ora` (see https://github.com/gvenzl/oci-oracle-xe/issues/43) +#### Operating system + +* `/var/log/lastlog` has been cleaned + ### Regular image flavor (`21`) The regular image strives to balance between the functionality required by most users and image size. It has all customizations that the full image has and removes additional components to further decrease the image size: @@ -110,6 +114,10 @@ A couple of modifications have been performed to make the installation more suit * `LOCAL_LISTENER=''` * An `OPS$ORACLE` externally identified user has been created and granted `CONNECT` and `SELECT_CATALOG_ROLE` (this is used for health check and other operations) +#### Operating system + +* `/var/log/lastlog` has been cleaned + ### Regular image flavor (`18`) The regular image strives to balance between the functionality required by most users and image size. It has all customizations that the full image has and removes additional components to further decrease the image size: @@ -238,6 +246,10 @@ A couple of modifications have been performed to make the installation more suit * The `REDO` logs have been located into `$ORACLE_BASE/oradata/$ORACLE_SID/` * The fast recovery area has been removed (`DB_RECOVERY_FILE_DEST=''`) +#### Operating system + +* `/var/log/lastlog` has been cleaned + ### Regular image flavor (`11`) The regular image strives to balance between the functionality required by most users and image size. It has all customizations that the full image has and removes additional components to further decrease the image size: diff --git a/install.11202.sh b/install.11202.sh index a2893c5..14f600e 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -645,3 +645,6 @@ microdnf -y remove acl bc cracklib cracklib-dicts cryptsetup-libs \ # Remove dnf cache microdnf clean all + +# Clean lastlog +echo "" > /var/log/lastlog diff --git a/install.1840.sh b/install.1840.sh index dd2f07e..4cb7d9b 100644 --- a/install.1840.sh +++ b/install.1840.sh @@ -1105,3 +1105,6 @@ rm /etc/sysctl.conf.rpmsave # Remove dnf cache microdnf clean all + +# Clean lastlog +echo "" > /var/log/lastlog diff --git a/install.2130.sh b/install.2130.sh index f22d8b5..3f938e5 100644 --- a/install.2130.sh +++ b/install.2130.sh @@ -1077,3 +1077,6 @@ rpm -e --nodeps acl bc binutils cracklib cracklib-dicts cryptsetup-libs \ # Remove dnf cache microdnf clean all + +# Clean lastlog +echo "" > /var/log/lastlog From 647c406ae8585576f9d0d1c5ec6a051e543395f0 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 13 Nov 2021 14:53:06 -0700 Subject: [PATCH 149/192] Add 21c backups Signed-off-by: gvenzl --- tests/backup_old_images.sh | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/tests/backup_old_images.sh b/tests/backup_old_images.sh index 3d464d3..fa5a5c1 100755 --- a/tests/backup_old_images.sh +++ b/tests/backup_old_images.sh @@ -28,6 +28,32 @@ podman pull docker.io/gvenzl/oracle-xe:latest podman tag docker.io/gvenzl/oracle-xe:latest docker.io/gvenzl/oracle-xe:latest-backup podman rmi docker.io/gvenzl/oracle-xe:latest +# Backup 21c images +echo "Backup 21.3.0-full" +podman pull docker.io/gvenzl/oracle-xe:21.3.0-full +podman tag docker.io/gvenzl/oracle-xe:21.3.0-full docker.io/gvenzl/oracle-xe:21.3.0-full-backup +podman rmi docker.io/gvenzl/oracle-xe:21.3.0-full + +echo "Backup 21-full" +podman pull docker.io/gvenzl/oracle-xe:21-full +podman tag docker.io/gvenzl/oracle-xe:21-full docker.io/gvenzl/oracle-xe:21-full-backup +podman rmi docker.io/gvenzl/oracle-xe:21-full + +echo "Backup full" +podman pull docker.io/gvenzl/oracle-xe:full +podman tag docker.io/gvenzl/oracle-xe:full docker.io/gvenzl/oracle-xe:full-backup +podman rmi docker.io/gvenzl/oracle-xe:full + +echo "Backup 21.3.0" +podman pull docker.io/gvenzl/oracle-xe:21.3.0 +podman tag docker.io/gvenzl/oracle-xe:21.3.0 docker.io/gvenzl/oracle-xe:21.3.0-backup +podman rmi docker.io/gvenzl/oracle-xe:21.3.0 + +echo "Backup 18" +podman pull docker.io/gvenzl/oracle-xe:21 +podman tag docker.io/gvenzl/oracle-xe:21 docker.io/gvenzl/oracle-xe:21-backup +podman rmi docker.io/gvenzl/oracle-xe:21 + # Backup 18c images echo "Backup 18.4.0-full" podman pull docker.io/gvenzl/oracle-xe:18.4.0-full @@ -39,11 +65,6 @@ podman pull docker.io/gvenzl/oracle-xe:18-full podman tag docker.io/gvenzl/oracle-xe:18-full docker.io/gvenzl/oracle-xe:18-full-backup podman rmi docker.io/gvenzl/oracle-xe:18-full -echo "Backup full" -podman pull docker.io/gvenzl/oracle-xe:full -podman tag docker.io/gvenzl/oracle-xe:full docker.io/gvenzl/oracle-xe:full-backup -podman rmi docker.io/gvenzl/oracle-xe:full - echo "Backup 18.4.0" podman pull docker.io/gvenzl/oracle-xe:18.4.0 podman tag docker.io/gvenzl/oracle-xe:18.4.0 docker.io/gvenzl/oracle-xe:18.4.0-backup From 632e63a655a67aa8b793cfc8a210e480b9229e07 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 13 Nov 2021 14:53:39 -0700 Subject: [PATCH 150/192] Fix typo for 21 tests Signed-off-by: gvenzl --- tests/all_build_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/all_build_tests.sh b/tests/all_build_tests.sh index 4965d3a..21d2ef9 100755 --- a/tests/all_build_tests.sh +++ b/tests/all_build_tests.sh @@ -26,5 +26,5 @@ set -Eeuo pipefail ./build_Dockerfile_11202.sh # In order of newest to latest -./build_cokerfile_2130.sh +./build_Dockerfile_2130.sh ./build_Dockerfile_1840.sh From b2dae387b3953835af31d1a73101249fe26d33f1 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 13 Nov 2021 19:40:39 -0700 Subject: [PATCH 151/192] Fix for #50, set exec permissions for shell scripts Signed-off-by: gvenzl --- healthcheck.sh | 0 install.1840.sh | 0 install.2130.sh | 0 3 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 healthcheck.sh mode change 100644 => 100755 install.1840.sh mode change 100644 => 100755 install.2130.sh diff --git a/healthcheck.sh b/healthcheck.sh old mode 100644 new mode 100755 diff --git a/install.1840.sh b/install.1840.sh old mode 100644 new mode 100755 diff --git a/install.2130.sh b/install.2130.sh old mode 100644 new mode 100755 From ee2984fc2ee35604183940b835d982349433d394 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 13 Nov 2021 19:57:21 -0700 Subject: [PATCH 152/192] Add utPLSQL as users Signed-off-by: gvenzl --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ec7f32f..6eee369 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ We are proud of the following users of these images: * [Rucio by CERN](https://rucio.cern.ch/) [[`80dffbb`](https://github.com/rucio/rucio/commit/80dffbb09f58a9f30d2a9a4c3297e8ed22a78963)] * [SchemaCrawler](https://www.schemacrawler.com/) [[`08d9b87`](https://github.com/schemacrawler/SchemaCrawler/commit/08d9b87c280bf23e405bea6265abf01448fa71d3)] * [Testcontainers](https://www.testcontainers.org/) [[`99b91b8`](https://github.com/testcontainers/testcontainers-java/commit/99b91b89b6ee3f8f0e9545e86d9f0744b301db30)] +* [utPLSQL](http://utplsql.org/) [[`8080604`](https://github.com/utPLSQL/utPLSQL/commit/8080604df0256ab2202c9f64bb67671d55c63710#diff-6ac3f79fc25d95cd1e3d51da53a4b21b939437392578a35ae8cd6d5366ca5485)] If you are using these images and would like to be listed as well, please open an [issue on GitHub](https://github.com/gvenzl/oci-oracle-xe/issues) or reach out on [Twitter](https://twitter.com/geraldvenzl). From aaa5faa64402fef34284a673815926c686b84a28 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 13 Nov 2021 20:11:16 -0700 Subject: [PATCH 153/192] Better GitHub Actions documentation as per #45 Signed-off-by: gvenzl --- README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/README.md b/README.md index 6eee369..eb233f0 100644 --- a/README.md +++ b/README.md @@ -123,6 +123,23 @@ The images can be used as a [Service Container](https://docs.github.com/en/actio --health-retries 10 ``` +After your service is created, you can connect to it via the following properties: + +* Host: `localhost` or `127.0.0.1` +* Port: `1521` +* Service name: `XEPDB1` +* Database App User: `my_user` +* Database App Password: `my_password_which_I_really_should_change` + +If you amend the variables above, here is some more useful info: + +* Ports: you can access the port dynamically via `${{ job.services.oracle.ports[1521] }}`. This is helpful when you do not want to specify a given port via `- 1521/tcp` instead of `- 1521:1521`. Note that the `oracle` refers to the service name in the yaml file. If you call your service differently, you will also have to change `oracle` here to that other service name. +* Database Admin User: `system` +* Database Admin User Password: `$ORACLE_PASSWORD` +* Database App User: `$APP_USER` +* Database App User Password: `$APP_USER_PASSWORD` +* Example JDBC connect string with dynamic port allocation: `jdbc:oracle:thin:@localhost:${{ job.services.oracle.ports[1521] }}/XEPDB1` + # Image flavors | Flavor | Extension | Description | Use cases | From 8d5673555f787987081068353b474e8cfed59ea7 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 27 Nov 2021 11:23:07 -0700 Subject: [PATCH 154/192] Document Upscheme user (#56) Signed-off-by: gvenzl --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index eb233f0..8d230ae 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ We are proud of the following users of these images: * [Rucio by CERN](https://rucio.cern.ch/) [[`80dffbb`](https://github.com/rucio/rucio/commit/80dffbb09f58a9f30d2a9a4c3297e8ed22a78963)] * [SchemaCrawler](https://www.schemacrawler.com/) [[`08d9b87`](https://github.com/schemacrawler/SchemaCrawler/commit/08d9b87c280bf23e405bea6265abf01448fa71d3)] * [Testcontainers](https://www.testcontainers.org/) [[`99b91b8`](https://github.com/testcontainers/testcontainers-java/commit/99b91b89b6ee3f8f0e9545e86d9f0744b301db30)] +* [Upscheme](https://upscheme.org/) [[`954650a`](https://github.com/aimeos/upscheme/commit/954650afc92273f73bc1276aa0bd2f4253987c4f)] * [utPLSQL](http://utplsql.org/) [[`8080604`](https://github.com/utPLSQL/utPLSQL/commit/8080604df0256ab2202c9f64bb67671d55c63710#diff-6ac3f79fc25d95cd1e3d51da53a4b21b939437392578a35ae8cd6d5366ca5485)] If you are using these images and would like to be listed as well, please open an [issue on GitHub](https://github.com/gvenzl/oci-oracle-xe/issues) or reach out on [Twitter](https://twitter.com/geraldvenzl). From 00faf9b71d55046a24c7453e552b8f395d8406fc Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 27 Nov 2021 16:54:08 -0700 Subject: [PATCH 155/192] Update RPM package uninstall for new OL image Signed-off-by: gvenzl --- install.11202.sh | 13 ++++++------- install.1840.sh | 11 +++++------ install.2130.sh | 7 +++---- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 14f600e..925e9da 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -635,13 +635,12 @@ fi; # Unfortunately microdnf does not automatically uninstall dependencies that have been # installed with a package, so if you were to uninstall just util-linux, for example, # it does not automatically also remove gzip and cracklib again. -microdnf -y remove acl bc cracklib cracklib-dicts cryptsetup-libs \ - dbus dbus-common dbus-daemon dbus-libs dbus-tools \ - device-mapper device-mapper-libs elfutils-default-yama-scope \ - elfutils-libs hwdata libpwquality iptables-libs kmod-libs libfdisk \ - libibverbs libnl3 libnsl2 libpcap libseccomp libtirpc libutempter \ - net-tools pam pam pciutils pciutils-libs procps-ng rdma-core \ - systemd systemd-pam util-linux +rpm -e --nodeps acl bc cracklib cracklib-dicts cryptsetup-libs \ + dbus dbus-common dbus-daemon dbus-libs dbus-tools \ + device-mapper device-mapper-libs elfutils-default-yama-scope \ + elfutils-libs libpwquality kmod-libs libfdisk libnsl2 libseccomp \ + libtirpc libutempter net-tools pam pam procps-ng \ + systemd systemd-pam util-linux # Remove dnf cache microdnf clean all diff --git a/install.1840.sh b/install.1840.sh index 4cb7d9b..d6b2bbd 100755 --- a/install.1840.sh +++ b/install.1840.sh @@ -1094,12 +1094,11 @@ fi; # Use rpm instead of microdnf to allow removing packages regardless of dependencies specified by the Oracle XE RPM rpm -e --nodeps acl bc binutils cracklib cracklib-dicts cryptsetup-libs \ dbus dbus-common dbus-daemon dbus-libs dbus-tools \ - device-mapper device-mapper-libs diffutils elfutils-default-yama-scope \ - elfutils-libs file findutils hostname hwdata iptables-libs kmod-libs \ - ksh libfdisk libibverbs libnl3 libnsl2 libpcap libpwquality libseccomp \ - libtirpc libutempter lm_sensors-libs make net-tools pam \ - pciutils pciutils-libs procps-ng rdma-core smartmontools sysstat \ - systemd systemd-pam util-linux xz + device-mapper device-mapper-libs diffutils \ + elfutils-default-yama-scope elfutils-libs file findutils hostname \ + kmod-libs ksh libfdisk libnsl2 libpwquality libseccomp libtirpc \ + libutempter lm_sensors-libs make net-tools pam procps-ng smartmontools \ + sysstat systemd systemd-pam util-linux xz rm /etc/sysctl.conf.rpmsave diff --git a/install.2130.sh b/install.2130.sh index 3f938e5..2945165 100755 --- a/install.2130.sh +++ b/install.2130.sh @@ -1069,10 +1069,9 @@ fi; rpm -e --nodeps acl bc binutils cracklib cracklib-dicts cryptsetup-libs \ dbus dbus-common dbus-daemon dbus-libs dbus-tools \ device-mapper device-mapper-libs diffutils \ - elfutils-default-yama-scope elfutils-libs file findutils hostname hwdata \ - iptables-libs kmod-libs ksh libfdisk libibverbs libnl3 libnsl2 libpcap \ - libpwquality libseccomp libtirpc libutempter lm_sensors-libs make pam \ - pciutils pciutils-libs procps-ng rdma-core smartmontools sysstat \ + elfutils-default-yama-scope elfutils-libs file findutils hostname \ + kmod-libs ksh libfdisk libnsl2 libpwquality libseccomp libtirpc \ + libutempter lm_sensors-libs make pam procps-ng smartmontools sysstat \ systemd systemd-pam util-linux xz # Remove dnf cache From a3fe71fcbcd32c19e02f441e4a3e8d2f17d364f4 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 28 Nov 2021 10:59:52 -0700 Subject: [PATCH 156/192] Introducing 21c-slim Signed-off-by: gvenzl --- ImageDetails.md | 38 ++ install.2130.sh | 1298 +++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 1182 insertions(+), 154 deletions(-) diff --git a/ImageDetails.md b/ImageDetails.md index 451a42e..d06df38 100644 --- a/ImageDetails.md +++ b/ImageDetails.md @@ -100,6 +100,44 @@ The following libraries have been removed from the `$ORACLE_HOME/lib` directory: * `pkgconf-m4` * `pkgconf-pkg-config` +### Slim image flavor (`21-slim`) + +The slim images aims for smallest possible image size with only the Oracle Database relational components. It has all customizations that the regular image has and removes all non-relational components (where possible) to further decrease the image size: + +#### Database components + +* `Oracle Text` has been uninstalled and removed (`$ORACLE_HOME/ctx`) +* `Oracle Spatial` has been uninstalled and removed (`$ORACLE_HOME/md`) +* `Oracle Locator` has been uninstalled and removed (`$ORACLE_HOME/md`) +* The demo samples directory has been removed (`$ORACLE_HOME/demo`) +* `ODBC` driver samples have been removed (`$ORACLE_HOME/odbc`) +* `TNS` demo samples have been removed (`$ORACLE_HOME/network/admin/samples`) +* `NLS LBuilder` directory has been removed (`$ORACLE_HOME/nls/lbuilder`) +* The hs directory has been removed (`$ORACLE_HOME/hs`) +* The `precomp` directory has been removed (`$ORACLE_HOME/precomp`) +* The `rdbms/public` directory has been removed (`$ORACLE_HOME/rdbms/public`) +* The `rdbms/xml` directory has been removed (`$ORACLE_HOME/rdbms/xml`) +* The `ord` directory has been removed (`$ORACLE_HOME/ord`) +* `Oracle R` has been removed (`$ORACLE_HOME/R`) +* The `deinstall` directory has been removed (`$ORACLE_HOME/deinstall`) +* The `Oracle Universal installer` has been removed (`$ORACLE_HOME/oui`) +* `Perl` has been removed (`$ORACLE_HOME/perl`) + +##### Database binaries + +The following binaries have been removed from the `$ORACLE_HOME/bin` directory: + +* `$ORACLE_HOME/bin/ORE` (Oracle R Enterprise) +* `$ORACLE_HOME/bin/rman` (Oracle Recovery Manager) +* `$ORACLE_HOME/bin/wrap` (PL/SQL Wrapper) + +##### Database libraries + +The following libraries have been removed from the `$ORACLE_HOME/lib` directory: + +* `$ORACLE_HOME/lib/asm*` (Oracle Automatic Storage Management) +* `$ORACLE_HOME/lib/ore.so` (Oracle R Enterprise) + ## 18c XE ### Full image flavor (`18-full`) diff --git a/install.2130.sh b/install.2130.sh index 2945165..83233b2 100755 --- a/install.2130.sh +++ b/install.2130.sh @@ -39,10 +39,10 @@ if [ "${BUILD_MODE}" == "FULL" ]; then elif [ "${BUILD_MODE}" == "REGULAR" ]; then REDO_SIZE=20 USERS_SIZE=10 -#elif [ "${BUILD_MODE}" == "SLIM" ]; then -# REDO_SIZE=10 -# USERS_SIZE=2 -# CDB_SYSAUX_SIZE=464 +elif [ "${BUILD_MODE}" == "SLIM" ]; then + REDO_SIZE=10 + USERS_SIZE=2 + CDB_SYSAUX_SIZE=560 fi; echo "BUILDER: Installing OS dependencies" @@ -511,86 +511,1081 @@ EOF exit; EOF -# #################################### -# # SLIM Image: Remove DB components # -# #################################### -# -# if [ "${BUILD_MODE}" == "SLIM" ]; then -# -# # Needs to be run as 'oracle' user (Perl script otherwise fails #TODO: see whether it can be run with su -c somehow instead) -# -# echo "BUILDER: Removing additional components for SLIM image" -# su - oracle << EOF -# cd "${ORACLE_HOME}"/rdbms/admin -# -# # Remove Oracle Text -# echo "BUILDER: Removing Oracle Text" -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_text_pdbs -C 'CDB\$ROOT' -d "${ORACLE_HOME}"/ctx/admin catnoctx.sql -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_text_cdb -c 'CDB\$ROOT' -d "${ORACLE_HOME}"/ctx/admin catnoctx.sql -# -# # Remove Spatial -# echo "BUILDER: Removing Oracle Spatial" -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_spatial_pdbs -d "${ORACLE_HOME}"/md/admin mddins.sql -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_spatial_cdb -d "${ORACLE_HOME}"/md/admin mddins.sql -# -# # Recompile -# echo "BUILDER: Recompiling database objects" -# "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_recompile_all_objects -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql -# -# # Remove all log files -# rm "${ORACLE_HOME}"/rdbms/admin/builder_* -# -# exit; -# EOF -# -# # Drop leftover items -# echo "BUILDER: Dropping leftover Database dictionary objects for SLIM image" -# su -p oracle -c "sqlplus -s / as sysdba" << EOF -# -# -- Exit on any errors -# WHENEVER SQLERROR EXIT SQL.SQLCODE -# -# -- Oracle Text leftovers -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE XDB.XDB_DATASTORE_PROC'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_XDBT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); -# -# -- Remove Spatial leftover components -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDDATA CASCADE'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDSYS CASCADE'); -# -# -- Open PDB\$SEED to READ WRITE mode (catcon put it into READY ONLY again) -# ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; -# ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; -# -# ALTER SESSION SET CONTAINER=PDB\$SEED; -# -# -- Oracle Text leftovers -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE XDB.XDB_DATASTORE_PROC'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_XDBT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); -# -# -- Remove Spatial leftover components -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDDATA CASCADE'); -# -# ALTER SESSION SET CONTAINER=XEPDB1; -# -# -- Oracle Text leftovers -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE XDB.XDB_DATASTORE_PROC'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_XDBT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); -# -# -- Remove Spatial leftover components -# exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDDATA CASCADE'); -# -# exit; -# EOF -# -# fi; -# + #################################### + # SLIM Image: Remove DB components # + #################################### + + if [ "${BUILD_MODE}" == "SLIM" ]; then + + # Needs to be run as 'oracle' user (Perl script otherwise fails #TODO: see whether it can be run with su -c somehow instead) + + echo "BUILDER: Removing additional components for SLIM image" + su - oracle << EOF + cd "${ORACLE_HOME}"/rdbms/admin + + # Remove Oracle Text + echo "BUILDER: Removing Oracle Text" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_text_pdbs -C 'CDB\$ROOT' -d "${ORACLE_HOME}"/ctx/admin catnoctx.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_text_cdb -c 'CDB\$ROOT' -d "${ORACLE_HOME}"/ctx/admin catnoctx.sql + + # Remove Spatial + echo "BUILDER: Removing Oracle Spatial" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -C 'CDB\$ROOT' -b builder_remove_spatial_pdbs -d "${ORACLE_HOME}"/md/admin mddins.sql + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -c 'CDB\$ROOT' -b builder_remove_spatial_cdb -d "${ORACLE_HOME}"/md/admin mddins.sql + + # Remove Locator + echo "BUILDER: Removing Oracle Locator" + # Parent script mddinloc.sql does only check for SDO record removed or "OPTION OFF" but the script above leaves it as "REMOVED", + # therefore this parent script doesn not do anything. + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_remove_locator_pdbs -d "${ORACLE_HOME}"/md/admin mddinsl.sql + + # Recompile + echo "BUILDER: Recompiling database objects" + "${ORACLE_HOME}"/perl/bin/perl catcon.pl -n 1 -b builder_recompile_all_objects -d "${ORACLE_HOME}"/rdbms/admin utlrp.sql + + # Remove all log files + rm "${ORACLE_HOME}"/rdbms/admin/builder_* + + exit; +EOF + + # Drop leftover items + echo "BUILDER: Dropping leftover Database dictionary objects for SLIM image" + su -p oracle -c "sqlplus -s / as sysdba" << EOF + + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + + -- Oracle Text leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE XDB.XDB_DATASTORE_PROC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_XDBT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CTX_USER_AUTOSYNC_STATUS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CTX_USER_AUTOSYNC_JOBS'); + + -- Remove Spatial leftover components + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDDATA CASCADE'); + + -- Open PDB\$SEED to READ WRITE mode (catcon put it into READY ONLY again) + ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE; + ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE; + + ALTER SESSION SET CONTAINER=PDB\$SEED; + + -- Oracle Text leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE XDB.XDB_DATASTORE_PROC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_XDBT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CTX_USER_AUTOSYNC_STATUS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CTX_USER_AUTOSYNC_JOBS'); + + -- Remove Spatial leftover components + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDDATA CASCADE'); + + -- Remove Locator leftover components + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_POINT2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_POINT3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CURVE2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CURVE3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_LINESTRING2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_LINESTRING3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_POLYGON2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_POLYGON3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COLLECTION2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COLLECTION3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTIPOINT2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTIPOINT3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTICURVE2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTICURVE3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTILINESTRING2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTILINESTRING3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTIPOLYGON2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTIPOLYGON3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_LONLAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_WEBMERCATOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_KEYWORDARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ADDR_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEO_ADDR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOMETRY_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOMETRY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_POINT_TYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ELEM_INFO_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ORDINATE_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DIM_ELEMENT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DIM_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_VPOINT_TYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MBR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NUMBER_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NUMBER_ARRAYSET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_STRING_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_STRING2_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_STRING2_ARRAYSET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ROWIDPAIR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ROWIDSET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_REGION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_REGIONSET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_REGAGGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_REGAGGRSET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RANGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RANGE_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CLOSEST_POINTS_TYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ORGSCL_TYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PC_BLK'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TIN_BLK'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_TIN_PC_SYSDATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_TIN_PC_SYSDATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM TFM_PLAN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TFM_CHAIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_SRID'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_GEOMETRY_LAYER'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_GEOMETRY_LAYER_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_GEOMETRY_LAYER_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_LIST_TYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_OBJECT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_NSTD_TBL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TGL_OBJECT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_EDGE_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_OBJECT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TGL_OBJECT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_GEOMETRY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_GEOM_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_GEOM_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_VERSION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_OWM_INSTALLED'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_SRS_NAMESPACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_SRID_CHAIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM TMP_COORD_OPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM EPSG_PARAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM EPSG_PARAMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM NTV2_XML_DATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CS_SRS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DATUM_ENGINEERING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DATUM_GEODETIC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DATUM_VERTICAL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CRS_COMPOUND'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CRS_ENGINEERING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CRS_GEOCENTRIC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CRS_GEOGRAPHIC2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CRS_GEOGRAPHIC3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CRS_PROJECTED'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CRS_VERTICAL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AREA_UNITS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DIST_UNITS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ANGLE_UNITS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ELLIPSOIDS_OLD_FORMAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PROJECTIONS_OLD_FORMAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DATUMS_OLD_FORMAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_OPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AVAILABLE_OPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AVAILABLE_ELEM_OPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AVAILABLE_NON_ELEM_OPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_OP_PATHS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PREFERRED_OPS_SYSTEM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PREFERRED_OPS_USER'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_REF_SYS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_REF_SYSTEM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_UNITS_OF_MEASURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PRIME_MERIDIANS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ELLIPSOIDS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DATUMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_SYS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_AXES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_AXIS_NAMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_OP_METHODS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_OP_PARAMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_OP_PARAM_USE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_OP_PARAM_VALS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_SRIDS_BY_URN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_SRIDS_BY_URN_PATTERN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TRANSIENT_RULE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TRANSIENT_RULE_SET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_SRID_LIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ELLIPSOIDS_OLD_SNAPSHOT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PROJECTIONS_OLD_SNAPSHOT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DATUMS_OLD_SNAPSHOT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MD'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_FEATURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ST_TOLERANCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TTS_METADATA_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INDEX_HISTOGRAM_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INDEX_HISTOGRAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INDEX_HISTOGRAMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_INDEX_HISTOGRAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_INDEX_HISTOGRAMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_INDEX_HISTOGRAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_INDEX_HISTOGRAMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MY_SDO_INDEX_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INDEX_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_INDEX_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_INDEX_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_INDEX_INFO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_INDEX_INFO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TXN_JOURNAL_GTT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TXN_JOURNAL_REG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DIST_METADATA_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DIAG_MESSAGES_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_DIAG_MESSAGES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_DIAG_MESSAGES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TXN_IDX_EXP_UPD_RGN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_LRS_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_LRS_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_TOPO_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_TOPO_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_TOPO_INFO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_TOPO_INFO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_TRANSACT_DATA$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_DATA$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RELATEMASK_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_3GL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ADMIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OGIS_GEOMETRY_COLUMNS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBA_GEOMETRY_COLUMNS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_GEOMETRY_COLUMNS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_GEOMETRY_COLUMNS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OGIS_SPATIAL_REFERENCE_SYSTEMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CATALOG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NN_DISTANCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_FILTER'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RELATE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RTREE_FILTER'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RTREE_RELATE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_WITHIN_DISTANCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM LOCATOR_WITHIN_DISTANCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ANYINTERACT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CONTAINS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INSIDE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOUCH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_EQUAL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COVERS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COVEREDBY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_OVERLAPBDYDISJOINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_OVERLAPBDYINTERSECT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_OVERLAPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SPATIAL_INDEX'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SPATIAL_INDEX_V2'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_GEOMETRY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_POINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_CURVE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_SURFACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_CURVEPOLYGON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_LINESTRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_POLYGON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_GEOMCOLLECTION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_MULTIPOINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_MULTICURVE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_MULTIFURFACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_MULTILINESTRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_MULTIPOLYGON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_CIRCULARSTRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_COMPOUNDCURVE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_GEOMETRY_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_POINT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_CURVE_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_SURFACE_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_LINESTRING_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_POLYGON_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_INTERSECTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_RELATE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_TOUCH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_CONTAINS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_COVERS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_COVEREDBY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_EQUAL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_INSIDE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_OVERLAPBDYDISJOINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_OVERLAPBDYINTERSECT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_OVERLAPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MBRCOORDLIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_STATISTICS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MIGRATE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PRIDX'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RTREE_ADMIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM RTREEJOINFUNC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TUNE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHNDIM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHLENGTH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHBYTELEN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHPRECISION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHLEVELS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHENCODE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHDECODE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCELLBNDRY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCELLSIZE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHSUBSTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCOLLAPSE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCOMPOSE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCOMMONCODE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHMATCH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHDISTANCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHORDER'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHGROUP'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHJLDATE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCLDATE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHIDPART'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHIDLPART'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCOMPARE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHNCOMPARE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHSUBDIVIDE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHSTBIT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHGTBIT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHSTYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHGTYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCBIT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHSBIT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHGBIT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHINCRLEV'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHGETCID'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHSETCID'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHAND'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHXOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHENCODE_BYLEVEL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHMAXCODE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_LIGHTSOURCES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_ANIMATIONS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_VIEWFRAMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_SCENES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_3DTHEMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_3DTXFMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_LIGHTSOURCES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_ANIMATIONS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_VIEWFRAMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_SCENES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_3DTHEMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_3DTXFMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_MAPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_STYLES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_THEMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_MAPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_STYLES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_THEMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBA_SDO_MAPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBA_SDO_STYLES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBA_SDO_THEMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_CACHED_MAPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_CACHED_MAPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POLYGONFROMTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM LINESTRINGFROMTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTIPOLYGONFROMTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTILINESTRINGFROMTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POINTFROMTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POLYGONFROMWKB'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM LINESTRINGFROMWKB'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTIPOLYGONFROMWKB'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTILINESTRINGFROMWKB'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POINTFROMWKB'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DIMENSION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ASTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ASBINARY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SRID'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OGC_X'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OGC_Y'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM NUMINTERIORRINGS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM INTERIORRINGN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM EXTERIORRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM NUMGEOMETRIES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM GEOMETRYN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DISJOINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM TOUCH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM WITHIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OVERLAP'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OGC_CONTAINS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM INTERSECTION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DIFFERENCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OGC_UNION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CONVEXHULL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CENTROID'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM GEOMETRYTYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM STARTPOINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ENDPOINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM BOUNDARY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ENVELOPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ISEMPTY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM NUMPOINTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POINTN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ISCLOSED'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POINTONSURFACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM AREA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM BUFFER'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM EQUALS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SYMMETRICDIFFERENCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DISTANCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OGC_LENGTH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ISSIMPLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ISRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM INTERSECTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM RELATE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CROSS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MD_LRS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_LRS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDOAGGRTYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_UNION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_MBR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_LRS_CONCAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_LRS_CONCAT_3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_CONVEXHULL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_CENTROID'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_CONCAT_LINES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_SET_UNION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_CONCAVEHULL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_XML_SCHEMAS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_ANNOTATIONTEXTELEMENT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_ANNOT_TEXTELEMENT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_ANNOTATIONTEXTELEMENT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_ANNOTATION_TEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_ANNOTATION_TEXT_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_ANNOTATION_TEXT_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_UTIL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_JOIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDORIDTABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GET_TAB_SUBPART'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GET_TAB_PART'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PQRY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CIRCULARSTRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CURVE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CURVEPOLYGON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM COMPOUNDCURVE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM GEOMETRYCOLLECTION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM GEOMETRY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM LINESTRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTICURVE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTILINESTRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTIPOINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTIPOLYGON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTISURFACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POLYGON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SURFACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEORASTER_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_HISTOGRAM_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_OLS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_WFS_LOCK'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NETWORK_MANAGER_T'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NODE_T'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_LINK_T'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PATH_T'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NETWORK_T'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM TRACKER_MSG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM LOCATION_MSG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM LOCATION_MSG_ARR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM LOCATION_MSG_PKD'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PROC_MSG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PROC_MSG_ARR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PROC_MSG_PKD'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM NOTIFICATION_MSG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PRVT_SAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_SAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GCDR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_WFS_PROCESS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_CSW_SERVICE_INFO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_CSW_SERVICE_INFO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CSW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_POINTINPOLYGON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TRKR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_MAP'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_ANYINTERACT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RASTER'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RASTERSET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_SRS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_HISTOGRAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_GRAYSCALE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_COLORMAP'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_GCP'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_GCP_COLLECTION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_GCPGEOREFTYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_CELL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_CELL_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_GEOR_SYSDATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_GEOR_SYSDATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_AUX'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_ADMIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_UTL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_RA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_AGGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_IP'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_GDAL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PC_PKG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_LODS_TYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PCS_TYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PC_RECORD'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PC_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PC_COLUMN_RECORD'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PC_COLUMN_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TIN_PKG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_WCS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_CONSTRAINTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_CONSTRAINTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_JAVA_OBJECTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_JAVA_OBJECTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_LOCKS_WM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_LOCKS_WM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_USER_DATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_USER_DATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_HISTORIES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_HISTORIES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_TIMESTAMPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_TIMESTAMPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_UPD_HIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_UPD_HIST_TBL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_UPD_HIST_N'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_UPD_HIST_NTBL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_LINK'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_LINK_NTBL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_OP'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_OP_NTBL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_FEAT_ELEM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_FEAT_ELEM_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_LAYER_FEAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_LAYER_FEAT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_FEATURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_FEATURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_PARTITION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_MEM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ROUTER_PARTITION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ELOCATION_EDGE_LINK_LEVEL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ROUTER_TIMEZONE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NDM_TRAFFIC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NFE_MODEL_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NFE_MODEL_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NFE_MODEL_FTLAYER_REL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NFE_MODEL_FTLAYER_REL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NFE_MODEL_WORKSPACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NFE_MODEL_WORKSPACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INTERACT_POINT_FEAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INTERACT_POINT_FEAT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INTERACT_LINE_FEAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INTERACT_LINE_FEAT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INTERACTION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INTERACTION_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NFE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_OBJ_TRACING'); + + ALTER SESSION SET CONTAINER=XEPDB1; + + -- Oracle Text leftovers + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE XDB.XDB_DATASTORE_PROC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBMS_XDBT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PACKAGE XDB.DBMS_XDBT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PROCEDURE SYS.VALIDATE_CONTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CTX_USER_AUTOSYNC_STATUS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CTX_USER_AUTOSYNC_JOBS'); + + -- Remove Spatial leftover components + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP USER MDDATA CASCADE'); + + -- Remove Locator leftover components + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_POINT2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_POINT3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CURVE2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CURVE3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_LINESTRING2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_LINESTRING3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_POLYGON2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_POLYGON3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COLLECTION2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COLLECTION3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTIPOINT2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTIPOINT3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTICURVE2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTICURVE3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTILINESTRING2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTILINESTRING3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTIPOLYGON2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MULTIPOLYGON3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_LONLAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_WEBMERCATOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_KEYWORDARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ADDR_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEO_ADDR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOMETRY_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOMETRY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_POINT_TYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ELEM_INFO_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ORDINATE_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DIM_ELEMENT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DIM_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_VPOINT_TYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MBR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NUMBER_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NUMBER_ARRAYSET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_STRING_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_STRING2_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_STRING2_ARRAYSET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ROWIDPAIR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ROWIDSET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_REGION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_REGIONSET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_REGAGGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_REGAGGRSET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RANGE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RANGE_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CLOSEST_POINTS_TYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ORGSCL_TYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PC_BLK'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TIN_BLK'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_TIN_PC_SYSDATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_TIN_PC_SYSDATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM TFM_PLAN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TFM_CHAIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_SRID'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_GEOMETRY_LAYER'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_GEOMETRY_LAYER_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_GEOMETRY_LAYER_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_LIST_TYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_OBJECT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_NSTD_TBL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TGL_OBJECT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_EDGE_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_OBJECT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TGL_OBJECT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_GEOMETRY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_GEOM_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_GEOM_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_VERSION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_OWM_INSTALLED'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_SRS_NAMESPACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_SRID_CHAIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM TMP_COORD_OPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM EPSG_PARAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM EPSG_PARAMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM NTV2_XML_DATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CS_SRS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DATUM_ENGINEERING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DATUM_GEODETIC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DATUM_VERTICAL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CRS_COMPOUND'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CRS_ENGINEERING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CRS_GEOCENTRIC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CRS_GEOGRAPHIC2D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CRS_GEOGRAPHIC3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CRS_PROJECTED'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CRS_VERTICAL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AREA_UNITS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DIST_UNITS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ANGLE_UNITS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ELLIPSOIDS_OLD_FORMAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PROJECTIONS_OLD_FORMAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DATUMS_OLD_FORMAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_OPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AVAILABLE_OPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AVAILABLE_ELEM_OPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AVAILABLE_NON_ELEM_OPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_OP_PATHS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PREFERRED_OPS_SYSTEM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PREFERRED_OPS_USER'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_REF_SYS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_REF_SYSTEM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_UNITS_OF_MEASURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PRIME_MERIDIANS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ELLIPSOIDS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DATUMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_SYS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_AXES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_AXIS_NAMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_OP_METHODS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_OP_PARAMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_OP_PARAM_USE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COORD_OP_PARAM_VALS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_SRIDS_BY_URN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_SRIDS_BY_URN_PATTERN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TRANSIENT_RULE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TRANSIENT_RULE_SET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_SRID_LIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ELLIPSOIDS_OLD_SNAPSHOT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PROJECTIONS_OLD_SNAPSHOT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DATUMS_OLD_SNAPSHOT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MD'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_FEATURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ST_TOLERANCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TTS_METADATA_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INDEX_HISTOGRAM_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INDEX_HISTOGRAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INDEX_HISTOGRAMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_INDEX_HISTOGRAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_INDEX_HISTOGRAMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_INDEX_HISTOGRAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_INDEX_HISTOGRAMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MY_SDO_INDEX_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INDEX_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_INDEX_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_INDEX_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_INDEX_INFO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_INDEX_INFO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TXN_JOURNAL_GTT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TXN_JOURNAL_REG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DIST_METADATA_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_DIAG_MESSAGES_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_DIAG_MESSAGES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_DIAG_MESSAGES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TXN_IDX_EXP_UPD_RGN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_LRS_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_LRS_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_TOPO_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_TOPO_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_TOPO_INFO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_TOPO_INFO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_TRANSACT_DATA$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_DATA$'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RELATEMASK_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_3GL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ADMIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OGIS_GEOMETRY_COLUMNS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBA_GEOMETRY_COLUMNS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_GEOMETRY_COLUMNS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_GEOMETRY_COLUMNS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OGIS_SPATIAL_REFERENCE_SYSTEMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CATALOG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NN_DISTANCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_FILTER'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RELATE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RTREE_FILTER'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RTREE_RELATE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_WITHIN_DISTANCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM LOCATOR_WITHIN_DISTANCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ANYINTERACT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CONTAINS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INSIDE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOUCH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_EQUAL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COVERS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_COVEREDBY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_OVERLAPBDYDISJOINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_OVERLAPBDYINTERSECT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_OVERLAPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SPATIAL_INDEX'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SPATIAL_INDEX_V2'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_GEOMETRY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_POINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_CURVE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_SURFACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_CURVEPOLYGON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_LINESTRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_POLYGON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_GEOMCOLLECTION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_MULTIPOINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_MULTICURVE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_MULTIFURFACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_MULTILINESTRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_MULTIPOLYGON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_CIRCULARSTRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_COMPOUNDCURVE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_GEOMETRY_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_POINT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_CURVE_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_SURFACE_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_LINESTRING_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_POLYGON_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_INTERSECTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_RELATE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_TOUCH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_CONTAINS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_COVERS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_COVEREDBY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_EQUAL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_INSIDE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_OVERLAPBDYDISJOINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_OVERLAPBDYINTERSECT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_OVERLAPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MBRCOORDLIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_STATISTICS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_MIGRATE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PRIDX'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RTREE_ADMIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM RTREEJOINFUNC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TUNE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHNDIM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHLENGTH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHBYTELEN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHPRECISION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHLEVELS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHENCODE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHDECODE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCELLBNDRY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCELLSIZE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHSUBSTR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCOLLAPSE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCOMPOSE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCOMMONCODE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHMATCH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHDISTANCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHORDER'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHGROUP'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHJLDATE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCLDATE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHIDPART'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHIDLPART'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCOMPARE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHNCOMPARE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHSUBDIVIDE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHSTBIT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHGTBIT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHSTYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHGTYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHCBIT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHSBIT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHGBIT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHINCRLEV'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHGETCID'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHSETCID'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHAND'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHXOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHENCODE_BYLEVEL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM HHMAXCODE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_LIGHTSOURCES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_ANIMATIONS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_VIEWFRAMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_SCENES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_3DTHEMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_3DTXFMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_LIGHTSOURCES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_ANIMATIONS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_VIEWFRAMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_SCENES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_3DTHEMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_3DTXFMS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_MAPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_STYLES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_THEMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_MAPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_STYLES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_THEMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBA_SDO_MAPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBA_SDO_STYLES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DBA_SDO_THEMES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_CACHED_MAPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_CACHED_MAPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POLYGONFROMTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM LINESTRINGFROMTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTIPOLYGONFROMTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTILINESTRINGFROMTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POINTFROMTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POLYGONFROMWKB'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM LINESTRINGFROMWKB'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTIPOLYGONFROMWKB'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTILINESTRINGFROMWKB'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POINTFROMWKB'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DIMENSION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ASTEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ASBINARY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SRID'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OGC_X'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OGC_Y'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM NUMINTERIORRINGS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM INTERIORRINGN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM EXTERIORRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM NUMGEOMETRIES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM GEOMETRYN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DISJOINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM TOUCH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM WITHIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OVERLAP'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OGC_CONTAINS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM INTERSECTION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DIFFERENCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OGC_UNION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CONVEXHULL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CENTROID'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM GEOMETRYTYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM STARTPOINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ENDPOINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM BOUNDARY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ENVELOPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ISEMPTY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM NUMPOINTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POINTN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ISCLOSED'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POINTONSURFACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM AREA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM BUFFER'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM EQUALS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SYMMETRICDIFFERENCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM DISTANCE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM OGC_LENGTH'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ISSIMPLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ISRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM INTERSECTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM RELATE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CROSS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MD_LRS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_LRS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDOAGGRTYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_UNION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_MBR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_LRS_CONCAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_LRS_CONCAT_3D'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_CONVEXHULL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_CENTROID'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_CONCAT_LINES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_SET_UNION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_AGGR_CONCAVEHULL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_XML_SCHEMAS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_ANNOTATIONTEXTELEMENT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_ANNOT_TEXTELEMENT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_ANNOTATIONTEXTELEMENT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ST_ANNOTATION_TEXT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_ANNOTATION_TEXT_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_ANNOTATION_TEXT_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_UTIL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_JOIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDORIDTABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GET_TAB_SUBPART'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GET_TAB_PART'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PQRY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CIRCULARSTRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CURVE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM CURVEPOLYGON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM COMPOUNDCURVE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM GEOMETRYCOLLECTION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM GEOMETRY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM LINESTRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTICURVE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTILINESTRING'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTIPOINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTIPOLYGON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM MULTISURFACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POINT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM POLYGON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SURFACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEORASTER_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_HISTOGRAM_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_OLS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_WFS_LOCK'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NETWORK_MANAGER_T'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NODE_T'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_LINK_T'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PATH_T'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NETWORK_T'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM TRACKER_MSG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM LOCATION_MSG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM LOCATION_MSG_ARR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM LOCATION_MSG_PKD'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PROC_MSG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PROC_MSG_ARR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PROC_MSG_PKD'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM NOTIFICATION_MSG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PRVT_SAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_SAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GCDR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_WFS_PROCESS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_CSW_SERVICE_INFO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_CSW_SERVICE_INFO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_CSW'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_POINTINPOLYGON'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TRKR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_MAP'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TOPO_ANYINTERACT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RASTER'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_RASTERSET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_SRS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_HISTOGRAM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_GRAYSCALE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_COLORMAP'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_GCP'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_GCP_COLLECTION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_GCPGEOREFTYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_CELL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_CELL_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_GEOR_SYSDATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_GEOR_SYSDATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_AUX'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_ADMIN'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_UTL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_RA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_AGGR'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_IP'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_GEOR_GDAL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PC_PKG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_LODS_TYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_PCS_TYPE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PC_RECORD'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PC_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PC_COLUMN_RECORD'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM PC_COLUMN_TABLE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_TIN_PKG'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_WCS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_CONSTRAINTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_CONSTRAINTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_JAVA_OBJECTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_JAVA_OBJECTS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_LOCKS_WM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_LOCKS_WM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_USER_DATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_USER_DATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_HISTORIES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_HISTORIES'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_TIMESTAMPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_TIMESTAMPS'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_UPD_HIST'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_UPD_HIST_TBL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_UPD_HIST_N'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_UPD_HIST_NTBL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_LINK'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_LINK_NTBL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_OP'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_OP_NTBL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_FEAT_ELEM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_FEAT_ELEM_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_LAYER_FEAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_LAYER_FEAT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NETWORK_FEATURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NETWORK_FEATURE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_PARTITION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NET_MEM'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ROUTER_PARTITION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ELOCATION_EDGE_LINK_LEVEL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_ROUTER_TIMEZONE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NDM_TRAFFIC'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NFE_MODEL_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NFE_MODEL_METADATA'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NFE_MODEL_FTLAYER_REL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NFE_MODEL_FTLAYER_REL'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM USER_SDO_NFE_MODEL_WORKSPACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM ALL_SDO_NFE_MODEL_WORKSPACE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INTERACT_POINT_FEAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INTERACT_POINT_FEAT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INTERACT_LINE_FEAT'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INTERACT_LINE_FEAT_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INTERACTION'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_INTERACTION_ARRAY'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_NFE'); + exec DBMS_PDB.EXEC_AS_ORACLE_SCRIPT('DROP PUBLIC SYNONYM SDO_OBJ_TRACING'); + + exit; +EOF + + fi; + ##################### # Shrink data files # ##################### @@ -991,76 +1986,71 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then rpm -e --nodeps glibc-devel glibc-headers kernel-headers libpkgconf libxcrypt-devel \ pkgconf pkgconf-m4 pkgconf-pkg-config -# # Remove components from ORACLE_HOME -# if [ "${BUILD_MODE}" == "SLIM" ]; then -# -# echo "BUILDER: further cleanup for SLIM image" -# -# # Remove Oracle Text directory -# rm -r "${ORACLE_HOME}"/ctx -# -# # Remove demo directory -# rm -r "${ORACLE_HOME}"/demo -# -# # Remove ODBC samples -# rm -r "${ORACLE_HOME}"/odbc -# -# # Remove TNS samples -# rm -r "${ORACLE_HOME}"/network/admin/samples -# -# # Remove NLS LBuilder -# rm -r "${ORACLE_HOME}"/nls/lbuilder -# -# # Remove hs directory -# rm -r "${ORACLE_HOME}"/hs -# -# # DO NOT remove ldap directory. -# # Some message files (mesg/*.msb) are needed for ALTER USER ... IDENTIFIED BY -# # TODO: Clean up not needed ldap files -# #rm -r "${ORACLE_HOME}"/ldap -# -# # Remove precomp directory -# rm -r "${ORACLE_HOME}"/precomp -# -# # Remove rdbms/public directory -# rm -r "${ORACLE_HOME}"/rdbms/public -# -# # Remove rdbms/jlib directory -# rm -r "${ORACLE_HOME}"/rdbms/xml -# -# # Remove Spatial -# rm -r "${ORACLE_HOME}"/md -# -# # Remove ord directory -# rm -r "${ORACLE_HOME}"/ord -# -# # Remove ordim directory -# rm -r "${ORACLE_HOME}"/ordim -# -# # Remove Oracle R -# rm -r "${ORACLE_HOME}"/R -# rm "${ORACLE_HOME}"/bin/ORE -# -# # Remove deinstall directory -# rm -r "${ORACLE_HOME}"/deinstall -# -# # Remove Oracle Database Provider for Distributed Relational Database Architecture (DRDA) -# rm -r "${ORACLE_HOME}"/drdaas -# -# # Remove Oracle Universal Installer -# rm -r "${ORACLE_HOME}"/oui -# -# # Remove Perl -# rm -r "${ORACLE_HOME}"/perl -# -# # Remove unnecessary binaries -# rm "${ORACLE_HOME}"/bin/rman # Oracle Recovery Manager -# rm "${ORACLE_HOME}"/bin/wrap # PL/SQL Wrapper -# -# # Remove unnecessary libraries -# rm "${ORACLE_HOME}"/lib/asm* # Oracle Automatic Storage Management -# -# fi; + # Remove components from ORACLE_HOME + if [ "${BUILD_MODE}" == "SLIM" ]; then + + echo "BUILDER: further cleanup for SLIM image" + + # Remove Oracle Text directory + rm -r "${ORACLE_HOME}"/ctx + + # Remove demo directory + rm -r "${ORACLE_HOME}"/demo + + # Remove ODBC samples + rm -r "${ORACLE_HOME}"/odbc + + # Remove TNS samples + rm -r "${ORACLE_HOME}"/network/admin/samples + + # Remove NLS LBuilder + rm -r "${ORACLE_HOME}"/nls/lbuilder + + # Remove hs directory + rm -r "${ORACLE_HOME}"/hs + + # DO NOT remove ldap directory. + # Some message files (mesg/*.msb) are needed for ALTER USER ... IDENTIFIED BY + # TODO: Clean up not needed ldap files + #rm -r "${ORACLE_HOME}"/ldap + + # Remove precomp directory + rm -r "${ORACLE_HOME}"/precomp + + # Remove rdbms/public directory + rm -r "${ORACLE_HOME}"/rdbms/public + + # Remove rdbms/jlib directory + rm -r "${ORACLE_HOME}"/rdbms/xml + + # Remove Spatial + rm -r "${ORACLE_HOME}"/md + + # Remove ord directory + rm -r "${ORACLE_HOME}"/ord + + # Remove Oracle R + rm -r "${ORACLE_HOME}"/R + + # Remove deinstall directory + rm -r "${ORACLE_HOME}"/deinstall + + # Remove Oracle Universal Installer + rm -r "${ORACLE_HOME}"/oui + + # Remove Perl + rm -r "${ORACLE_HOME}"/perl + + # Remove unnecessary binaries + rm "${ORACLE_HOME}"/bin/ORE + rm "${ORACLE_HOME}"/bin/rman # Oracle Recovery Manager + rm "${ORACLE_HOME}"/bin/wrap # PL/SQL Wrapper + + # Remove unnecessary libraries + rm "${ORACLE_HOME}"/lib/asm* # Oracle Automatic Storage Management + rm "${ORACLE_HOME}"/lib/ore.so + + fi; fi; From 6de7a6fa94e213731bb66a41dc9840bb31f7cf80 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 28 Nov 2021 11:01:48 -0700 Subject: [PATCH 157/192] Remove ore.so in 18c Signed-off-by: gvenzl --- ImageDetails.md | 2 ++ install.1840.sh | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ImageDetails.md b/ImageDetails.md index d06df38..81709f4 100644 --- a/ImageDetails.md +++ b/ImageDetails.md @@ -260,6 +260,7 @@ The slim images aims for smallest possible image size with only the Oracle Datab The following binaries have been removed from the `$ORACLE_HOME/bin` directory: +* `$ORACLE_HOME/bin/ORE` (Oracle R Enterprise) * `$ORACLE_HOME/bin/rman` (Oracle Recovery Manager) * `$ORACLE_HOME/bin/wrap` (PL/SQL Wrapper) @@ -268,6 +269,7 @@ The following binaries have been removed from the `$ORACLE_HOME/bin` directory: The following libraries have been removed from the `$ORACLE_HOME/lib` directory: * `$ORACLE_HOME/lib/asm*` (Oracle Automatic Storage Management) +* `$ORACLE_HOME/lib/ore.so` (Oracle R Enterprise) ## 11g XE diff --git a/install.1840.sh b/install.1840.sh index d6b2bbd..c61332e 100755 --- a/install.1840.sh +++ b/install.1840.sh @@ -1065,7 +1065,6 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove Oracle R rm -r "${ORACLE_HOME}"/R - rm "${ORACLE_HOME}"/bin/ORE # Remove deinstall directory rm -r "${ORACLE_HOME}"/deinstall @@ -1080,11 +1079,13 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then rm -r "${ORACLE_HOME}"/perl # Remove unnecessary binaries + rm "${ORACLE_HOME}"/bin/ORE rm "${ORACLE_HOME}"/bin/rman # Oracle Recovery Manager rm "${ORACLE_HOME}"/bin/wrap # PL/SQL Wrapper # Remove unnecessary libraries rm "${ORACLE_HOME}"/lib/asm* # Oracle Automatic Storage Management + rm "${ORACLE_HOME}"/lib/ore.so fi; From 5723e0c37ea016b588779d7a8066ff93ea3e6620 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 28 Nov 2021 11:17:31 -0700 Subject: [PATCH 158/192] Move REDO resize to other resize operations to avoid 'checkpoint incomplete' during setup Signed-off-by: gvenzl --- install.11202.sh | 47 ++++++++++++++++++++++------------------- install.1840.sh | 54 +++++++++++++++++++++++++++--------------------- install.2130.sh | 54 +++++++++++++++++++++++++++--------------------- 3 files changed, 86 insertions(+), 69 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 925e9da..5d036f9 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -192,27 +192,6 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Enable remote HTTP access EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE); - -- Remove original redo logs from fast_recovery_area and create new ones - ALTER DATABASE ADD LOGFILE GROUP 3 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log') SIZE ${REDO_SIZE}m; - ALTER DATABASE ADD LOGFILE GROUP 4 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log') SIZE ${REDO_SIZE}m; - ALTER SYSTEM SWITCH LOGFILE; - ALTER SYSTEM SWITCH LOGFILE; - ALTER SYSTEM CHECKPOINT; - ALTER DATABASE DROP LOGFILE GROUP 1; - ALTER DATABASE DROP LOGFILE GROUP 2; - ALTER DATABASE ADD LOGFILE GROUP 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') SIZE ${REDO_SIZE}m; - ALTER DATABASE ADD LOGFILE GROUP 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') SIZE ${REDO_SIZE}m; - ALTER SYSTEM SWITCH LOGFILE; - ALTER SYSTEM SWITCH LOGFILE; - ALTER SYSTEM CHECKPOINT; - ALTER DATABASE DROP LOGFILE GROUP 3; - ALTER DATABASE DROP LOGFILE GROUP 4; - - -- Remove fast recovery area - ALTER SYSTEM SET DB_RECOVERY_FILE_DEST=''; - ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=1; - HOST rm -r "${ORACLE_BASE}"/fast_recovery_area - -- Setup healthcheck user CREATE USER OPS\$ORACLE IDENTIFIED EXTERNALLY; GRANT CONNECT, SELECT_CATALOG_ROLE TO OPS\$ORACLE; @@ -478,6 +457,32 @@ EOF -- Drop temporary UNDO tablespace DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; + --------------------------------- + -- Shrink REDO log files + --------------------------------- + + -- Remove original redo logs from fast_recovery_area and create new ones + ALTER DATABASE ADD LOGFILE GROUP 3 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log') SIZE ${REDO_SIZE}m; + ALTER DATABASE ADD LOGFILE GROUP 4 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log') SIZE ${REDO_SIZE}m; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT; + ALTER DATABASE DROP LOGFILE GROUP 1; + ALTER DATABASE DROP LOGFILE GROUP 2; + ALTER DATABASE ADD LOGFILE GROUP 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') SIZE ${REDO_SIZE}m; + ALTER DATABASE ADD LOGFILE GROUP 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') SIZE ${REDO_SIZE}m; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT; + ALTER DATABASE DROP LOGFILE GROUP 3; + ALTER DATABASE DROP LOGFILE GROUP 4; + + -- Remove fast recovery area + ALTER SYSTEM SET DB_RECOVERY_FILE_DEST=''; + ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=1; + HOST rm -r "${ORACLE_BASE}"/fast_recovery_area + + exit; EOF diff --git a/install.1840.sh b/install.1840.sh index c61332e..fdb6c74 100755 --- a/install.1840.sh +++ b/install.1840.sh @@ -183,30 +183,6 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Disable common_user_prefix (needed for OS authenticated user) ALTER SYSTEM SET COMMON_USER_PREFIX='' SCOPE=SPFILE; - -- Remove original redo logs from fast_recovery_area and create new ones - ALTER DATABASE ADD LOGFILE GROUP 4 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log') SIZE ${REDO_SIZE}m; - ALTER DATABASE ADD LOGFILE GROUP 5 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo05.log') SIZE ${REDO_SIZE}m; - ALTER DATABASE ADD LOGFILE GROUP 6 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo06.log') SIZE ${REDO_SIZE}m; - ALTER SYSTEM SWITCH LOGFILE; - ALTER SYSTEM SWITCH LOGFILE; - ALTER SYSTEM SWITCH LOGFILE; - ALTER SYSTEM CHECKPOINT; - ALTER DATABASE DROP LOGFILE GROUP 1; - ALTER DATABASE DROP LOGFILE GROUP 2; - ALTER DATABASE DROP LOGFILE GROUP 3; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log - ALTER DATABASE ADD LOGFILE GROUP 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') SIZE ${REDO_SIZE}m REUSE; - ALTER DATABASE ADD LOGFILE GROUP 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') SIZE ${REDO_SIZE}m REUSE; - ALTER SYSTEM SWITCH LOGFILE; - ALTER SYSTEM SWITCH LOGFILE; - ALTER SYSTEM CHECKPOINT; - ALTER DATABASE DROP LOGFILE GROUP 4; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log - ALTER DATABASE DROP LOGFILE GROUP 5; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo05.log - ALTER DATABASE DROP LOGFILE GROUP 6; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo06.log - -- Disable controlfile splitbrain check -- Like with every underscore parameter, DO NOT SET THIS PARAMETER EVER UNLESS YOU KNOW WHAT THE HECK YOU ARE DOING! ALTER SYSTEM SET "_CONTROLFILE_SPLIT_BRAIN_CHECK"=FALSE; @@ -803,6 +779,36 @@ EOF -- Drop temporary UNDO tablespace DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; + --------------------------------- + -- Shrink REDO log files + --------------------------------- + + ALTER SESSION SET CONTAINER=CDB\$ROOT; + + -- Remove original redo logs and create new ones + ALTER DATABASE ADD LOGFILE GROUP 4 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log') SIZE ${REDO_SIZE}m; + ALTER DATABASE ADD LOGFILE GROUP 5 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo05.log') SIZE ${REDO_SIZE}m; + ALTER DATABASE ADD LOGFILE GROUP 6 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo06.log') SIZE ${REDO_SIZE}m; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT; + ALTER DATABASE DROP LOGFILE GROUP 1; + ALTER DATABASE DROP LOGFILE GROUP 2; + ALTER DATABASE DROP LOGFILE GROUP 3; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log + ALTER DATABASE ADD LOGFILE GROUP 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') SIZE ${REDO_SIZE}m REUSE; + ALTER DATABASE ADD LOGFILE GROUP 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') SIZE ${REDO_SIZE}m REUSE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT; + ALTER DATABASE DROP LOGFILE GROUP 4; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log + ALTER DATABASE DROP LOGFILE GROUP 5; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo05.log + ALTER DATABASE DROP LOGFILE GROUP 6; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo06.log + exit; EOF diff --git a/install.2130.sh b/install.2130.sh index 83233b2..cb3f26c 100755 --- a/install.2130.sh +++ b/install.2130.sh @@ -190,30 +190,6 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF -- Disable common_user_prefix (needed for OS authenticated user) ALTER SYSTEM SET COMMON_USER_PREFIX='' SCOPE=SPFILE; - -- Remove original redo logs from fast_recovery_area and create new ones - ALTER DATABASE ADD LOGFILE GROUP 4 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log') SIZE ${REDO_SIZE}m; - ALTER DATABASE ADD LOGFILE GROUP 5 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo05.log') SIZE ${REDO_SIZE}m; - ALTER DATABASE ADD LOGFILE GROUP 6 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo06.log') SIZE ${REDO_SIZE}m; - ALTER SYSTEM SWITCH LOGFILE; - ALTER SYSTEM SWITCH LOGFILE; - ALTER SYSTEM SWITCH LOGFILE; - ALTER SYSTEM CHECKPOINT; - ALTER DATABASE DROP LOGFILE GROUP 1; - ALTER DATABASE DROP LOGFILE GROUP 2; - ALTER DATABASE DROP LOGFILE GROUP 3; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log - ALTER DATABASE ADD LOGFILE GROUP 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') SIZE ${REDO_SIZE}m REUSE; - ALTER DATABASE ADD LOGFILE GROUP 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') SIZE ${REDO_SIZE}m REUSE; - ALTER SYSTEM SWITCH LOGFILE; - ALTER SYSTEM SWITCH LOGFILE; - ALTER SYSTEM CHECKPOINT; - ALTER DATABASE DROP LOGFILE GROUP 4; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log - ALTER DATABASE DROP LOGFILE GROUP 5; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo05.log - ALTER DATABASE DROP LOGFILE GROUP 6; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo06.log - -- Remove local_listener entry (using default 1521) ALTER SYSTEM SET LOCAL_LISTENER=''; @@ -1772,6 +1748,36 @@ EOF -- Drop temporary UNDO tablespace DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES; + --------------------------------- + -- Shrink REDO log files + --------------------------------- + + ALTER SESSION SET CONTAINER=CDB\$ROOT; + + -- Remove original redo logs and create new ones + ALTER DATABASE ADD LOGFILE GROUP 4 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log') SIZE ${REDO_SIZE}m; + ALTER DATABASE ADD LOGFILE GROUP 5 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo05.log') SIZE ${REDO_SIZE}m; + ALTER DATABASE ADD LOGFILE GROUP 6 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo06.log') SIZE ${REDO_SIZE}m; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT; + ALTER DATABASE DROP LOGFILE GROUP 1; + ALTER DATABASE DROP LOGFILE GROUP 2; + ALTER DATABASE DROP LOGFILE GROUP 3; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log + ALTER DATABASE ADD LOGFILE GROUP 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') SIZE ${REDO_SIZE}m REUSE; + ALTER DATABASE ADD LOGFILE GROUP 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') SIZE ${REDO_SIZE}m REUSE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT; + ALTER DATABASE DROP LOGFILE GROUP 4; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log + ALTER DATABASE DROP LOGFILE GROUP 5; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo05.log + ALTER DATABASE DROP LOGFILE GROUP 6; + HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo06.log + exit; EOF From 4971ea933671e8a84bc871f81c04d73671b68e69 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 28 Nov 2021 20:11:41 -0700 Subject: [PATCH 159/192] Resize REDO logs at end to avoid 'checkpoint incomplete' during setup Signed-off-by: gvenzl --- install.11202.sh | 53 ++++++++++++++++++++++++++++++++---------------- install.1840.sh | 12 +++++------ install.2130.sh | 12 +++++------ 3 files changed, 45 insertions(+), 32 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 5d036f9..1f81eb1 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -32,9 +32,7 @@ echo "BUILDER: BUILD_MODE=${BUILD_MODE}" # Set data file sizes SYSTEM_SIZE=353 SYSAUX_SIZE=610 -if [ "${BUILD_MODE}" == "FULL" ]; then - REDO_SIZE=50 -elif [ "${BUILD_MODE}" == "REGULAR" ]; then +if [ "${BUILD_MODE}" == "REGULAR" ]; then REDO_SIZE=20 USERS_SIZE=10 elif [ "${BUILD_MODE}" == "SLIM" ]; then @@ -196,14 +194,34 @@ su -p oracle -c "sqlplus -s / as sysdba" << EOF CREATE USER OPS\$ORACLE IDENTIFIED EXTERNALLY; GRANT CONNECT, SELECT_CATALOG_ROLE TO OPS\$ORACLE; - exit; -EOF - -# Non-managed (OMF) redo logs aren't deleted automatically (REDO GROUP 3 and 4 above) -# Need to be deleted manually + -- Remove original redo logs from fast_recovery_area and create new ones + ALTER DATABASE ADD LOGFILE GROUP 3 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log') SIZE 50m; + ALTER DATABASE ADD LOGFILE GROUP 4 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log') SIZE 50m; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT; + ALTER DATABASE DROP LOGFILE GROUP 1; + ALTER DATABASE DROP LOGFILE GROUP 2; + ALTER DATABASE ADD LOGFILE GROUP 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') SIZE 50m; + ALTER DATABASE ADD LOGFILE GROUP 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') SIZE 50m; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM SWITCH LOGFILE; + ALTER SYSTEM CHECKPOINT; + ALTER DATABASE DROP LOGFILE GROUP 3; + ALTER DATABASE DROP LOGFILE GROUP 4; + + -- Remove fast recovery area + ALTER SYSTEM SET DB_RECOVERY_FILE_DEST=''; + ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=1; + HOST rm -r "${ORACLE_BASE}"/fast_recovery_area + + -- Non-managed (OMF) redo logs aren't deleted automatically (REDO GROUP 3 and 4 above) + -- Need to be deleted manually + HOST rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo03.log + HOST rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo04.log -rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo03.log -rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo04.log + exit; +EOF ################################### ######## FULL INSTALL DONE ######## @@ -469,24 +487,23 @@ EOF ALTER SYSTEM CHECKPOINT; ALTER DATABASE DROP LOGFILE GROUP 1; ALTER DATABASE DROP LOGFILE GROUP 2; - ALTER DATABASE ADD LOGFILE GROUP 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') SIZE ${REDO_SIZE}m; - ALTER DATABASE ADD LOGFILE GROUP 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') SIZE ${REDO_SIZE}m; + ALTER DATABASE ADD LOGFILE GROUP 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') SIZE ${REDO_SIZE}m REUSE; + ALTER DATABASE ADD LOGFILE GROUP 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') SIZE ${REDO_SIZE}m REUSE; ALTER SYSTEM SWITCH LOGFILE; ALTER SYSTEM SWITCH LOGFILE; ALTER SYSTEM CHECKPOINT; ALTER DATABASE DROP LOGFILE GROUP 3; ALTER DATABASE DROP LOGFILE GROUP 4; - -- Remove fast recovery area - ALTER SYSTEM SET DB_RECOVERY_FILE_DEST=''; - ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=1; - HOST rm -r "${ORACLE_BASE}"/fast_recovery_area - + -- Non-managed (OMF) redo logs aren't deleted automatically (REDO GROUP 3 and 4 above) + -- Need to be deleted manually + HOST rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo03.log + HOST rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo04.log exit; EOF -# create or replace directory XMLDIR as '${ORACLE_HOME}/rdbms/xml'; + #TODO: create or replace directory XMLDIR as '${ORACLE_HOME}/rdbms/xml'; fi; diff --git a/install.1840.sh b/install.1840.sh index fdb6c74..ce498a9 100755 --- a/install.1840.sh +++ b/install.1840.sh @@ -34,9 +34,7 @@ CDB_SYSAUX_SIZE=480 PDB_SYSAUX_SIZE=342 CDB_SYSTEM_SIZE=840 PDB_SYSTEM_SIZE=255 -if [ "${BUILD_MODE}" == "FULL" ]; then - REDO_SIZE=50 -elif [ "${BUILD_MODE}" == "REGULAR" ]; then +if [ "${BUILD_MODE}" == "REGULAR" ]; then REDO_SIZE=20 USERS_SIZE=10 # CDB_SYSAUX_SIZE=464 @@ -796,18 +794,18 @@ EOF ALTER DATABASE DROP LOGFILE GROUP 1; ALTER DATABASE DROP LOGFILE GROUP 2; ALTER DATABASE DROP LOGFILE GROUP 3; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log + HOST rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo03.log ALTER DATABASE ADD LOGFILE GROUP 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') SIZE ${REDO_SIZE}m REUSE; ALTER DATABASE ADD LOGFILE GROUP 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') SIZE ${REDO_SIZE}m REUSE; ALTER SYSTEM SWITCH LOGFILE; ALTER SYSTEM SWITCH LOGFILE; ALTER SYSTEM CHECKPOINT; ALTER DATABASE DROP LOGFILE GROUP 4; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log + HOST rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo04.log ALTER DATABASE DROP LOGFILE GROUP 5; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo05.log + HOST rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo05.log ALTER DATABASE DROP LOGFILE GROUP 6; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo06.log + HOST rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo06.log exit; EOF diff --git a/install.2130.sh b/install.2130.sh index cb3f26c..0effa33 100755 --- a/install.2130.sh +++ b/install.2130.sh @@ -34,9 +34,7 @@ CDB_SYSAUX_SIZE=560 PDB_SYSAUX_SIZE=330 CDB_SYSTEM_SIZE=1330 PDB_SYSTEM_SIZE=272 -if [ "${BUILD_MODE}" == "FULL" ]; then - REDO_SIZE=50 -elif [ "${BUILD_MODE}" == "REGULAR" ]; then +if [ "${BUILD_MODE}" == "REGULAR" ]; then REDO_SIZE=20 USERS_SIZE=10 elif [ "${BUILD_MODE}" == "SLIM" ]; then @@ -1765,18 +1763,18 @@ EOF ALTER DATABASE DROP LOGFILE GROUP 1; ALTER DATABASE DROP LOGFILE GROUP 2; ALTER DATABASE DROP LOGFILE GROUP 3; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo03.log + HOST rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo03.log ALTER DATABASE ADD LOGFILE GROUP 1 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo01.log') SIZE ${REDO_SIZE}m REUSE; ALTER DATABASE ADD LOGFILE GROUP 2 ('${ORACLE_BASE}/oradata/${ORACLE_SID}/redo02.log') SIZE ${REDO_SIZE}m REUSE; ALTER SYSTEM SWITCH LOGFILE; ALTER SYSTEM SWITCH LOGFILE; ALTER SYSTEM CHECKPOINT; ALTER DATABASE DROP LOGFILE GROUP 4; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo04.log + HOST rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo04.log ALTER DATABASE DROP LOGFILE GROUP 5; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo05.log + HOST rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo05.log ALTER DATABASE DROP LOGFILE GROUP 6; - HOST rm ${ORACLE_BASE}/oradata/${ORACLE_SID}/redo06.log + HOST rm "${ORACLE_BASE}"/oradata/"${ORACLE_SID}"/redo06.log exit; EOF From fb682cd45f4047a4159768a13b1e281179415387 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 28 Nov 2021 20:19:55 -0700 Subject: [PATCH 160/192] Add Sqitch to users as per #46 Signed-off-by: gvenzl --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8d230ae..cd8b1bf 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,7 @@ We are proud of the following users of these images: * [Quarkus](https://quarkus.io/) [[`9a63a58`](https://github.com/quarkusio/quarkus/commit/9a63a58a6740fa1d5e3cc7912f89522dd78cee85)] * [Rucio by CERN](https://rucio.cern.ch/) [[`80dffbb`](https://github.com/rucio/rucio/commit/80dffbb09f58a9f30d2a9a4c3297e8ed22a78963)] * [SchemaCrawler](https://www.schemacrawler.com/) [[`08d9b87`](https://github.com/schemacrawler/SchemaCrawler/commit/08d9b87c280bf23e405bea6265abf01448fa71d3)] +* [Sqitch](https://sqitch.org/) [[`8b38027`](https://github.com/sqitchers/sqitch/commit/8b38027ba2b91ef7fbe59a35a5332d17f0beadb0)] * [Testcontainers](https://www.testcontainers.org/) [[`99b91b8`](https://github.com/testcontainers/testcontainers-java/commit/99b91b89b6ee3f8f0e9545e86d9f0744b301db30)] * [Upscheme](https://upscheme.org/) [[`954650a`](https://github.com/aimeos/upscheme/commit/954650afc92273f73bc1276aa0bd2f4253987c4f)] * [utPLSQL](http://utplsql.org/) [[`8080604`](https://github.com/utPLSQL/utPLSQL/commit/8080604df0256ab2202c9f64bb67671d55c63710#diff-6ac3f79fc25d95cd1e3d51da53a4b21b939437392578a35ae8cd6d5366ca5485)] From 013bfa5d79719ade62c9395ff22f36a26626f11e Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 28 Nov 2021 20:32:54 -0700 Subject: [PATCH 161/192] 21-slim GA ready Signed-off-by: gvenzl --- README.md | 3 ++- tests/build_Dockerfile_2130.sh | 4 ++++ tests/tag_images_1840.sh | 2 -- tests/tag_images_2130.sh | 4 ++-- tests/test_container_1840.sh | 1 - tests/test_container_2130.sh | 14 +++++++------- tests/upload_images.sh | 10 ++++++++-- tests/upload_images_artifactory.sh | 10 ++++++++-- 8 files changed, 31 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index cd8b1bf..a8e5d32 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,10 @@ Oracle Database Express Edition Container / Docker images. # Supported tags and respective `Dockerfile` links * [`21.3.0`, `21`, `latest`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.2130) +* [`21.3.0-slim`, `21-slim`, `slim`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.2130) * [`21.3.0-full`, `21-full`, `full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.2130) * [`18.4.0`, `18`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) -* [`18.4.0-slim`, `18-slim`, `slim`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) +* [`18.4.0-slim`, `18-slim`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) * [`18.4.0-full`, `18-full`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.1840) * [`11.2.0.2`, `11`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.11202) * [`11.2.0.2-slim`, `11-slim`](https://github.com/gvenzl/oci-oracle-xe/blob/main/Dockerfile.11202) diff --git a/tests/build_Dockerfile_2130.sh b/tests/build_Dockerfile_2130.sh index 20dad27..cf6f6eb 100755 --- a/tests/build_Dockerfile_2130.sh +++ b/tests/build_Dockerfile_2130.sh @@ -34,4 +34,8 @@ echo "TEST: Building 21.3.0 REGULAR image" ./buildContainerImage.sh -v 21.3.0 echo "DONE: Building 21.3.0 REGULAR image" +echo "TEST: Building 21.3.0 SLIM image" +./buildContainerImage.sh -v 21.3.0 -s +echo "DONE: Building 21.3.0 SLIM image" + cd "${CURRENT_DIR}" diff --git a/tests/tag_images_1840.sh b/tests/tag_images_1840.sh index d4f2b0e..b56bf8e 100755 --- a/tests/tag_images_1840.sh +++ b/tests/tag_images_1840.sh @@ -26,5 +26,3 @@ set -Eeuo pipefail podman tag gvenzl/oracle-xe:18.4.0-full gvenzl/oracle-xe:18-full podman tag gvenzl/oracle-xe:18.4.0 gvenzl/oracle-xe:18 podman tag gvenzl/oracle-xe:18.4.0-slim gvenzl/oracle-xe:18-slim - -podman tag gvenzl/oracle-xe:18.4.0-slim gvenzl/oracle-xe:slim diff --git a/tests/tag_images_2130.sh b/tests/tag_images_2130.sh index a7d006d..f096166 100755 --- a/tests/tag_images_2130.sh +++ b/tests/tag_images_2130.sh @@ -28,5 +28,5 @@ podman tag gvenzl/oracle-xe:21.3.0-full gvenzl/oracle-xe:full podman tag gvenzl/oracle-xe:21.3.0 gvenzl/oracle-xe:21 -# podman tag gvenzl/oracle-xe:21.3.0-slim gvenzl/oracle-xe:21-slim -# podman tag gvenzl/oracle-xe:21.3.0-slim gvenzl/oracle-xe:slim +podman tag gvenzl/oracle-xe:21.3.0-slim gvenzl/oracle-xe:21-slim +podman tag gvenzl/oracle-xe:21.3.0-slim gvenzl/oracle-xe:slim diff --git a/tests/test_container_1840.sh b/tests/test_container_1840.sh index 62a62b3..afbcfb7 100755 --- a/tests/test_container_1840.sh +++ b/tests/test_container_1840.sh @@ -36,7 +36,6 @@ runContainerTest "18 REGULAR image" "18" "gvenzl/oracle-xe:18" runContainerTest "18.4.0 SLIM image" "1840-slim" "gvenzl/oracle-xe:18.4.0-slim" runContainerTest "18 SLIM image" "18-slim" "gvenzl/oracle-xe:18-slim" -runContainerTest "SLIM image" "slim" "gvenzl/oracle-xe:slim" ################################# diff --git a/tests/test_container_2130.sh b/tests/test_container_2130.sh index 1bd6047..9740854 100755 --- a/tests/test_container_2130.sh +++ b/tests/test_container_2130.sh @@ -36,9 +36,9 @@ runContainerTest "21.3.0 REGULAR image" "2130" "gvenzl/oracle-xe:21.3.0" runContainerTest "21 REGULAR image" "21" "gvenzl/oracle-xe:21" runContainerTest "REGULAR image" "latest" "gvenzl/oracle-xe" -#runContainerTest "18.4.0 SLIM image" "1840-slim" "gvenzl/oracle-xe:18.4.0-slim" -#runContainerTest "18 SLIM image" "18-slim" "gvenzl/oracle-xe:18-slim" -#runContainerTest "SLIM image" "slim" "gvenzl/oracle-xe:slim" +runContainerTest "21.3.0 SLIM image" "2130-slim" "gvenzl/oracle-xe:21.3.0-slim" +runContainerTest "21 SLIM image" "21-slim" "gvenzl/oracle-xe:21-slim" +runContainerTest "SLIM image" "slim" "gvenzl/oracle-xe:slim" ################################# @@ -104,7 +104,7 @@ TEST_NAME="21.3.0 ORACLE_RANDOM_PASSWORD" EXPECTED_RESULT="OK" # Spin up container -runContainerTest "${TEST_NAME}" "${CONTAINER_NAME}" "gvenzl/oracle-xe:21.3.0-full" +runContainerTest "${TEST_NAME}" "${CONTAINER_NAME}" "gvenzl/oracle-xe:21.3.0" # Let's get the password rand_pwd=$(podman logs ${CONTAINER_NAME} | grep "ORACLE PASSWORD FOR SYS AND SYSTEM:" | awk '{ print $7 }') @@ -155,7 +155,7 @@ APP_USER="test_app_user" APP_USER_PASSWORD="MyAppUserPassword" # Spin up container -runContainerTest "${TEST_NAME}" "${CONTAINER_NAME}" "gvenzl/oracle-xe:21.3.0-full" +runContainerTest "${TEST_NAME}" "${CONTAINER_NAME}" "gvenzl/oracle-xe:21.3.0-slim" # Test the random password, if it works we will get "OK" back from the SQL statement result=$(podman exec -i ${CONTAINER_NAME} sqlplus -s "${APP_USER}"/"${APP_USER_PASSWORD}"@//localhost/XEPDB1 < Date: Sun, 28 Nov 2021 20:40:57 -0700 Subject: [PATCH 162/192] Put Docker.io login as first step Signed-off-by: gvenzl --- tests/upload_images.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/upload_images.sh b/tests/upload_images.sh index 5638bcd..51dfe2f 100755 --- a/tests/upload_images.sh +++ b/tests/upload_images.sh @@ -22,6 +22,11 @@ # Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ set -Eeuo pipefail +# Log into Docker Hub before anything else so that one does not have to +# wait for the backup to be finished) +echo "Login to Docker Hub:" +podman login + # Ensure all tags are in place ./all_tag_images.sh @@ -34,9 +39,6 @@ if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]; then fi; # Upload images -echo "Login to Docker Hub:" -podman login - # Upload latest echo "Upload latest" podman push localhost/gvenzl/oracle-xe:latest docker.io/gvenzl/oracle-xe:latest From e1cc055ed58d39957cf11b9599a1c84715244f34 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 28 Nov 2021 22:46:50 -0700 Subject: [PATCH 163/192] Remove Examples folder from main ReadMe Signed-off-by: gvenzl --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index a8e5d32..abe7f03 100644 --- a/README.md +++ b/README.md @@ -17,10 +17,6 @@ Oracle Database Express Edition Container / Docker images. # Quick Start -## Examples -[Examples Folder](./examples) - - Run a new database container (data is removed when the container is removed, but kept throughout container restarts): ```shell From 944bf0b70c86e85c7024690dfa69a852dc14e64c Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 28 Nov 2021 22:47:43 -0700 Subject: [PATCH 164/192] Assign variable values before input check Signed-off-by: gvenzl --- examples/dkr-create-oracle-xe-server | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/dkr-create-oracle-xe-server b/examples/dkr-create-oracle-xe-server index c3c71ec..7906af3 100755 --- a/examples/dkr-create-oracle-xe-server +++ b/examples/dkr-create-oracle-xe-server @@ -6,6 +6,15 @@ if [ ! -f `which pwgen` ]; then exit 1 fi +CMG_COMMAND=docker +DKR_IMAGE="gvenzl/oracle-xe" +DKR_HOST_PORT=$1 +DKR_CNT_NAME=$2 +DKR_DATA_PATH=dbcxe-$DKR_CNT_NAME-dvol +DKR_ORA_USER_APP=DAAPPUSER +DKR_ORA_PW=`pwgen -1 16 | tr -d '\n'` +DKR_ORA_PW_APP=`pwgen -1 16 | tr -d '\n'` + if [ -z "$DKR_HOST_PORT" ]; then echo "You must provide docker host port" exit 1 @@ -18,15 +27,6 @@ if [ -z "$DKR_CNT_NAME" ]; then fi -CMG_COMMAND=docker -DKR_IMAGE="gvenzl/oracle-xe" -DKR_HOST_PORT=$1 -DKR_CNT_NAME=$2 -DKR_DATA_PATH=dbcxe-$DKR_CNT_NAME-dvol -DKR_ORA_USER_APP=DAAPPUSER -DKR_ORA_PW=`pwgen -1 16 | tr -d '\n'` -DKR_ORA_PW_APP=`pwgen -1 16 | tr -d '\n'` - echo "Docker Image ............................ :'$DKR_IMAGE'" echo "Database (SYS AND SYSTEM) User Password . :'$DKR_ORA_PW'" echo "Database Application User ............... :'$DKR_ORA_USER_APP'" From a0ace35aa3b7328b54e344f3465044047717e385 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 28 Nov 2021 22:52:37 -0700 Subject: [PATCH 165/192] Fix example script 'pwgen' check Signed-off-by: gvenzl --- examples/dkr-create-oracle-xe-server | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/dkr-create-oracle-xe-server b/examples/dkr-create-oracle-xe-server index 7906af3..03c6266 100755 --- a/examples/dkr-create-oracle-xe-server +++ b/examples/dkr-create-oracle-xe-server @@ -1,8 +1,8 @@ #!/usr/bin/env bash # Variables used for the script -if [ ! -f `which pwgen` ]; then - echo "You must have pwgen on your machine to run this script" +if ! command -v pwgen &> /dev/null; then + echo "You must have pwgen installed on your machine to run this script." exit 1 fi @@ -12,8 +12,8 @@ DKR_HOST_PORT=$1 DKR_CNT_NAME=$2 DKR_DATA_PATH=dbcxe-$DKR_CNT_NAME-dvol DKR_ORA_USER_APP=DAAPPUSER -DKR_ORA_PW=`pwgen -1 16 | tr -d '\n'` -DKR_ORA_PW_APP=`pwgen -1 16 | tr -d '\n'` +DKR_ORA_PW=$(pwgen -1 16 | tr -d '\n') +DKR_ORA_PW_APP=$(pwgen -1 16 | tr -d '\n') if [ -z "$DKR_HOST_PORT" ]; then echo "You must provide docker host port" From 8e0e7f90c5924185dafd6edd61f33f27d2b145be Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 4 Dec 2021 11:22:34 -0700 Subject: [PATCH 166/192] Introduce fix for #64 (Increase SGA_TARGET on high CPU count) Signed-off-by: gvenzl --- container-entrypoint.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/container-entrypoint.sh b/container-entrypoint.sh index b692e73..a00f3ba 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -138,6 +138,26 @@ function create_dbconfig() { rm "${ORACLE_BASE}"/"${ORACLE_SID}".zip fi; + # If the host has a large number of CPUs (>= 16), SGA_TARGET needs to be increased (#64) + # Set SGA_TARGET to 1.5g which should be enough for at least 64 CPU cores + if [ "$(nproc --all)" -ge 16 ]; then + echo "CONTAINER: machine has high CPU count: $(nproc --all)" + echo "CONTAINER: increasing SGA_TARGET to 1.5GB." + sqlplus -s / as sysdba < Date: Sat, 11 Dec 2021 16:56:24 -0700 Subject: [PATCH 167/192] Remove Replay Upgrade feature Signed-off-by: gvenzl --- ImageDetails.md | 1 + install.2130.sh | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/ImageDetails.md b/ImageDetails.md index 81709f4..9b5d903 100644 --- a/ImageDetails.md +++ b/ImageDetails.md @@ -53,6 +53,7 @@ The regular image strives to balance between the functionality required by most * The `Oracle Process Manager and Notification` directory has been removed (`$ORACLE_HOME/opmn`) * The `Oracle Machine Learning 4 Python` directory has been removed (`$ORACLE_HOME/oml4py`) * `Python` has been removed (`$ORACLE_HOME/python`) +* Replay Upgrade has been removed (`pdb_sync$` table cleaned up in `CDB$ROOT`) ##### Database binaries diff --git a/install.2130.sh b/install.2130.sh index 0effa33..b109931 100755 --- a/install.2130.sh +++ b/install.2130.sh @@ -1560,12 +1560,38 @@ EOF fi; - ##################### - # Shrink data files # - ##################### + ####################################################### + ################# Shrink data files ################### + ####################################################### + + ####################################################### + # Clean additional DB components to shrink data files # + ####################################################### + + su -p oracle -c "sqlplus -s / as sysdba" < Date: Sat, 11 Dec 2021 17:00:14 -0700 Subject: [PATCH 168/192] Clean up METASTYLESHEET LOBs Signed-off-by: gvenzl --- install.2130.sh | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/install.2130.sh b/install.2130.sh index b109931..cc2ab4f 100755 --- a/install.2130.sh +++ b/install.2130.sh @@ -1573,14 +1573,24 @@ EOF -- Exit on any error WHENEVER SQLERROR EXIT SQL.SQLCODE + -- Create temporary tablespace to move objects + CREATE TABLESPACE builder_temp DATAFILE '/opt/oracle/oradata/XE/builder_temp.dbf' SIZE 100m; + + -- Clean up METASTYLESHEET LOBs sitting at the end of the SYSTEM tablespace + ALTER TABLE metastylesheet MOVE LOB(stylesheet) STORE AS (TABLESPACE BUILDER_TEMP); + ALTER TABLE metastylesheet MOVE LOB(stylesheet) STORE AS (TABLESPACE SYSTEM); + -- Clean pdb_sync\$ table in CDB\$ROOT -- This is part of the REPLAY UPGRADE PDB feature that is not needed in REGULAR and SLIM - TRUNCATE TABLE PDB_SYNC\$; + TRUNCATE TABLE pdb_sync\$; -- Reinsert initial row to reinitialize replay counter, as found in \$ORACLE_HOME/rdbms/admin/dcore.bsq INSERT INTO pdb_sync\$(scnwrp, scnbas, ctime, name, opcode, flags, replay#) VALUES (0, 0, sysdate, 'PDB\$LASTREPLAY', -1, 0, 0); - COMMIT; + COMMIT; + + -- Drop temporary tablespace + DROP TABLESPACE builder_temp INCLUDING CONTENTS AND DATAFILES; exit; From 658c1a7b0869f5bbab2fcb04e405f37a99b5ed33 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 11 Dec 2021 17:03:30 -0700 Subject: [PATCH 169/192] Rebuild pdbsync indexes Signed-off-by: gvenzl --- install.2130.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install.2130.sh b/install.2130.sh index cc2ab4f..1beb259 100755 --- a/install.2130.sh +++ b/install.2130.sh @@ -1583,6 +1583,10 @@ EOF -- Clean pdb_sync\$ table in CDB\$ROOT -- This is part of the REPLAY UPGRADE PDB feature that is not needed in REGULAR and SLIM TRUNCATE TABLE pdb_sync\$; + ALTER INDEX i_pdbsync4 REBUILD; + ALTER INDEX i_pdbsync3 REBUILD; + ALTER INDEX i_pdbsync2 REBUILD; + ALTER INDEX i_pdbsync1 REBUILD; -- Reinsert initial row to reinitialize replay counter, as found in \$ORACLE_HOME/rdbms/admin/dcore.bsq INSERT INTO pdb_sync\$(scnwrp, scnbas, ctime, name, opcode, flags, replay#) From ee40a948e027871bcebbd2a26b2fabf9e53bed29 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 11 Dec 2021 17:04:31 -0700 Subject: [PATCH 170/192] Clean up fed blocks Signed-off-by: gvenzl --- install.2130.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/install.2130.sh b/install.2130.sh index 1beb259..729a880 100755 --- a/install.2130.sh +++ b/install.2130.sh @@ -1593,6 +1593,12 @@ EOF VALUES (0, 0, sysdate, 'PDB\$LASTREPLAY', -1, 0, 0); COMMIT; + -- Clean up fed\$binds blocks at the end of SYSTEM tablespace + ALTER TABLE fed\$binds MOVE TABLESPACE BUILDER_TEMP; + ALTER INDEX i_fed_apps\$ REBUILD; + ALTER INDEX i_fed_binds\$ REBUILD; + ALTER TABLE fed\$binds MOVE TABLESPACE SYSTEM; + -- Drop temporary tablespace DROP TABLESPACE builder_temp INCLUDING CONTENTS AND DATAFILES; From 33a22ed5745b85cce37c801158e1623598c74c58 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 11 Dec 2021 21:28:31 -0700 Subject: [PATCH 171/192] Shrink CDB SYSTEM tablespace datafile Signed-off-by: gvenzl --- install.2130.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.2130.sh b/install.2130.sh index 729a880..5a0d68e 100755 --- a/install.2130.sh +++ b/install.2130.sh @@ -32,7 +32,7 @@ echo "BUILDER: BUILD_MODE=${BUILD_MODE}" # Set data file sizes CDB_SYSAUX_SIZE=560 PDB_SYSAUX_SIZE=330 -CDB_SYSTEM_SIZE=1330 +CDB_SYSTEM_SIZE=875 PDB_SYSTEM_SIZE=272 if [ "${BUILD_MODE}" == "REGULAR" ]; then REDO_SIZE=20 From 166bab50334c65d8841ddb3325789d0360412b0a Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 12 Dec 2021 12:58:41 -0700 Subject: [PATCH 172/192] List Ruby packages users (#66) Signed-off-by: gvenzl --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index abe7f03..2035e01 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,8 @@ We are proud of the following users of these images: * [Liquibase](https://www.liquibase.org/) [[`c6a31c0`](https://github.com/liquibase/liquibase-test-harness/commit/c6a31c0c54c1aa798839a2ef55ef6eb2363ea48f)] * [Micronaut Data](https://github.com/micronaut-projects/micronaut-data) [[`ddf11c1`](https://github.com/micronaut-projects/micronaut-data/commit/ddf11c1e8a7a27a1f6765cc5e1c1c3d3f74b475f)] * [Quarkus](https://quarkus.io/) [[`9a63a58`](https://github.com/quarkusio/quarkus/commit/9a63a58a6740fa1d5e3cc7912f89522dd78cee85)] +* [Ruby API for Oracle PL/SQL](https://github.com/rsim/ruby-plsql) [[`63baad0`](https://github.com/rsim/ruby-plsql/commit/63baad0b6f8ea0caa4b787f85ffae349dede480a)] +* [Ruby on Rails ActiveRecord adapter](https://github.com/rsim/oracle-enhanced) [[`afd7a93`](https://github.com/rsim/oracle-enhanced/commit/afd7a93470d1444e1462d0fb4f3d965ef2698384)] * [Rucio by CERN](https://rucio.cern.ch/) [[`80dffbb`](https://github.com/rucio/rucio/commit/80dffbb09f58a9f30d2a9a4c3297e8ed22a78963)] * [SchemaCrawler](https://www.schemacrawler.com/) [[`08d9b87`](https://github.com/schemacrawler/SchemaCrawler/commit/08d9b87c280bf23e405bea6265abf01448fa71d3)] * [Sqitch](https://sqitch.org/) [[`8b38027`](https://github.com/sqitchers/sqitch/commit/8b38027ba2b91ef7fbe59a35a5332d17f0beadb0)] From 6d8acd3756bd5fc4398e3267cee0170bbd393233 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 18 Dec 2021 12:46:11 -0700 Subject: [PATCH 173/192] Shrink 21c CDB TEMP datafile Signed-off-by: gvenzl --- install.2130.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install.2130.sh b/install.2130.sh index 5a0d68e..232fdf4 100755 --- a/install.2130.sh +++ b/install.2130.sh @@ -37,10 +37,12 @@ PDB_SYSTEM_SIZE=272 if [ "${BUILD_MODE}" == "REGULAR" ]; then REDO_SIZE=20 USERS_SIZE=10 + CDB_TEMP_SIZE=10 elif [ "${BUILD_MODE}" == "SLIM" ]; then REDO_SIZE=10 USERS_SIZE=2 CDB_SYSAUX_SIZE=560 + CDB_TEMP_SIZE=2 fi; echo "BUILDER: Installing OS dependencies" @@ -1672,6 +1674,7 @@ EOF -------------------------- ALTER TABLESPACE TEMP SHRINK SPACE; + ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp01.dbf' RESIZE ${CDB_TEMP_SIZE}M; ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp01.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; From a37101395fdb31a0c7ffe35a45bf0a4aea7eeb90 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 18 Dec 2021 15:50:33 -0700 Subject: [PATCH 174/192] Shrink 18c TEMP datafile Signed-off-by: gvenzl --- install.1840.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install.1840.sh b/install.1840.sh index ce498a9..dda7296 100755 --- a/install.1840.sh +++ b/install.1840.sh @@ -37,10 +37,12 @@ PDB_SYSTEM_SIZE=255 if [ "${BUILD_MODE}" == "REGULAR" ]; then REDO_SIZE=20 USERS_SIZE=10 + CDB_TEMP_SIZE=10 # CDB_SYSAUX_SIZE=464 elif [ "${BUILD_MODE}" == "SLIM" ]; then REDO_SIZE=10 USERS_SIZE=2 + CDB_TEMP_SIZE=2 # CDB_SYSAUX_SIZE=464 fi; @@ -657,6 +659,7 @@ EOF -------------------------- ALTER TABLESPACE TEMP SHRINK SPACE; + ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp01.dbf' RESIZE ${CDB_TEMP_SIZE}M; ALTER DATABASE TEMPFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/temp01.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; From 88ac52fbf9b80defbd2b201090d5d8af611a79cc Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 18 Dec 2021 21:34:56 -0700 Subject: [PATCH 175/192] Remove OLAP library Signed-off-by: gvenzl --- ImageDetails.md | 2 ++ install.1840.sh | 3 ++- install.2130.sh | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ImageDetails.md b/ImageDetails.md index 9b5d903..89c065f 100644 --- a/ImageDetails.md +++ b/ImageDetails.md @@ -137,6 +137,7 @@ The following binaries have been removed from the `$ORACLE_HOME/bin` directory: The following libraries have been removed from the `$ORACLE_HOME/lib` directory: * `$ORACLE_HOME/lib/asm*` (Oracle Automatic Storage Management) +* `$ORACLE_HOME/lib/libolapapi.so` (Oracle OLAP API) * `$ORACLE_HOME/lib/ore.so` (Oracle R Enterprise) ## 18c XE @@ -211,6 +212,7 @@ The following binaries have been replaced by shell scripts with static output: The following libraries have been removed from the `$ORACLE_HOME/lib` directory: * `$ORACLE_HOME/lib/libra.so` (Recovery Appliance) +* `$ORACLE_HOME/lib/libolapapi18.so` (Oracle OLAP API) * `$ORACLE_HOME/lib/libopc.so` (Oracle Public Cloud) * `$ORACLE_HOME/lib/libosbws.so` (Oracle Secure Backup Cloud Module) diff --git a/install.1840.sh b/install.1840.sh index dda7296..f53e80d 100755 --- a/install.1840.sh +++ b/install.1840.sh @@ -974,8 +974,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove rdbms/jlib rm -r "${ORACLE_HOME}"/rdbms/jlib - # Remove olap + # Remove OLAP rm -r "${ORACLE_HOME}"/olap + rm "${ORACLE_HOME}"/lib/libolapapi18.so # Remove property graph (standalone component that can be downloaded from the web) rm -r "${ORACLE_HOME}"/md/property_graph diff --git a/install.2130.sh b/install.2130.sh index 232fdf4..48af7b9 100755 --- a/install.2130.sh +++ b/install.2130.sh @@ -1982,8 +1982,9 @@ if [ "${BUILD_MODE}" == "REGULAR" ] || [ "${BUILD_MODE}" == "SLIM" ]; then # Remove rdbms/jlib rm -r "${ORACLE_HOME}"/rdbms/jlib - # Remove olap + # Remove OLAP rm -r "${ORACLE_HOME}"/olap + rm "${ORACLE_HOME}"/lib/libolapapi.so # Remove Cluster Ready Services rm -r "${ORACLE_HOME}"/crs From 3444662d98c47d8acea70c6fa9cbd8735d96060f Mon Sep 17 00:00:00 2001 From: cedric-v3 Date: Sat, 25 Dec 2021 19:35:34 +0100 Subject: [PATCH 176/192] Do not increase SGA_TARGET for 11g (fixes #71) (#72) Oracle Database 11g XE is restricted to use no more than 1 GB of memory. The fix for #64 sets the memory to 1.5 GB, so that the database fails to start with the error: ORA-47500: XE edition memory parameter invalid or not specified --- container-entrypoint.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/container-entrypoint.sh b/container-entrypoint.sh index a00f3ba..8f2ab4e 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -140,7 +140,12 @@ function create_dbconfig() { # If the host has a large number of CPUs (>= 16), SGA_TARGET needs to be increased (#64) # Set SGA_TARGET to 1.5g which should be enough for at least 64 CPU cores - if [ "$(nproc --all)" -ge 16 ]; then + # + # Note: + # This does not apply to Oracle Database 11g which has a memory limit of 1 GB and fails + # to start with the following error if more memory is configured: + # ORA-47500: XE edition memory parameter invalid or not specified + if [[ "$ORACLE_VERSION" != "11.2."* ]] && (( "$(nproc --all)" >= 16 )); then echo "CONTAINER: machine has high CPU count: $(nproc --all)" echo "CONTAINER: increasing SGA_TARGET to 1.5GB." sqlplus -s / as sysdba < Date: Sat, 25 Dec 2021 11:42:01 -0700 Subject: [PATCH 177/192] Update note for #72 Signed-off-by: gvenzl --- container-entrypoint.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/container-entrypoint.sh b/container-entrypoint.sh index 8f2ab4e..f6b7225 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -141,9 +141,9 @@ function create_dbconfig() { # If the host has a large number of CPUs (>= 16), SGA_TARGET needs to be increased (#64) # Set SGA_TARGET to 1.5g which should be enough for at least 64 CPU cores # - # Note: - # This does not apply to Oracle Database 11g which has a memory limit of 1 GB and fails - # to start with the following error if more memory is configured: + # Note: This does not apply to Oracle Database 11g XE which has a memory limit of 1 GB + # and does not require that much additional memory for a larger CPU count. + # 11g XE fails to start with the following error if more than 1 GB memory is configured: # ORA-47500: XE edition memory parameter invalid or not specified if [[ "$ORACLE_VERSION" != "11.2."* ]] && (( "$(nproc --all)" >= 16 )); then echo "CONTAINER: machine has high CPU count: $(nproc --all)" From a4a0243df3f13d16785291ea7c5a09e384943b16 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 15 Jan 2022 21:50:59 -0700 Subject: [PATCH 178/192] ER #60: introduce container minimum memory check Signed-off-by: gvenzl --- container-entrypoint.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/container-entrypoint.sh b/container-entrypoint.sh index f6b7225..3e4ebab 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -348,6 +348,34 @@ EOF } +# Check minimum memory requirements +function check_minimum_memory { + + # Check for cgroup v2 + if [ -f /sys/fs/cgroup/cgroup.controllers ]; then + container_memory=$(< /sys/fs/cgroup/memory.max) + else + container_memory=$(< /sys/fs/cgroup/memory/memory.limit_in_bytes) + fi; + + # Check whether memory is not set to "max", i.e. unlimited and + # prevent integer overflow by checking whether container has + # less than double digit GB of RAM. + if [[ ${container_memory} != "max" && ${#container_memory} -lt 11 ]]; then + # Check memory per version + # 11.2 >= 1 GB + # 18c+ >= 2 GB + if [[ ( "$ORACLE_VERSION" != "11.2."* && ${container_memory} -lt 1073741824 ) || + ( ${container_memory} -lt 2147483648 ) ]]; then + echo "The container has not enough memory available to run Oracle Database XE." + echo "There are currently only $((container_memory/1024/1024)) MB available inside the container." + echo "Please increase the amount of memory for the container." + exit 1; + fi; + fi; + +} + ########################### ########################### ######### M A I N ######### @@ -362,6 +390,9 @@ echo "CONTAINER: starting up..." # Setup all required environment variables setup_env_vars +# Check for minimum memory requirements +check_minimum_memory + # If database does not yet exist, create directory structure if [ -z "${DATABASE_ALREADY_EXISTS:-}" ]; then echo "CONTAINER: first database startup, initializing..." From 04d94c5af8506f4cb8ffdc0b89ceea4cb4611a57 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 15 Jan 2022 21:50:59 -0700 Subject: [PATCH 179/192] ER #61: introduce container minimum memory check Signed-off-by: gvenzl --- container-entrypoint.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/container-entrypoint.sh b/container-entrypoint.sh index f6b7225..3e4ebab 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -348,6 +348,34 @@ EOF } +# Check minimum memory requirements +function check_minimum_memory { + + # Check for cgroup v2 + if [ -f /sys/fs/cgroup/cgroup.controllers ]; then + container_memory=$(< /sys/fs/cgroup/memory.max) + else + container_memory=$(< /sys/fs/cgroup/memory/memory.limit_in_bytes) + fi; + + # Check whether memory is not set to "max", i.e. unlimited and + # prevent integer overflow by checking whether container has + # less than double digit GB of RAM. + if [[ ${container_memory} != "max" && ${#container_memory} -lt 11 ]]; then + # Check memory per version + # 11.2 >= 1 GB + # 18c+ >= 2 GB + if [[ ( "$ORACLE_VERSION" != "11.2."* && ${container_memory} -lt 1073741824 ) || + ( ${container_memory} -lt 2147483648 ) ]]; then + echo "The container has not enough memory available to run Oracle Database XE." + echo "There are currently only $((container_memory/1024/1024)) MB available inside the container." + echo "Please increase the amount of memory for the container." + exit 1; + fi; + fi; + +} + ########################### ########################### ######### M A I N ######### @@ -362,6 +390,9 @@ echo "CONTAINER: starting up..." # Setup all required environment variables setup_env_vars +# Check for minimum memory requirements +check_minimum_memory + # If database does not yet exist, create directory structure if [ -z "${DATABASE_ALREADY_EXISTS:-}" ]; then echo "CONTAINER: first database startup, initializing..." From a256de3030d69496e9d2cefa2496abcc32d3f7b1 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 16 Jan 2022 17:15:19 -0700 Subject: [PATCH 180/192] Update utPLSQL references as per #77 Signed-off-by: gvenzl --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2035e01..f362d00 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,10 @@ We are proud of the following users of these images: * [Sqitch](https://sqitch.org/) [[`8b38027`](https://github.com/sqitchers/sqitch/commit/8b38027ba2b91ef7fbe59a35a5332d17f0beadb0)] * [Testcontainers](https://www.testcontainers.org/) [[`99b91b8`](https://github.com/testcontainers/testcontainers-java/commit/99b91b89b6ee3f8f0e9545e86d9f0744b301db30)] * [Upscheme](https://upscheme.org/) [[`954650a`](https://github.com/aimeos/upscheme/commit/954650afc92273f73bc1276aa0bd2f4253987c4f)] -* [utPLSQL](http://utplsql.org/) [[`8080604`](https://github.com/utPLSQL/utPLSQL/commit/8080604df0256ab2202c9f64bb67671d55c63710#diff-6ac3f79fc25d95cd1e3d51da53a4b21b939437392578a35ae8cd6d5366ca5485)] +* [utPLSQL](http://utplsql.org/) [[`327110f`](https://github.com/utPLSQL/utPLSQL/commit/327110f8e77d195aa515f796ad732ea8538e1b82)] + * [utPLSQL-maven-plugin](https://github.com/utPLSQL/utPLSQL-maven-plugin/) [[`4d8deeb`](https://github.com/utPLSQL/utPLSQL-maven-plugin/commit/4d8deeb7f107a52913d6320080b972318e753b0e)] + * [utPLSQL-java-api](https://github.com/utPLSQL/utPLSQL-java-api) [[`a4a0eb5`](https://github.com/utPLSQL/utPLSQL-java-api/commit/a4a0eb505e0c699c9da9add0a423b618c29723c1)] + * [utPLSQL-demo-project](https://github.com/utPLSQL/utPLSQL-demo-project/) [[`99463f0`](https://github.com/utPLSQL/utPLSQL-demo-project/commit/99463f0035c4517a0b42a6ea6a55840c82828e86)] If you are using these images and would like to be listed as well, please open an [issue on GitHub](https://github.com/gvenzl/oci-oracle-xe/issues) or reach out on [Twitter](https://twitter.com/geraldvenzl). From 4ebbf04ed0a04a6988136e308311950528d10a74 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 16 Jan 2022 21:39:54 -0700 Subject: [PATCH 181/192] Provide TDE setup script example as per #70 Signed-off-by: gvenzl --- examples/README.md | 1 + examples/setup-tde.sh | 57 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 examples/setup-tde.sh diff --git a/examples/README.md b/examples/README.md index 2f02be1..2c94544 100644 --- a/examples/README.md +++ b/examples/README.md @@ -3,3 +3,4 @@ | Script | Parameters | Description | |--------|------------|-------------| | dkr-create-oracle-xe-server | hostXePort containerName | Create Oracle XE Container using docker | +| setup-tde.sh | | Configures the database for Transparent Data Encryption in United Mode, mount/copy under `/container-entrypoint-initdb.d` inside the container. | \ No newline at end of file diff --git a/examples/setup-tde.sh b/examples/setup-tde.sh new file mode 100644 index 0000000..3c5707e --- /dev/null +++ b/examples/setup-tde.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# +# Since: January, 2022 +# Author: gvenzl +# Name: setup-tde.sh +# Description: A script to configure the database for Transparent Data Encryption in United Mode. +# +# Copyright 2022 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +RANDOM_KEYSTORE_PASSWORD=$(date +%s | sha256sum | base64 | head -c 8) + +sqlplus -s / as sysdba < Date: Sat, 5 Feb 2022 13:16:37 -0700 Subject: [PATCH 182/192] More solid fix for #64 Signed-off-by: gvenzl --- container-entrypoint.sh | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/container-entrypoint.sh b/container-entrypoint.sh index 3e4ebab..2558bdc 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -138,22 +138,40 @@ function create_dbconfig() { rm "${ORACLE_BASE}"/"${ORACLE_SID}".zip fi; - # If the host has a large number of CPUs (>= 16), SGA_TARGET needs to be increased (#64) - # Set SGA_TARGET to 1.5g which should be enough for at least 64 CPU cores + # If the host has a large number of CPUs (>= 32), SGA_TARGET needs to be increased (#64) # # Note: This does not apply to Oracle Database 11g XE which has a memory limit of 1 GB # and does not require that much additional memory for a larger CPU count. # 11g XE fails to start with the following error if more than 1 GB memory is configured: # ORA-47500: XE edition memory parameter invalid or not specified - if [[ "$ORACLE_VERSION" != "11.2."* ]] && (( "$(nproc --all)" >= 16 )); then + if [[ "$ORACLE_VERSION" != "11.2."* ]] && (( "$(nproc --all)" >= 32 )); then echo "CONTAINER: machine has high CPU count: $(nproc --all)" - echo "CONTAINER: increasing SGA_TARGET to 1.5GB." + # + # 16 = 640 MB + # 24 = 816 MB + # 32 = 992 MB + # 48 = 1344 MB + # 64 = 1696 MB + # + if (( "$(nproc --all)" = 32 )); then + SGA_MEMORY="1100"; + PGA_MEMORY="400"; + elif (( "$(nproc --all)" <= 48 )); then + SGA_MEMORY="1500"; + PGA_MEMORY="400"; + else + SGA_MEMORY="1800"; + PGA_MEMORY="200"; + fi; + + echo "CONTAINER: increasing SGA_TARGET to ${SGA_MEMORY}MB." sqlplus -s / as sysdba < Date: Sat, 5 Feb 2022 18:26:50 -0700 Subject: [PATCH 183/192] Enhance documentation for secrets (#69) Signed-off-by: gvenzl --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f362d00..6d08e69 100644 --- a/README.md +++ b/README.md @@ -168,6 +168,12 @@ This mechanism is supported for: * `ORACLE_PASSWORD` * `ORACLE_DATABASE` +**Note**: there is a significant difference in how containerization technologies handle secrets. For more information on that topic, please consult the official containerization technology documentation: + +* [Docker](https://docs.docker.com/engine/swarm/secrets/) +* [Podman](https://www.redhat.com/sysadmin/new-podman-secrets-command) +* [Kubernetes](https://kubernetes.io/docs/concepts/configuration/secret/) + ## Initialization scripts If you would like to perform additional initialization of the database running in a container, you can add one or more `*.sql`, `*.sql.gz`, `*.sql.zip` or `*.sh` files under `/container-entrypoint-initdb.d` (creating the directory if necessary). After the database setup is completed, these files will be executed automatically in alphabetical order. @@ -217,7 +223,7 @@ rm install.sql As the execution happens in alphabetical order, numbering the files will guarantee the execution order. A new container started up with `/home/gvenzl/init_scripts` pointing to `/container-entrypoint-initdb.d` will then execute the files above: ```shell -podman run --name test \ +docker run --name test \ > -p 1521:1521 \ > -e ORACLE_RANDOM_PASSWORD="y" \ > -v /home/gvenzl/init_scripts:/container-entrypoint-initdb.d \ From 6ea7cc08c344a31fe467a7a3a400e5ce593cf064 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 5 Feb 2022 18:39:12 -0700 Subject: [PATCH 184/192] Document HitHub Action container label usage (#81) Signed-off-by: gvenzl --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6d08e69..4323af9 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ The images can be used as a [Service Container](https://docs.github.com/en/actio ```yaml services: - # Oracle service + # Oracle service (label used to access the service container) oracle: # Docker Hub image (feel free to change the tag "latest" to any other available one) @@ -129,7 +129,9 @@ The images can be used as a [Service Container](https://docs.github.com/en/actio After your service is created, you can connect to it via the following properties: -* Host: `localhost` or `127.0.0.1` +* Hostname: + * `oracle` (from within another container) + * `localhost` or `127.0.0.1` (from the host directly) * Port: `1521` * Service name: `XEPDB1` * Database App User: `my_user` From d0165aeeeee29751ef652e90b9044e5e3651bc42 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 19 Mar 2022 20:56:50 -0700 Subject: [PATCH 185/192] Fix doc bug for APP_USER Signed-off-by: gvenzl --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4323af9..f078118 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ This is an optional variable. Set this variable to a non-empty string to create **Note:** creating a new database will add to the initial container startup time. If you do not want that additional startup time, use the already existing `XEPDB1` database instead. ### `APP_USER` -This is an optional variable. Set this variable to a non-empty string to create a new database schema user with the name specified in this variable. The user will be created in the default `XEPDB1` pluggable database. If `ORACLE_DATABASE` has been specified, the user will also be created in that pluggable database. This variable requires `APP_USER_PASSWORD` or `APP_USER_PASSWORD_FILE` to be specified as well. +This is an optional variable. Set this variable to a non-empty string to create a new database schema user with the name specified in this variable. For 18c and onwards, the user will be created in the default `XEPDB1` pluggable database. If `ORACLE_DATABASE` has been specified, the user will also be created in that pluggable database. This variable requires `APP_USER_PASSWORD` or `APP_USER_PASSWORD_FILE` to be specified as well. ### `APP_USER_PASSWORD` This is an optional variable. Set this variable to a non-empty string to define a password for the database schema user specified by `APP_USER`. This variable requires `APP_USER` to be specified as well. From ab6aab8b60c577b3302d123f411a149c1fb5e74d Mon Sep 17 00:00:00 2001 From: Simon Potter Date: Sun, 20 Mar 2022 17:06:13 +1300 Subject: [PATCH 186/192] Add CREATE SYNONYM permission to APP_USER. (#94) --- container-entrypoint.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/container-entrypoint.sh b/container-entrypoint.sh index 2558bdc..1efa6eb 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -346,7 +346,7 @@ function create_app_user { ${ALTER_SESSION_CMD} CREATE USER ${APP_USER} IDENTIFIED BY "${APP_USER_PASSWORD}" QUOTA UNLIMITED ON USERS; - GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE MATERIALIZED VIEW TO ${APP_USER}; + GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE MATERIALIZED VIEW, CREATE SYNONYM TO ${APP_USER}; exit; EOF @@ -359,7 +359,7 @@ EOF ALTER SESSION SET CONTAINER=${ORACLE_DATABASE}; CREATE USER ${APP_USER} IDENTIFIED BY "${APP_USER_PASSWORD}" QUOTA UNLIMITED ON USERS; - GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE MATERIALIZED VIEW TO ${APP_USER}; + GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE MATERIALIZED VIEW, CREATE SYNONYM TO ${APP_USER}; exit; EOF fi; From 9772b6eb2c3de995a0c491cab36d409c5f82730d Mon Sep 17 00:00:00 2001 From: Neil Crow Date: Sun, 17 Apr 2022 18:06:20 +0200 Subject: [PATCH 187/192] Externalise script createAppUser (#103) Closes #102 --- Dockerfile.11202 | 2 +- Dockerfile.1840 | 2 +- Dockerfile.2130 | 2 +- createAppUser | 46 ++++++++++++++++++++++++++++++++++++++++++++++ install.11202.sh | 7 +++++-- install.1840.sh | 7 +++++-- install.2130.sh | 7 +++++-- 7 files changed, 64 insertions(+), 9 deletions(-) create mode 100644 createAppUser diff --git a/Dockerfile.11202 b/Dockerfile.11202 index 57e4e69..ef99cb2 100644 --- a/Dockerfile.11202 +++ b/Dockerfile.11202 @@ -47,7 +47,7 @@ ENV ORACLE_BASE=/u01/app/oracle \ ORACLE_SID=XE \ PATH=${PATH}:/u01/app/oracle/product/11.2.0/xe/bin:/u01/app/oracle -COPY oracle-xe-11.2.0-1.0.x86_64.rpm xe.11202.rsp install.11202.sh container-entrypoint.sh resetPassword healthcheck.sh /install/ +COPY oracle-xe-11.2.0-1.0.x86_64.rpm xe.11202.rsp install.11202.sh container-entrypoint.sh resetPassword createAppUser healthcheck.sh /install/ RUN /install/install.11202.sh "${BUILD_MODE}" diff --git a/Dockerfile.1840 b/Dockerfile.1840 index d8c4166..dcec120 100644 --- a/Dockerfile.1840 +++ b/Dockerfile.1840 @@ -29,7 +29,7 @@ ENV ORACLE_BASE=/opt/oracle \ ORACLE_SID=XE \ PATH=${PATH}:/opt/oracle/product/18c/dbhomeXE/bin:/opt/oracle -COPY oracle-database-xe-18c-1.0-1.x86_64.rpm install.1840.sh container-entrypoint.sh resetPassword healthcheck.sh /install/ +COPY oracle-database-xe-18c-1.0-1.x86_64.rpm install.1840.sh container-entrypoint.sh resetPassword createAppUser healthcheck.sh /install/ RUN /install/install.1840.sh "${BUILD_MODE}" diff --git a/Dockerfile.2130 b/Dockerfile.2130 index a071b26..3d33295 100644 --- a/Dockerfile.2130 +++ b/Dockerfile.2130 @@ -29,7 +29,7 @@ ENV ORACLE_BASE=/opt/oracle \ ORACLE_SID=XE \ PATH=${PATH}:/opt/oracle/product/21c/dbhomeXE/bin:/opt/oracle -COPY oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm install.2130.sh container-entrypoint.sh resetPassword healthcheck.sh /install/ +COPY oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm install.2130.sh container-entrypoint.sh resetPassword createAppUser healthcheck.sh /install/ RUN /install/install.2130.sh "${BUILD_MODE}" diff --git a/createAppUser b/createAppUser new file mode 100644 index 0000000..2cdda25 --- /dev/null +++ b/createAppUser @@ -0,0 +1,46 @@ +#!/bin/bash +# +# Since: April, 2022 +# Author: gvenzl +# Name: createAppUser +# Description: Creates the user in the XEPDB1 database +# +# Copyright 2022 Gerald Venzl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit on errors +# Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ +set -Eeuo pipefail + +APP_USER="${1}" +APP_USER_PASSWORD="${2}" + +ORACLE_VERSION=$(sqlplus -version | grep "Release" | awk '{ print $3 }') + +# Check whether the user needs to be in a PDB or not +ALTER_SESSION_CMD="ALTER SESSION SET CONTAINER=XEPDB1;" +if [[ "${ORACLE_VERSION}" = "11.2"* ]]; then + ALTER_SESSION_CMD=""; +fi; + +sqlplus -s / as sysdba << EOF + -- Exit on any errors + WHENEVER SQLERROR EXIT SQL.SQLCODE + + ${ALTER_SESSION_CMD} + + CREATE USER ${APP_USER} IDENTIFIED BY "${APP_USER_PASSWORD}" QUOTA UNLIMITED ON USERS; + GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE MATERIALIZED VIEW, CREATE SYNONYM TO ${APP_USER}; + exit; +EOF diff --git a/install.11202.sh b/install.11202.sh index 1f81eb1..09002ff 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -546,12 +546,15 @@ echo "BUILDER: install operational files" # Move operational files to ${ORACLE_BASE} mv /install/*.sh "${ORACLE_BASE}"/ mv /install/resetPassword "${ORACLE_BASE}"/ +mv /install/createAppUser "${ORACLE_BASE}"/ chown oracle:dba "${ORACLE_BASE}"/*.sh \ - "${ORACLE_BASE}"/resetPassword + "${ORACLE_BASE}"/resetPassword \ + "${ORACLE_BASE}"/createAppUser chmod u+x "${ORACLE_BASE}"/*.sh \ - "${ORACLE_BASE}"/resetPassword + "${ORACLE_BASE}"/resetPassword \ + "${ORACLE_BASE}"/createAppUser ######################### ####### Cleanup ######### diff --git a/install.1840.sh b/install.1840.sh index f53e80d..00102f6 100755 --- a/install.1840.sh +++ b/install.1840.sh @@ -872,12 +872,15 @@ echo "BUILDER: install operational files" # Move operational files to ${ORACLE_BASE} mv /install/*.sh "${ORACLE_BASE}"/ mv /install/resetPassword "${ORACLE_BASE}"/ +mv /install/createAppUser "${ORACLE_BASE}"/ chown oracle:dba "${ORACLE_BASE}"/*.sh \ - "${ORACLE_BASE}"/resetPassword + "${ORACLE_BASE}"/resetPassword \ + "${ORACLE_BASE}"/createAppUser chmod u+x "${ORACLE_BASE}"/*.sh \ - "${ORACLE_BASE}"/resetPassword + "${ORACLE_BASE}"/resetPassword \ + "${ORACLE_BASE}"/createAppUser # TODO: relink Oracle binaries # Multimedia: ord/im/lib/env_ordim.mk diff --git a/install.2130.sh b/install.2130.sh index 48af7b9..aa15f53 100755 --- a/install.2130.sh +++ b/install.2130.sh @@ -1887,12 +1887,15 @@ echo "BUILDER: install operational files" # Move operational files to ${ORACLE_BASE} mv /install/*.sh "${ORACLE_BASE}"/ mv /install/resetPassword "${ORACLE_BASE}"/ +mv /install/createAppUser "${ORACLE_BASE}"/ chown oracle:dba "${ORACLE_BASE}"/*.sh \ - "${ORACLE_BASE}"/resetPassword + "${ORACLE_BASE}"/resetPassword \ + "${ORACLE_BASE}"/createAppUser chmod u+x "${ORACLE_BASE}"/*.sh \ - "${ORACLE_BASE}"/resetPassword + "${ORACLE_BASE}"/resetPassword \ + "${ORACLE_BASE}"/createAppUser ######################### ####### Cleanup ######### From 9a872247fa2f807cdb5f168acc9c1fb88aa6b453 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 17 Apr 2022 18:56:20 -0700 Subject: [PATCH 188/192] Modularize app user creation Signed-off-by: gvenzl --- README.md | 19 +++++++++++++++++ container-entrypoint.sh | 45 ++++++----------------------------------- createAppUser | 15 ++++++++++---- 3 files changed, 36 insertions(+), 43 deletions(-) mode change 100644 => 100755 createAppUser diff --git a/README.md b/README.md index f078118..e182afe 100644 --- a/README.md +++ b/README.md @@ -156,6 +156,25 @@ If you amend the variables above, here is some more useful info: For a full list of changes that have been made to the Oracle Database and OS installation in each individual image flavor, please see [ImageDetails.md](https://github.com/gvenzl/oci-oracle-xe/blob/main/ImageDetails.md). +## Database users + +The image provides a built-in command `createAppUser` to create additional Oracle Database users with standard privileges. The same command is also executed when the `$APP_USER` environment variable is specified. If you need just one additional database user for your application, the `APP_USER` environment variable is the best approach. However, if you need multiple users, you can execute the command for each individual user directly: + +```shell +Usage: + createAppUser APP_USER APP_USER_PASSWORD [TARGET_PDB] + + APP_USER: the user name of the new user + APP_USER_PASSWORD: the password for that user + TARGET_PDB: the target pluggable database the user should be created in, default XEPDB1 (ignored for 11g R2) +``` + +Example: + +```shell +docker exec createAppUser [] +``` + ## Container secrets As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to some of the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Container/Docker secrets stored in `/run/secrets/` files. For example: diff --git a/container-entrypoint.sh b/container-entrypoint.sh index 1efa6eb..7302c81 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -328,44 +328,6 @@ EOF unset RANDOM_PDBADIN_PASSWORD } -# Create schema user for the application to use -function create_app_user { - - # Check whether the user needs to be in a PDB or not - ALTER_SESSION_CMD="ALTER SESSION SET CONTAINER=XEPDB1;" - if [[ "${ORACLE_VERSION}" = "11.2"* ]]; then - ALTER_SESSION_CMD=""; - fi; - - echo "CONTAINER: Creating database application user." - - sqlplus -s / as sysdba <=18c) - if [ -n "${ORACLE_DATABASE:-}" ]; then - sqlplus -s / as sysdba <=18c) + if [ -n "${ORACLE_DATABASE:-}" ]; then + ./createAppUser "${APP_USER}" "${APP_USER_PASSWORD}" "${ORACLE_DATABASE}" + fi; fi; # Running custom database initialization scripts diff --git a/createAppUser b/createAppUser old mode 100644 new mode 100755 index 2cdda25..4cf718b --- a/createAppUser +++ b/createAppUser @@ -3,7 +3,10 @@ # Since: April, 2022 # Author: gvenzl # Name: createAppUser -# Description: Creates the user in the XEPDB1 database +# Description: Creates a new database user. +# Parameter 1: the user name +# Parameter 2: the user password +# Parameter 3: the target PDB to create the user in, default: XEPDB1 (ignored for 11gR2) # # Copyright 2022 Gerald Venzl # @@ -23,17 +26,21 @@ # Great explanation on https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ set -Eeuo pipefail +# Parameters APP_USER="${1}" APP_USER_PASSWORD="${2}" +TARGET_PDB="${3:-XEPDB1}" -ORACLE_VERSION=$(sqlplus -version | grep "Release" | awk '{ print $3 }') +# Prepare container switch statement to create user in PDB. +ALTER_SESSION_CMD="ALTER SESSION SET CONTAINER=${TARGET_PDB};" -# Check whether the user needs to be in a PDB or not -ALTER_SESSION_CMD="ALTER SESSION SET CONTAINER=XEPDB1;" +# 11g XE does not support PDBs, set container switch statement to empty string. +ORACLE_VERSION=$(sqlplus -version | grep "Release" | awk '{ print $3 }') if [[ "${ORACLE_VERSION}" = "11.2"* ]]; then ALTER_SESSION_CMD=""; fi; +# Create new user in target PDB sqlplus -s / as sysdba << EOF -- Exit on any errors WHENEVER SQLERROR EXIT SQL.SQLCODE From f72866dcff33729b39c7bc78b99eaf9952f14495 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sun, 17 Apr 2022 21:10:31 -0700 Subject: [PATCH 189/192] Update image users Signed-off-by: gvenzl --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e182afe..4750890 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,9 @@ We are proud of the following users of these images: * [Eclipse Vert.x](https://vertx.io/) [[`ffedbce`](https://github.com/eclipse-vertx/vertx-sql-client/commit/ffedbce6f91425ce603d47da6290ac30e19fd2e5)] * [Flowable](https://www.flowable.com/open-source/) [[`18c751f`](https://github.com/flowable/flowable-engine/commit/18c751fb369a74b71abc203f0b4ace151a96e862)] * [GeoTools](https://geotools.org/) [[`f922f0b`](https://github.com/geotools/geotools/commit/f922f0bdd19e32b9648ad644af2a1eed75417964)] -* [Hibernate Search](https://hibernate.org/search/) [[`173f0b7`](https://github.com/hibernate/hibernate-search/commit/173f0b703defee81b6600c693d4d30b87a6ade41)] +* [Hibernate](https://hibernate.org/orm/) [[`43d2274`](https://github.com/hibernate/hibernate-orm/commit/43d2274573ca2658d1b5bc5706f8097c090ae9c1)] + * [Hibernate Reactive](https://hibernate.org/reactive/) [[`7de7d79`](https://github.com/hibernate/hibernate-reactive/commit/7de7d793793fec0c06c7dad857a14274353eb639)] + * [Hibernate Search](https://hibernate.org/search/) [[`173f0b7`](https://github.com/hibernate/hibernate-search/commit/173f0b703defee81b6600c693d4d30b87a6ade41)] * [jOOQ](https://www.jooq.org/) [[`#35`](https://github.com/gvenzl/oci-oracle-xe/issues/35)] * [Liquibase](https://www.liquibase.org/) [[`c6a31c0`](https://github.com/liquibase/liquibase-test-harness/commit/c6a31c0c54c1aa798839a2ef55ef6eb2363ea48f)] * [Micronaut Data](https://github.com/micronaut-projects/micronaut-data) [[`ddf11c1`](https://github.com/micronaut-projects/micronaut-data/commit/ddf11c1e8a7a27a1f6765cc5e1c1c3d3f74b475f)] @@ -59,6 +61,7 @@ We are proud of the following users of these images: * [Ruby on Rails ActiveRecord adapter](https://github.com/rsim/oracle-enhanced) [[`afd7a93`](https://github.com/rsim/oracle-enhanced/commit/afd7a93470d1444e1462d0fb4f3d965ef2698384)] * [Rucio by CERN](https://rucio.cern.ch/) [[`80dffbb`](https://github.com/rucio/rucio/commit/80dffbb09f58a9f30d2a9a4c3297e8ed22a78963)] * [SchemaCrawler](https://www.schemacrawler.com/) [[`08d9b87`](https://github.com/schemacrawler/SchemaCrawler/commit/08d9b87c280bf23e405bea6265abf01448fa71d3)] +* [Spring Data JDBC](https://spring.io/projects/spring-data) [[`baee76a`](https://github.com/spring-projects/spring-data-relational/commit/baee76a46d22d6281c7b8d3b8f6e6cdfe23b79cc)] * [Sqitch](https://sqitch.org/) [[`8b38027`](https://github.com/sqitchers/sqitch/commit/8b38027ba2b91ef7fbe59a35a5332d17f0beadb0)] * [Testcontainers](https://www.testcontainers.org/) [[`99b91b8`](https://github.com/testcontainers/testcontainers-java/commit/99b91b89b6ee3f8f0e9545e86d9f0744b301db30)] * [Upscheme](https://upscheme.org/) [[`954650a`](https://github.com/aimeos/upscheme/commit/954650afc92273f73bc1276aa0bd2f4253987c4f)] @@ -66,6 +69,7 @@ We are proud of the following users of these images: * [utPLSQL-maven-plugin](https://github.com/utPLSQL/utPLSQL-maven-plugin/) [[`4d8deeb`](https://github.com/utPLSQL/utPLSQL-maven-plugin/commit/4d8deeb7f107a52913d6320080b972318e753b0e)] * [utPLSQL-java-api](https://github.com/utPLSQL/utPLSQL-java-api) [[`a4a0eb5`](https://github.com/utPLSQL/utPLSQL-java-api/commit/a4a0eb505e0c699c9da9add0a423b618c29723c1)] * [utPLSQL-demo-project](https://github.com/utPLSQL/utPLSQL-demo-project/) [[`99463f0`](https://github.com/utPLSQL/utPLSQL-demo-project/commit/99463f0035c4517a0b42a6ea6a55840c82828e86)] +* [XWiki](https://www.xwiki.org/) [[`e677893`](https://github.com/xwiki/xwiki-platform/commit/e6778930b6dd1c966ac000e4cd4ad6dcd85d9314)] If you are using these images and would like to be listed as well, please open an [issue on GitHub](https://github.com/gvenzl/oci-oracle-xe/issues) or reach out on [Twitter](https://twitter.com/geraldvenzl). From 29faa967450b3dfc34998b176ec6f32dfddaee70 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 22 Apr 2022 21:49:47 -0700 Subject: [PATCH 190/192] Fix typo Signed-off-by: gvenzl --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4750890..9b391cc 100644 --- a/README.md +++ b/README.md @@ -162,7 +162,7 @@ For a full list of changes that have been made to the Oracle Database and OS ins ## Database users -The image provides a built-in command `createAppUser` to create additional Oracle Database users with standard privileges. The same command is also executed when the `$APP_USER` environment variable is specified. If you need just one additional database user for your application, the `APP_USER` environment variable is the best approach. However, if you need multiple users, you can execute the command for each individual user directly: +The image provides a built-in command `createAppUser` to create additional Oracle Database users with standard privileges. The same command is also executed when the `APP_USER` environment variable is specified. If you need just one additional database user for your application, the `APP_USER` environment variable is the best approach. However, if you need multiple users, you can execute the command for each individual user directly: ```shell Usage: @@ -179,6 +179,8 @@ Example: docker exec createAppUser [] ``` +The command can also be invoked inside initialization and/or startup scripts. + ## Container secrets As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to some of the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Container/Docker secrets stored in `/run/secrets/` files. For example: From ad9f813452f63b5e2b9a2ab1b17ab941f5052916 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Fri, 22 Apr 2022 21:54:00 -0700 Subject: [PATCH 191/192] Fix #104 Signed-off-by: gvenzl --- container-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/container-entrypoint.sh b/container-entrypoint.sh index 7302c81..01e8124 100755 --- a/container-entrypoint.sh +++ b/container-entrypoint.sh @@ -153,7 +153,7 @@ function create_dbconfig() { # 48 = 1344 MB # 64 = 1696 MB # - if (( "$(nproc --all)" = 32 )); then + if (( "$(nproc --all)" == 32 )); then SGA_MEMORY="1100"; PGA_MEMORY="400"; elif (( "$(nproc --all)" <= 48 )); then From 428482a891406502e8f05f8036f2f6104ec582f3 Mon Sep 17 00:00:00 2001 From: gvenzl Date: Sat, 23 Apr 2022 10:00:13 -0700 Subject: [PATCH 192/192] Inlcude pam package for OS based auth (#57) Signed-off-by: gvenzl --- install.11202.sh | 11 +++++------ install.1840.sh | 11 +++++------ install.2130.sh | 10 ++++------ 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/install.11202.sh b/install.11202.sh index 09002ff..bf3d1df 100755 --- a/install.11202.sh +++ b/install.11202.sh @@ -659,12 +659,11 @@ fi; # Remove build packages # Unfortunately microdnf does not automatically uninstall dependencies that have been # installed with a package, so if you were to uninstall just util-linux, for example, -# it does not automatically also remove gzip and cracklib again. -rpm -e --nodeps acl bc cracklib cracklib-dicts cryptsetup-libs \ - dbus dbus-common dbus-daemon dbus-libs dbus-tools \ - device-mapper device-mapper-libs elfutils-default-yama-scope \ - elfutils-libs libpwquality kmod-libs libfdisk libnsl2 libseccomp \ - libtirpc libutempter net-tools pam pam procps-ng \ +# it does not automatically also remove gzip again. +rpm -e --nodeps acl bc cryptsetup-libs dbus dbus-common dbus-daemon dbus-libs \ + dbus-tools device-mapper device-mapper-libs \ + elfutils-default-yama-scope elfutils-libs kmod-libs libfdisk \ + libseccomp libutempter net-tools procps-ng \ systemd systemd-pam util-linux # Remove dnf cache diff --git a/install.1840.sh b/install.1840.sh index 00102f6..2905488 100755 --- a/install.1840.sh +++ b/install.1840.sh @@ -1104,13 +1104,12 @@ fi; # Remove installation dependencies # Use rpm instead of microdnf to allow removing packages regardless of dependencies specified by the Oracle XE RPM -rpm -e --nodeps acl bc binutils cracklib cracklib-dicts cryptsetup-libs \ - dbus dbus-common dbus-daemon dbus-libs dbus-tools \ - device-mapper device-mapper-libs diffutils \ +rpm -e --nodeps acl bc binutils cryptsetup-libs dbus dbus-common dbus-daemon \ + dbus-libs dbus-tools device-mapper device-mapper-libs diffutils \ elfutils-default-yama-scope elfutils-libs file findutils hostname \ - kmod-libs ksh libfdisk libnsl2 libpwquality libseccomp libtirpc \ - libutempter lm_sensors-libs make net-tools pam procps-ng smartmontools \ - sysstat systemd systemd-pam util-linux xz + kmod-libs ksh libfdisk libseccomp libutempter lm_sensors-libs \ + make net-tools procps-ng smartmontools sysstat systemd \ + systemd-pam util-linux xz rm /etc/sysctl.conf.rpmsave diff --git a/install.2130.sh b/install.2130.sh index aa15f53..91fd390 100755 --- a/install.2130.sh +++ b/install.2130.sh @@ -2113,13 +2113,11 @@ fi; # Remove installation dependencies # Use rpm instead of microdnf to allow removing packages regardless of dependencies specified by the Oracle XE RPM -rpm -e --nodeps acl bc binutils cracklib cracklib-dicts cryptsetup-libs \ - dbus dbus-common dbus-daemon dbus-libs dbus-tools \ - device-mapper device-mapper-libs diffutils \ +rpm -e --nodeps acl bc binutils cryptsetup-libs dbus dbus-common dbus-daemon \ + dbus-libs dbus-tools device-mapper device-mapper-libs diffutils \ elfutils-default-yama-scope elfutils-libs file findutils hostname \ - kmod-libs ksh libfdisk libnsl2 libpwquality libseccomp libtirpc \ - libutempter lm_sensors-libs make pam procps-ng smartmontools sysstat \ - systemd systemd-pam util-linux xz + kmod-libs ksh libfdisk libseccomp libutempter lm_sensors-libs \ + make procps-ng smartmontools sysstat systemd systemd-pam util-linux xz # Remove dnf cache microdnf clean all