Hi all,
I was wondering if there's a way to read the 'onstat -P', i.e. the
'Print partition buffer summary' information from a SMI table? I wrote
a script to print out the contents of the buffers, but it would be
more elegant to be able to do everything on SQL, instead of having to
parse the output of 'onstat -P'.
Here's my current script:
---
#!/usr/bin/perl
$data=`onstat -P | sort -n -k 2`;
@data = split '\\n', $data;
printf "%-25s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\n", "dbname:tabname",
"total", "btree", "data", "other", "dirty", "pages", "% cached";
foreach (@data) {
if ( m/^(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)/ && $1) {
$partnum = $1;
$total = $2;
$btree = $3;
$data = $4;
$other = $5;
$dirty = $6;
$data2 = qx(echo "select trim(systabnames.dbsname) || ':' ||
trim(systabnames.tabname) || ' ' || sum(size)
from systabnames, sysextents where
systabnames.dbsname = sysextents.dbsname and
systabnames.tabname = sysextents.tabname and
partnum=$partnum group by systabnames.dbsname,
systabnames.tabname" | dbaccess sysmaster 2>/dev/null | grep
expression);
@data2 = split '\\n', $data2;
if ( $data2[0] =~ m/expression/ ) {
$data2[0] =~ s/\\(expression\\)\\s+//;
($name, $pages) = split /\\s/, $data2[0];
printf "%-25s\\t%d\\t%d\\t%d\\t%d\\t%d\\t%d\\t%.2f\\n", $name, $total,
$btree, $data, $other, $dirty, $pages, $total/$pages*100;
}
}
}
---
--
Toni