Ever wonder what tables are in your buffer cache and how many pages each
are contributing? Onstat -P too terse and onstat -B too voluminous? Try
this script:
Art S. Kagel
########### CUT HERE ############
#!/usr/bin/ksh
which nawk|fgrep "no nawk in" >/dev/null
if [[ $? = 0 ]]; then
nawk=0;
else
nawk=1;
AWK=nawk;
fi
if [[ $nawk -eq 0 ]]; then
which gawk|fgrep "no gawk in" >/dev/null
if [[ $? = 0 ]]; then
gawk=0;
else
gawk=1;
AWK=gawk;
fi
fi
if [[ $nawk -eq 0 && $gawk -eq 0 ]]; then
echo "nawk or gawk needed to run this script. Try converting it to perl"
echo "with a2p if you do not have either."
exit 1
fi
(
sqlcmd -H -d sysmaster <<EOF
select dbsname, tabname, count(*)||' ' table_count, " " database_count
from sysextents se, sysbufhdr bh
where bh.pagenum between se.start and (se.start + se.size - 1)
group by 1, 2, 4
UNION ALL
select dbsname, " TOTAL:", " " table_count, count(*)||' '
from sysextents se, sysbufhdr bh
where bh.pagenum between se.start and (se.start + se.size - 1)
group by 1, 2, 3
order by 1, 2;EOF
) |$AWK -F\\| '$1=="dbsname"{
gsub("_"," ",$0);
printf "\\n\\n%-18s %-18s %-10s %-10s\\n", toupper($1), toupper($2), toupper($3), toupper($4);
printf "%-18s %-18s %-10s %-10s\\n", "------------------", "------------------", "-----------", "--------------";
next;
}
$3==" "{
printf "%-18s %-18s %10s %10d\\n", $1, " ", " ", $4;
next;
}
$4==" "{
printf "%-18s %-18s %10d\\n", " ", $2, $3;
next;
}'