diff --git a/check_mysqlserver b/check_mysqlserver
index f135b4d23ea4f9f3aba6e7b35f377999cdc50539..5a9912d98efbfc27d6fb48653bfc8e1683aa8e15 100755
--- a/check_mysqlserver
+++ b/check_mysqlserver
@@ -12,13 +12,19 @@
 # - execute check_mysqlserver -i
 #
 # ----------------------------------------------------------------------
+#
+# for mysql query cache:
+#   https://www.techpaste.com/2013/01/query-cache-mysql-server/
+#
+# ----------------------------------------------------------------------
 # 2020-08-xx  v0.0  <axel.hahn@iml.unibe.ch>
-# 2021-06-08  v0.0  <axel.hahn@iml.unibe.ch>  update HOME .. better implement a param and ENV var
+# 2021-06-08  v0.1  <axel.hahn@iml.unibe.ch>  update HOME .. better implement a param and ENV var
+# 2021-06-24  v0.2  <axel.hahn@iml.unibe.ch>  check if query cache is enabled as a shared function
 # ======================================================================
 
 
 . `dirname $0`/inc_pluginfunctions
-_version="0.1"
+_version="0.2"
 
 # --- set HOME
 # HOME=/etc/icinga2-passive-client
@@ -98,6 +104,7 @@ EOF
     fi
 }
 
+# show usage
 function _usage(){
     cat <<EOH
 ______________________________________________________________________
@@ -178,6 +185,13 @@ function _mysqlrenderdelta() {
     test -z $deltaUnit && deltaUnit="sec"
     _mysqlrendervar "$1" "$2" $deltaUnit $4
 }
+
+# helper function for caching checks
+# The function aborts the check 
+function _verify_cache(){
+    _mysqlgetvar "have_query_cache" | grep "YES" >/dev/null || ph.abort "Query cache (have_query_cache) is not active"
+    _mysqlgetvar "query_cache_type" | grep "OFF" >/dev/null && ph.abort "Query cache (have_query_cache) is active but query_cache_type is OFF"
+}
 # ----------------------------------------------------------------------
 # MAIN
 # ----------------------------------------------------------------------
@@ -286,14 +300,14 @@ case "${sMode}" in
 
     "qcache-blocks")
         descr="query cache blocks"
-        _mysqlgetvar "have_query_cache" | grep "YES" >/dev/null || ph.abort "Query cache is not active"
+        _verify_cache
         _mysqlrendervar    Qcache_total_blocks "Qcache_"
         _mysqlrendervar    Qcache_free_blocks  "Qcache_"
         ;;
 
     "qcache-queries")
         descr="query cache data"
-        _mysqlgetvar "have_query_cache" | grep "YES" >/dev/null || ph.abort "Query cache is not active"
+        _verify_cache
         _mysqlrendervar    Qcache_queries_in_cache  "Qcache_"
         _mysqlrenderdelta  Qcache_not_cached        "Qcache_"  min  float
         _mysqlrenderdelta  Qcache_lowmem_prunes     "Qcache_"  min  float
@@ -301,7 +315,7 @@ case "${sMode}" in
 
     "qcache-hits")
         descr="query cache hits"
-        _mysqlgetvar "have_query_cache" | grep "YES" >/dev/null || ph.abort "Query cache is not active"
+        _verify_cache
         _mysqlrenderdelta  Qcache_hits        "Qcache_"  min
         _mysqlrenderdelta  Qcache_inserts     "Qcache_"  min
         _mysqlrenderdelta  Qcache_not_cached  "Qcache_"  min