diff --git a/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/Dockerfile.xe b/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/Dockerfile.xe
index 4e157640ea..99d1ebc1c7 100644
--- a/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/Dockerfile.xe
+++ b/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/Dockerfile.xe
@@ -50,7 +50,8 @@ ENV ORACLE_BASE=/u01/app/oracle \
     CONFIG_RSP="xe.rsp" \
     RUN_FILE="runOracle.sh" \
     PWD_FILE="setPassword.sh" \
-    CHECK_DB_FILE="checkDBStatus.sh"
+    CHECK_DB_FILE="checkDBStatus.sh" \
+    DB_STARTED_MARKER_FILE="/dev/shm/.db_started"
 
 # Use second ENV so that variable get substituted
 ENV PATH=$ORACLE_HOME/bin:$PATH
@@ -89,4 +90,4 @@ RUN yum -y install unzip libaio bc initscripts net-tools openssl compat-libstdc+
 HEALTHCHECK --interval=1m --start-period=5m \
    CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1
 
-CMD exec $ORACLE_BASE/$RUN_FILE
+CMD [ "/bin/bash", "-c", "exec $ORACLE_BASE/$RUN_FILE" ]
diff --git a/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/checkDBStatus.sh
index df473ab922..6316390ca9 100755
--- a/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/checkDBStatus.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/checkDBStatus.sh
@@ -12,7 +12,13 @@
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 # 
 
+if [ "$IGNORE_DB_STARTED_MARKER" != true ] && [ ! -f "$DB_STARTED_MARKER_FILE" ]; then
+   echo "Database was not started yet." >&2
+   exit 1
+fi
+
 POSITIVE_RETURN="OPEN"
+# shellcheck disable=SC2034
 ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`"
 
 # Check Oracle DB status and store it in status
diff --git a/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/runOracle.sh
old mode 100644
new mode 100755
index babd0235c0..7b9d4a7fc6
--- a/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/runOracle.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/runOracle.sh
@@ -19,7 +19,11 @@ function runUserScripts {
   
     for f in $SCRIPTS_ROOT/*; do
         case "$f" in
-            *.sh)     echo "$0: running $f"; . "$f" ;;
+            *.sh)
+              echo "$0: running $f"
+              # shellcheck disable=SC1090
+              . "$f"
+              ;;
             *.sql)    echo "$0: running $f"; echo "exit" | su -p oracle -c "$ORACLE_HOME/bin/sqlplus / as sysdba @$f"; echo ;;
             *)        echo "$0: ignoring $f" ;;
         esac
@@ -175,7 +179,7 @@ fi;
 /etc/init.d/oracle-xe start | grep -qc "Oracle Database 11g Express Edition is not configured"
 if [ "$?" == "0" ]; then
    # Check whether container has enough memory
-   if [ `df -Pk /dev/shm | tail -n 1 | awk '{print $2}'` -lt 1048576 ]; then
+   if [ "`df -Pk /dev/shm | tail -n 1 | awk '{print $2}'`" -lt 1048576 ]; then
       echo "Error: The container doesn't have enough memory allocated."
       echo "A database XE container needs at least 1 GB of shared memory (/dev/shm)."
       echo "You currently only have $((`df -Pk /dev/shm | tail -n 1 | awk '{print $2}'`/1024)) MB allocated to the container."
@@ -190,7 +194,7 @@ if [ "$?" == "0" ]; then
 fi;
 
 # Check whether database is up and running
-$ORACLE_BASE/$CHECK_DB_FILE
+IGNORE_DB_STARTED_MARKER=true $ORACLE_BASE/$CHECK_DB_FILE
 if [ $? -eq 0 ]; then
   echo "#########################"
   echo "DATABASE IS READY TO USE!"
@@ -199,6 +203,8 @@ if [ $? -eq 0 ]; then
   # Execute custom provided startup scripts
   runUserScripts $ORACLE_BASE/scripts/startup
 
+  # Create marker file for the health check
+  touch "$DB_STARTED_MARKER_FILE"
 else
   echo "#####################################"
   echo "########### E R R O R ###############"
diff --git a/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/Dockerfile.ee b/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/Dockerfile.ee
index 82e80ec245..96e3d0439e 100644
--- a/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/Dockerfile.ee
+++ b/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/Dockerfile.ee
@@ -52,6 +52,7 @@ ENV ORACLE_BASE=/opt/oracle \
     SETUP_LINUX_FILE="setupLinuxEnv.sh" \
     CHECK_SPACE_FILE="checkSpace.sh" \
     CHECK_DB_FILE="checkDBStatus.sh" \
+    DB_STARTED_MARKER_FILE="/dev/shm/.db_started" \
     USER_SCRIPTS_FILE="runUserScripts.sh" \
     INSTALL_DB_BINARIES_FILE="installDBBinaries.sh"
 
@@ -119,4 +120,4 @@ HEALTHCHECK --interval=1m --start-period=5m \
    CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1
 
 # Define default command to start Oracle Database. 
-CMD exec $ORACLE_BASE/$RUN_FILE
+CMD [ "/bin/bash", "-c", "exec $ORACLE_BASE/$RUN_FILE" ]
diff --git a/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/Dockerfile.se2 b/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/Dockerfile.se2
index 28e8c126f7..2b601ed286 100644
--- a/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/Dockerfile.se2
+++ b/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/Dockerfile.se2
@@ -52,6 +52,7 @@ ENV ORACLE_BASE=/opt/oracle \
     SETUP_LINUX_FILE="setupLinuxEnv.sh" \
     CHECK_SPACE_FILE="checkSpace.sh" \
     CHECK_DB_FILE="checkDBStatus.sh" \
+    DB_STARTED_MARKER_FILE="/dev/shm/.db_started" \
     USER_SCRIPTS_FILE="runUserScripts.sh" \
     INSTALL_DB_BINARIES_FILE="installDBBinaries.sh"
 
@@ -119,4 +120,4 @@ HEALTHCHECK --interval=1m --start-period=5m \
    CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1
 
 # Define default command to start Oracle Database. 
-CMD exec $ORACLE_BASE/$RUN_FILE
+CMD [ "/bin/bash", "-c", "exec $ORACLE_BASE/$RUN_FILE" ]
diff --git a/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/checkDBStatus.sh
index a96fe77e91..0b61e3ac8e 100755
--- a/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/checkDBStatus.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/checkDBStatus.sh
@@ -12,9 +12,17 @@
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 # 
 
+if [ "$IGNORE_DB_STARTED_MARKER" != true ] && [ ! -f "$DB_STARTED_MARKER_FILE" ]; then
+   echo "Database was not started yet." >&2
+   exit 1
+fi
+
+# shellcheck disable=SC2034
 ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`"
 OPEN_MODE="READ WRITE"
+# shellcheck disable=SC2034
 ORAENV_ASK=NO
+# shellcheck disable=SC1090
 source oraenv
 
 # Check Oracle at least one PDB has open_mode "READ WRITE" and store it in status
diff --git a/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/runOracle.sh
index cb94a9f00f..dd5c4dee85 100755
--- a/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/runOracle.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/12.1.0.2/runOracle.sh
@@ -178,7 +178,7 @@ else
 fi;
 
 # Check whether database is up and running
-$ORACLE_BASE/$CHECK_DB_FILE
+IGNORE_DB_STARTED_MARKER=true $ORACLE_BASE/$CHECK_DB_FILE
 if [ $? -eq 0 ]; then
   echo "#########################"
   echo "DATABASE IS READY TO USE!"
@@ -187,6 +187,8 @@ if [ $? -eq 0 ]; then
   # Execute custom provided startup scripts
   $ORACLE_BASE/$USER_SCRIPTS_FILE $ORACLE_BASE/scripts/startup
   
+  # Create marker file for the health check
+  touch "$DB_STARTED_MARKER_FILE"
 else
   echo "#####################################"
   echo "########### E R R O R ###############"
diff --git a/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/Dockerfile b/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/Dockerfile
index 71df07b58f..f67540b72d 100644
--- a/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/Dockerfile
+++ b/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/Dockerfile
@@ -46,6 +46,7 @@ ENV ORACLE_BASE=/opt/oracle \
     RUN_FILE="runOracle.sh" \
     START_FILE="startDB.sh" \
     CREATE_DB_FILE="createDB.sh" \
+    DB_STARTED_MARKER_FILE="/dev/shm/.db_started" \
     SETUP_LINUX_FILE="setupLinuxEnv.sh" \
     CHECK_SPACE_FILE="checkSpace.sh" \
     CHECK_DB_FILE="checkDBStatus.sh" \
@@ -116,4 +117,4 @@ HEALTHCHECK --interval=1m --start-period=5m \
    CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1
 
 # Define default command to start Oracle Database. 
-CMD exec $ORACLE_BASE/$RUN_FILE
+CMD [ "/bin/bash", "-c", "exec $ORACLE_BASE/$RUN_FILE" ]
diff --git a/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/checkDBStatus.sh
index a96fe77e91..0b61e3ac8e 100755
--- a/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/checkDBStatus.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/checkDBStatus.sh
@@ -12,9 +12,17 @@
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 # 
 
+if [ "$IGNORE_DB_STARTED_MARKER" != true ] && [ ! -f "$DB_STARTED_MARKER_FILE" ]; then
+   echo "Database was not started yet." >&2
+   exit 1
+fi
+
+# shellcheck disable=SC2034
 ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`"
 OPEN_MODE="READ WRITE"
+# shellcheck disable=SC2034
 ORAENV_ASK=NO
+# shellcheck disable=SC1090
 source oraenv
 
 # Check Oracle at least one PDB has open_mode "READ WRITE" and store it in status
diff --git a/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/runOracle.sh
index cb94a9f00f..dd5c4dee85 100755
--- a/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/runOracle.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1/runOracle.sh
@@ -178,7 +178,7 @@ else
 fi;
 
 # Check whether database is up and running
-$ORACLE_BASE/$CHECK_DB_FILE
+IGNORE_DB_STARTED_MARKER=true $ORACLE_BASE/$CHECK_DB_FILE
 if [ $? -eq 0 ]; then
   echo "#########################"
   echo "DATABASE IS READY TO USE!"
@@ -187,6 +187,8 @@ if [ $? -eq 0 ]; then
   # Execute custom provided startup scripts
   $ORACLE_BASE/$USER_SCRIPTS_FILE $ORACLE_BASE/scripts/startup
   
+  # Create marker file for the health check
+  touch "$DB_STARTED_MARKER_FILE"
 else
   echo "#####################################"
   echo "########### E R R O R ###############"
diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile
index 608cb49f12..5329e903c5 100644
--- a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile
+++ b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/Dockerfile
@@ -49,6 +49,7 @@ ENV ORACLE_BASE=/opt/oracle \
     SETUP_LINUX_FILE="setupLinuxEnv.sh" \
     CHECK_SPACE_FILE="checkSpace.sh" \
     CHECK_DB_FILE="checkDBStatus.sh" \
+    DB_STARTED_MARKER_FILE="/dev/shm/.db_started" \
     USER_SCRIPTS_FILE="runUserScripts.sh" \
     INSTALL_DB_BINARIES_FILE="installDBBinaries.sh"
 
@@ -116,4 +117,4 @@ HEALTHCHECK --interval=1m --start-period=5m \
    CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1
 
 # Define default command to start Oracle Database. 
-CMD exec $ORACLE_BASE/$RUN_FILE
+CMD [ "/bin/bash", "-c", "exec $ORACLE_BASE/$RUN_FILE" ]
diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/checkDBStatus.sh
index a96fe77e91..0b61e3ac8e 100755
--- a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/checkDBStatus.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/checkDBStatus.sh
@@ -12,9 +12,17 @@
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 # 
 
+if [ "$IGNORE_DB_STARTED_MARKER" != true ] && [ ! -f "$DB_STARTED_MARKER_FILE" ]; then
+   echo "Database was not started yet." >&2
+   exit 1
+fi
+
+# shellcheck disable=SC2034
 ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`"
 OPEN_MODE="READ WRITE"
+# shellcheck disable=SC2034
 ORAENV_ASK=NO
+# shellcheck disable=SC1090
 source oraenv
 
 # Check Oracle at least one PDB has open_mode "READ WRITE" and store it in status
diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/runOracle.sh
index 00b81a5db5..56b21eb2ac 100755
--- a/OracleDatabase/SingleInstance/dockerfiles/18.3.0/runOracle.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/18.3.0/runOracle.sh
@@ -178,7 +178,7 @@ else
 fi;
 
 # Check whether database is up and running
-$ORACLE_BASE/$CHECK_DB_FILE
+IGNORE_DB_STARTED_MARKER=true $ORACLE_BASE/$CHECK_DB_FILE
 if [ $? -eq 0 ]; then
   echo "#########################"
   echo "DATABASE IS READY TO USE!"
@@ -187,6 +187,8 @@ if [ $? -eq 0 ]; then
   # Execute custom provided startup scripts
   $ORACLE_BASE/$USER_SCRIPTS_FILE $ORACLE_BASE/scripts/startup
   
+  # Create marker file for the health check
+  touch "$DB_STARTED_MARKER_FILE"
 else
   echo "#####################################"
   echo "########### E R R O R ###############"
diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe
index 4b20089f5f..eb60ffe019 100644
--- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe
+++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/Dockerfile.xe
@@ -81,4 +81,4 @@ RUN chmod ug+x $INSTALL_DIR/*.sh && \
 HEALTHCHECK --interval=1m --start-period=5m \
    CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1
 
-CMD exec $ORACLE_BASE/$RUN_FILE
+CMD [ "/bin/bash", "-c", "exec $ORACLE_BASE/$RUN_FILE" ]
diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh
index ba803718e7..d8ee075c94 100755
--- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/checkDBStatus.sh
@@ -12,9 +12,17 @@
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
 
+if [ "$IGNORE_DB_STARTED_MARKER" != true ] && [ ! -f "$DB_STARTED_MARKER_FILE" ]; then
+   echo "Database was not started yet." >&2
+   exit 1
+fi
+
+# shellcheck disable=SC2034
 ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`"
 OPEN_MODE="READ WRITE"
+# shellcheck disable=SC2034
 ORAENV_ASK=NO
+# shellcheck disable=SC1090
 source oraenv
 
 [ -f "$ORACLE_BASE/oradata/dbconfig/$ORACLE_SID/oratab" ] || exit 1;
diff --git a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh
old mode 100644
new mode 100755
index fbff9cf649..645cf72f7f
--- a/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/18.4.0/runOracle.sh
@@ -19,7 +19,11 @@ function runUserScripts {
   
     for f in $SCRIPTS_ROOT/*; do
         case "$f" in
-            *.sh)     echo "$0: running $f"; . "$f" ;;
+            *.sh)
+              echo "$0: running $f"
+              # shellcheck disable=SC1090
+              . "$f"
+              ;;
             *.sql)    echo "$0: running $f"; echo "exit" | su -p oracle -c "$ORACLE_HOME/bin/sqlplus / as sysdba @$f"; echo ;;
             *)        echo "$0: ignoring $f" ;;
         esac
@@ -201,7 +205,7 @@ if [ "$?" == "0" ]; then
 fi;
 
 # Check whether database is up and running
-$ORACLE_BASE/$CHECK_DB_FILE
+IGNORE_DB_STARTED_MARKER=true $ORACLE_BASE/$CHECK_DB_FILE
 if [ $? -eq 0 ]; then
   echo "#########################"
   echo "DATABASE IS READY TO USE!"
@@ -210,6 +214,8 @@ if [ $? -eq 0 ]; then
   # Execute custom provided startup scripts
   runUserScripts $ORACLE_BASE/scripts/startup
 
+  # Create marker file for the health check
+  touch "$DB_STARTED_MARKER_FILE"
 else
   echo "#####################################"
   echo "########### E R R O R ###############"
diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile
index 04c2704694..e1695ed48b 100644
--- a/OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile
+++ b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/Dockerfile
@@ -56,6 +56,7 @@ ENV ORACLE_BASE=/opt/oracle \
     SETUP_LINUX_FILE="setupLinuxEnv.sh" \
     CHECK_SPACE_FILE="checkSpace.sh" \
     CHECK_DB_FILE="checkDBStatus.sh" \
+    DB_STARTED_MARKER_FILE="/dev/shm/.db_started" \
     USER_SCRIPTS_FILE="runUserScripts.sh" \
     INSTALL_DB_BINARIES_FILE="installDBBinaries.sh" \
     RELINK_BINARY_FILE="relinkOracleBinary.sh" \
diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.3.0/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/checkDBStatus.sh
index 1743029a4d..fb2ef372c1 100755
--- a/OracleDatabase/SingleInstance/dockerfiles/19.3.0/checkDBStatus.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/checkDBStatus.sh
@@ -73,17 +73,26 @@ EOF
 ################ MAIN #######################
 #############################################
 
+if [ "$IGNORE_DB_STARTED_MARKER" != true ] && [ ! -f "$DB_STARTED_MARKER_FILE" ]; then
+   echo "Database was not started yet." >&2
+   exit 1
+fi
+
 # Setting up ORACLE_PWD if podman secret is passed on
  if [ -e '/run/secrets/oracle_pwd' ]; then
-    export ORACLE_PWD="$(cat '/run/secrets/oracle_pwd')"
+    ORACLE_PWD="$(cat '/run/secrets/oracle_pwd')"
+    export ORACLE_PWD
  fi
 
 if [ "$DG_OBSERVER_ONLY" = "true" ]; then
    checkObserver
 else
+   # shellcheck disable=SC2034
    ORACLE_SID="$(grep "$ORACLE_HOME" /etc/oratab | cut -d: -f1)"
    DB_ROLE=""
+   # shellcheck disable=SC2034
    ORAENV_ASK=NO
+   # shellcheck disable=SC1090
    source oraenv
    checkDatabaseRole
    checkPDBOpen
diff --git a/OracleDatabase/SingleInstance/dockerfiles/19.3.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/runOracle.sh
index 2a5bcc2908..8297e3ac1d 100755
--- a/OracleDatabase/SingleInstance/dockerfiles/19.3.0/runOracle.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/19.3.0/runOracle.sh
@@ -22,7 +22,9 @@ function moveFiles {
    mv "$ORACLE_HOME"/network/admin/sqlnet.ora "$ORACLE_BASE"/oradata/dbconfig/"$ORACLE_SID"/
    mv "$ORACLE_HOME"/network/admin/listener.ora "$ORACLE_BASE"/oradata/dbconfig/"$ORACLE_SID"/
    mv "$ORACLE_HOME"/network/admin/tnsnames.ora "$ORACLE_BASE"/oradata/dbconfig/"$ORACLE_SID"/
-   mv "$ORACLE_HOME"/install/.docker_* "$ORACLE_BASE"/oradata/dbconfig/"$ORACLE_SID"/
+   if [ -n "$(shopt -s nullglob; echo "$ORACLE_HOME"/install/.docker_*)" ]; then
+      mv "$ORACLE_HOME"/install/.docker_* "$ORACLE_BASE"/oradata/dbconfig/"$ORACLE_SID"/
+   fi;
 
    # oracle user does not have permissions in /etc, hence cp and not mv
    cp /etc/oratab "$ORACLE_BASE"/oradata/dbconfig/"$ORACLE_SID"/
@@ -272,7 +274,7 @@ else
   "$ORACLE_BASE"/"$CREATE_DB_FILE" "$ORACLE_SID" "$ORACLE_PDB" "$ORACLE_PWD" || exit 1;
 
   # Check whether database is successfully created
-  if "$ORACLE_BASE"/"$CHECK_DB_FILE"; then
+  if IGNORE_DB_STARTED_MARKER=true "$ORACLE_BASE"/"$CHECK_DB_FILE"; then
     # Create a checkpoint file if database is successfully created
     # Populate the checkpoint file with the current date to avoid timing issue when using NFS persistence in multi-replica mode
     date -Iseconds > "$ORACLE_BASE"/oradata/."${ORACLE_SID}""${CHECKPOINT_FILE_EXTN}"
@@ -295,7 +297,7 @@ else
 fi;
 
 # Check whether database is up and running
-"$ORACLE_BASE"/"$CHECK_DB_FILE"
+IGNORE_DB_STARTED_MARKER=true "$ORACLE_BASE"/"$CHECK_DB_FILE"
 status=$?
 
 if [ $status -eq 0 ]; then
@@ -308,6 +310,8 @@ if [ $status -eq 0 ]; then
   # Execute custom provided startup scripts
   "$ORACLE_BASE"/"$USER_SCRIPTS_FILE" "$ORACLE_BASE"/scripts/startup
   
+  # Create marker file for the health check
+  touch "$DB_STARTED_MARKER_FILE"
 else
   echo "#####################################"
   echo "########### E R R O R ###############"
diff --git a/OracleDatabase/SingleInstance/dockerfiles/21.3.0/Dockerfile b/OracleDatabase/SingleInstance/dockerfiles/21.3.0/Dockerfile
index 0ba206efc3..f9f6b2f8f3 100644
--- a/OracleDatabase/SingleInstance/dockerfiles/21.3.0/Dockerfile
+++ b/OracleDatabase/SingleInstance/dockerfiles/21.3.0/Dockerfile
@@ -55,6 +55,7 @@ ENV ORACLE_BASE=/opt/oracle \
     SETUP_LINUX_FILE="setupLinuxEnv.sh" \
     CHECK_SPACE_FILE="checkSpace.sh" \
     CHECK_DB_FILE="checkDBStatus.sh" \
+    DB_STARTED_MARKER_FILE="/dev/shm/.db_started" \
     USER_SCRIPTS_FILE="runUserScripts.sh" \
     INSTALL_DB_BINARIES_FILE="installDBBinaries.sh" \
     RELINK_BINARY_FILE="relinkOracleBinary.sh" \
@@ -139,4 +140,4 @@ HEALTHCHECK --interval=1m --start-period=5m --timeout=30s \
    CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1
 
 # Define default command to start Oracle Database. 
-CMD exec $ORACLE_BASE/$RUN_FILE
+CMD [ "/bin/bash", "-c", "exec $ORACLE_BASE/$RUN_FILE" ]
diff --git a/OracleDatabase/SingleInstance/dockerfiles/21.3.0/Dockerfile.xe b/OracleDatabase/SingleInstance/dockerfiles/21.3.0/Dockerfile.xe
index 34c16357dc..ffb8fe7a1b 100644
--- a/OracleDatabase/SingleInstance/dockerfiles/21.3.0/Dockerfile.xe
+++ b/OracleDatabase/SingleInstance/dockerfiles/21.3.0/Dockerfile.xe
@@ -47,6 +47,7 @@ ENV ORACLE_BASE=/opt/oracle \
     CONF_FILE="oracle-xe-21c.conf" \
     CHECK_SPACE_FILE="checkSpace.sh" \
     CHECK_DB_FILE="checkDBStatus.sh" \
+    DB_STARTED_MARKER_FILE="/dev/shm/.db_started" \
     SETUP_LINUX_FILE="setupLinuxEnv.sh" \
     CONFIG_TCPS_FILE="configTcps.sh" \
     INSTALL_DIR="$HOME/install" \
@@ -90,4 +91,4 @@ WORKDIR /home/oracle
 HEALTHCHECK --interval=1m --start-period=5m --timeout=30s \
    CMD "$ORACLE_BASE/$CHECK_DB_FILE" >/dev/null || exit 1
 
-CMD [ "/bin/bash", "-c", "$ORACLE_BASE/$RUN_FILE" ]
+CMD [ "/bin/bash", "-c", "exec $ORACLE_BASE/$RUN_FILE" ]
diff --git a/OracleDatabase/SingleInstance/dockerfiles/21.3.0/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/21.3.0/checkDBStatus.sh
old mode 100644
new mode 100755
index 26e5e2a7e9..81a7b0a1ff
--- a/OracleDatabase/SingleInstance/dockerfiles/21.3.0/checkDBStatus.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/21.3.0/checkDBStatus.sh
@@ -73,9 +73,15 @@ EOF
 ################ MAIN #######################
 #############################################
 
+if [ "$IGNORE_DB_STARTED_MARKER" != true ] && [ ! -f "$DB_STARTED_MARKER_FILE" ]; then
+   echo "Database was not started yet." >&2
+   exit 1
+fi
+
 # Setting up ORACLE_PWD if podman secret is passed on
 if [ -e '/run/secrets/oracle_pwd' ]; then
-   export ORACLE_PWD="$(cat '/run/secrets/oracle_pwd')"
+   ORACLE_PWD="$(cat '/run/secrets/oracle_pwd')"
+   export ORACLE_PWD
 fi
 
 # Sanitizing env for XE Database
@@ -88,7 +94,9 @@ if [ "$DG_OBSERVER_ONLY" = "true" ]; then
 else
    ORACLE_SID="$(grep "$ORACLE_HOME" /etc/oratab | cut -d: -f1)"
    DB_ROLE=""
+   # shellcheck disable=SC2034
    ORAENV_ASK=NO
+   # shellcheck disable=SC1090
    source oraenv
    checkDatabaseRole
    checkPDBOpen
diff --git a/OracleDatabase/SingleInstance/dockerfiles/21.3.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/21.3.0/runOracle.sh
old mode 100644
new mode 100755
index c8f1d734a7..d0b1ff99eb
--- a/OracleDatabase/SingleInstance/dockerfiles/21.3.0/runOracle.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/21.3.0/runOracle.sh
@@ -22,7 +22,7 @@ function moveFiles {
    mv "$ORACLE_BASE_HOME"/network/admin/sqlnet.ora "$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"/
-   if [ -a "$ORACLE_HOME"/install/.docker_* ]; then
+   if [ -n "$(shopt -s nullglob; echo "$ORACLE_HOME"/install/.docker_*)" ]; then
       mv "$ORACLE_HOME"/install/.docker_* "$ORACLE_BASE"/oradata/dbconfig/"$ORACLE_SID"/
    fi;
 
@@ -170,7 +170,8 @@ fi;
 
 # Setting up ORACLE_PWD if podman secret is passed on
 if [ -e '/run/secrets/oracle_pwd' ]; then
-   export ORACLE_PWD="$(cat '/run/secrets/oracle_pwd')"
+   ORACLE_PWD="$(cat '/run/secrets/oracle_pwd')"
+   export ORACLE_PWD
 fi
 
 # Sanitizing env for XE
@@ -230,6 +231,7 @@ export ORACLE_CHARACTERSET=${ORACLE_CHARACTERSET:-AL32UTF8}
 
 # Call relinkOracleBinary.sh before the database is created or started
 if [ "${ORACLE_SID}" != "XE" ]; then
+   # shellcheck disable=SC1090
    source "$ORACLE_BASE/$RELINK_BINARY_FILE"
 fi;
 
@@ -280,7 +282,7 @@ else
   "$ORACLE_BASE"/"$CREATE_DB_FILE" $ORACLE_SID "$ORACLE_PDB" "$ORACLE_PWD" || exit 1;
 
   # Check whether database is successfully created
-  if "$ORACLE_BASE"/"$CHECK_DB_FILE"; then
+  if IGNORE_DB_STARTED_MARKER=true "$ORACLE_BASE"/"$CHECK_DB_FILE"; then
     # Create a checkpoint file if database is successfully created
     # Populate the checkpoint file with the current date to avoid timing issue when using NFS persistence in multi-replica mode
     echo "$(date -Iseconds)" > "$ORACLE_BASE"/oradata/.${ORACLE_SID}"${CHECKPOINT_FILE_EXTN}"
@@ -303,7 +305,7 @@ else
 fi;
 
 # Check whether database is up and running
-"$ORACLE_BASE"/"$CHECK_DB_FILE"
+IGNORE_DB_STARTED_MARKER=true "$ORACLE_BASE"/"$CHECK_DB_FILE"
 status=$?
 
 # Check whether database is up and running
@@ -317,7 +319,9 @@ if [ $status -eq 0 ]; then
 
   # Execute custom provided startup scripts
   "$ORACLE_BASE"/"$USER_SCRIPTS_FILE" "$ORACLE_BASE"/scripts/startup
-  
+
+  # Create marker file for the health check
+  touch "$DB_STARTED_MARKER_FILE"
 else
   echo "#####################################"
   echo "########### E R R O R ###############"
diff --git a/OracleDatabase/SingleInstance/dockerfiles/23.6.0/Containerfile.free b/OracleDatabase/SingleInstance/dockerfiles/23.6.0/Containerfile.free
index c9cf5a1be3..149db15568 100644
--- a/OracleDatabase/SingleInstance/dockerfiles/23.6.0/Containerfile.free
+++ b/OracleDatabase/SingleInstance/dockerfiles/23.6.0/Containerfile.free
@@ -46,6 +46,7 @@ ENV ORACLE_BASE=/opt/oracle \
     CONF_FILE="oracle-free-23ai.conf" \
     CHECK_SPACE_FILE="checkSpace.sh" \
     CHECK_DB_FILE="checkDBStatus.sh" \
+    DB_STARTED_MARKER_FILE="/dev/shm/.db_started" \
     SETUP_LINUX_FILE="setupLinuxEnv.sh" \
     DECRYPT_PWD_FILE="decryptPassword.sh" \
     CONFIG_TCPS_FILE="configTcps.sh" \
@@ -118,4 +119,4 @@ HEALTHCHECK --interval=1m --start-period=5m --timeout=30s \
 
 EXPOSE 1521/tcp
 
-CMD [ "/bin/bash", "-c", "$ORACLE_BASE/$RUN_FILE" ]
+CMD [ "/bin/bash", "-c", "exec $ORACLE_BASE/$RUN_FILE" ]
diff --git a/OracleDatabase/SingleInstance/dockerfiles/23.6.0/checkDBStatus.sh b/OracleDatabase/SingleInstance/dockerfiles/23.6.0/checkDBStatus.sh
index e66feeb655..6f643c8b87 100755
--- a/OracleDatabase/SingleInstance/dockerfiles/23.6.0/checkDBStatus.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/23.6.0/checkDBStatus.sh
@@ -77,6 +77,11 @@ EOF
 ################ MAIN #######################
 #############################################
 
+if [ "$IGNORE_DB_STARTED_MARKER" != true ] && [ ! -f "$DB_STARTED_MARKER_FILE" ]; then
+   echo "Database was not started yet." >&2
+   exit 1
+fi
+
 ORACLE_PWD=$($ORACLE_BASE/$DECRYPT_PWD_FILE)
 export ORACLE_PWD
 
@@ -92,7 +97,7 @@ else
    DB_ROLE=""
    # shellcheck disable=SC2034
    ORAENV_ASK=NO
-   # shellcheck source=/dev/null
+   # shellcheck disable=SC1090
    source oraenv
    checkDatabaseRole
    checkPDBOpen
diff --git a/OracleDatabase/SingleInstance/dockerfiles/23.6.0/runOracle.sh b/OracleDatabase/SingleInstance/dockerfiles/23.6.0/runOracle.sh
index 275f68735a..fe1ba5703b 100755
--- a/OracleDatabase/SingleInstance/dockerfiles/23.6.0/runOracle.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/23.6.0/runOracle.sh
@@ -222,7 +222,7 @@ export ORACLE_CHARACTERSET=${ORACLE_CHARACTERSET:-AL32UTF8}
 
 # Call relinkOracleBinary.sh before the database is created or started
 if [ "${ORACLE_SID}" != "FREE" ]; then
-   # shellcheck source=/dev/null
+   # shellcheck disable=SC1090
    source "$ORACLE_BASE/$RELINK_BINARY_FILE"
 fi;
 
@@ -273,7 +273,7 @@ else
   "$ORACLE_BASE"/"$CREATE_DB_FILE" $ORACLE_SID "$ORACLE_PDB" "$ORACLE_PWD" || exit 1;
 
    for i in 1 2 4 8; do
-      "$ORACLE_BASE"/"$CHECK_DB_FILE";
+      IGNORE_DB_STARTED_MARKER=true "$ORACLE_BASE"/"$CHECK_DB_FILE";
       ret=$?
       # Check whether database is successfully created
       if [ $ret -eq 0 ]; then
@@ -308,7 +308,7 @@ fi;
 
 for i in 1 2 4 8; do
    # Check whether database is up and running
-   "$ORACLE_BASE"/"$CHECK_DB_FILE"
+   IGNORE_DB_STARTED_MARKER=true "$ORACLE_BASE"/"$CHECK_DB_FILE"
    status=$?
    if [ $status -eq 5 ]; then
       # PDB is in mounted state
@@ -331,6 +331,8 @@ if [ $status -eq 0 ]; then
   # Execute custom provided startup scripts
   "$ORACLE_BASE"/"$USER_SCRIPTS_FILE" "$ORACLE_BASE"/scripts/startup
   
+  # Create marker file for the health check
+  touch "$DB_STARTED_MARKER_FILE"
 else
   echo "#####################################"
   echo "########### E R R O R ###############"
diff --git a/OracleDatabase/SingleInstance/dockerfiles/23.6.0/runUserScripts.sh b/OracleDatabase/SingleInstance/dockerfiles/23.6.0/runUserScripts.sh
index 6b2db24f14..9686e00dd5 100755
--- a/OracleDatabase/SingleInstance/dockerfiles/23.6.0/runUserScripts.sh
+++ b/OracleDatabase/SingleInstance/dockerfiles/23.6.0/runUserScripts.sh
@@ -27,7 +27,7 @@ if [ -d "$SCRIPTS_ROOT" ] && [ -n "$(ls -A "$SCRIPTS_ROOT")" ]; then
   for f in "$SCRIPTS_ROOT"/*; do
       case "$f" in
           *.sh)     echo "$0: running $f"; 
-                    # shellcheck source=/dev/null
+                    # shellcheck disable=SC1090
                     . "$f" ;;
           *.sql)    echo "$0: running $f"; echo "exit" | "$ORACLE_HOME"/bin/sqlplus -s "/ as sysdba" @"$f"; echo ;;
           *)        echo "$0: ignoring $f" ;;