diff --git a/plugins/localdump/pgsql.sh b/plugins/localdump/pgsql.sh
index 1db2be5f9cb792fee7093a1b1f86a523aadd06df..86ecf86d3727c82ba0673621a7840601d6540988 100755
--- a/plugins/localdump/pgsql.sh
+++ b/plugins/localdump/pgsql.sh
@@ -45,8 +45,12 @@ function pgsql.backup(){
   local snapshotprefix="snapshot_"
   local bUseSnapshot
   local bUseSnapshot4DB
+  local bDisconnect
+  local iHour; 
 
   typeset -i bUseSnapshot=0
+  typeset -i bDisconnect=0
+  typeset -i iHour; iHour=$( date +%H)
 
   create_targetdir
 
@@ -70,6 +74,14 @@ function pgsql.backup(){
     echo "INFO: create database failed for snapshots - dumping databases directly"
   fi
 
+  # disconnect after 21:00 and before 05:00
+  if [ $bUseSnapshot -eq 1 ]; then 
+    if [ $iHour -ge 21 ] || [ $iHour -lt 5 ]; then
+      echo "INFO: clients will be disconnected for snapshot database creation"
+      bDisconnect=1
+    fi
+  fi
+
   sSqlGetDblist="select datname from pg_database where not datistemplate and datallowconn order by datname;"
   for DATABASE in $( su ${PGUSER} -c "psql ${BACKUP_PARAMS} -At -c '$sSqlGetDblist' postgres" 2>/dev/null | grep -v "^$snapshotprefix" )
   do
@@ -86,13 +98,22 @@ function pgsql.backup(){
 
     # drop snapshot db first - just in case
     if [ $bUseSnapshot4DB -eq 1 ]; then 
-      echo -n " snapshot ... "
+      echo -n " snapshot ."
       su ${PGUSER} -c "dropdb ${SNAPSHOTDB}" >/dev/null 2>&1
+      echo -n "."
+      test $bDisconnect -ne 0 && su ${PGUSER} -c "psql ${BACKUP_PARAMS} -c \"
+        SELECT pg_terminate_backend(pg_stat_activity.pid)
+        FROM pg_stat_activity
+        WHERE pg_stat_activity.datname = '${DATABASE}'
+        AND pid <> pg_backend_pid();
+        \"" >/dev/null
+      echo -n "."
       if ! su ${PGUSER} -c "psql ${BACKUP_PARAMS} -c \"CREATE DATABASE ${SNAPSHOTDB} WITH TEMPLATE ${DATABASE};\"" >/dev/null; then
         echo -n "Fallback using origin ... "
         bUseSnapshot4DB=0
         SNAPSHOTDB="${DATABASE}"
       fi
+      echo -n " "
     fi
     if [ $myrc -eq 0 ]; then