You don't escape the spaces when you already quoted them, otherwise the backslashes will be taken literally:
base_dir="/backups/system\ db\ files/temp"
should be
base_dir="/backups/system db files/temp"
Also why do you have _ in ${filename_base_} ?
Your last command should have probably worked if everything else was correct:
counter=$(ls "${sub_dir}/${filename_base}"202203*.tar.gz | wc -l)
Anyways, you should not parse ls.
Rather use find:
find "${sub_dir}" -name "${filename_base}202203*.tar.gz" -printf '.' | wc -c
or an array:
shopt -s nullglob
files=("${sub_dir}/${filename_base}"202203*.tar.gz)
echo "${#files[@]}"
You need the nullglob option, otherwise the result will be 1 if no files match your pattern as the string is then taken literally.