Re: free space
Posted in 1996
>
> Does anyone have any scripts written that will look at a tbstat -d or
> onstat -d , and calculate in mg how much space is available in each> dbspace?
> I get tired of counting pages and I'm having trouble with an awk script
> to do this....
>
> Tks
Here is some awk code for you. You have to set $pcnt_th to be the
threshold you want notfication after. I also have an SPL version of this
for more current engines. Both of these are wrapped into a larger engine
monitor script which is a little out of date at this point so I don't
include it.
cheers
j.
###############################################################################
# Disk usage (alert when dbspace full)
chk_dbsp_fr()
{
onstat -d | awk '
BEGIN { p_flg = 0 }
/Chunks/ {p_flg = 4}
/active,/ {p_flg = 0}
{
if (p_flg > 1) p_flg--
if (p_flg == 1 && $7 != "MO-" ) {
p_free = $6/$5*100
if (p_free < pcnt_th)
printf("Warning: Chunk %d of disk %s is %d percent free\\n",
$2, $8, p_free);
}
}' pcnt_th=$pcnt_th
p_free=""
}
---------------------------------------------------------------
# With this one you pass it a 0, 1 or 2 for differing levels of information.
# 0 = errors only (offline)
# 1 = status
# 2 = config info
DROP PROCEDURE chk_chunk;
CREATE PROCEDURE chk_chunk(wordy SMALLINT)
DEFINE p_cmd CHAR(2000);
DEFINE p_fname CHAR(128);
DEFINE p_chksize INTEGER;
DEFINE p_nfree INTEGER;
DEFINE p_isoff SMALLINT;
DEFINE p_isrec SMALLINT;
DEFINE p_isinc SMALLINT;
DEFINE p_mfname CHAR(128);
DEFINE p_chknum INTEGER;
IF wordy = 0 THEN -- errors only
SELECT fname, mfname
INTO p_fname, p_mfname
FROM syschunks
WHERE is_offline != 0; LET p_cmd = 'echo "Chunk " || p_fname || " is off line. " >> /tmp/DBAwarn';
system p_cmd;
SELECT fname, mfname
INTO p_fname, p_mfname
FROM syschunks
WHERE mis_offline != 0; LET p_cmd = 'echo "Mirror " || p_mfname || " is off line. " >> /tmp/DBAwarn';
system p_cmd;
END IF
IF wordy = 1 THEN -- status only
FOREACH SELECT fname, chksize, nfree, is_offline, is_recovering,
is_inconsistent, mfname, chknum
INTO p_fname, p_chksize, p_nfree, p_isoff, p_isrec, p_isinc, p_mfname,
p_chknum
FROM syschunks
LET p_cmd = 'echo "Chunk : "'|| p_chknum || '\\\\n' ||
'" : "'|| p_fname || '\\\\n' ||
'"Mirror : "'|| p_mfname || '\\\\n' ||
'"Size : "'|| p_chksize || '\\\\n' ||
'"Free : "'|| p_nfree || '\\\\n' ||
'"Offline : "'|| p_isoff || '\\\\n' ||
'"Recovering : "'|| p_isrec || '\\\\n' ||
'"Inconsistent : "'|| p_isinc || '\\\\n\\\\n' ||
'>> /tmp/DBAwarn';
system p_cmd;
END FOREACH
END IF
IF wordy = 2 THEN -- config
FOREACH SELECT fname, chksize, nfree, mfname, chknum
INTO p_fname, p_chksize, p_nfree, p_mfname, p_chknum
FROM syschunks
LET p_cmd = 'echo "Chunk : "'|| p_chknum || '\\\\n' ||
'" : "'|| p_fname || '\\\\n' ||
'"Mirror : "'|| p_mfname || '\\\\n' ||
'"Size : "'|| p_chksize || '\\\\n' ||
'"Free : "'|| p_nfree || '\\\\n\\\\n' ||
'>> /tmp/DBAwarn';
system p_cmd;
END FOREACH
END IF
END PROCEDURE;
--
________________________________________________________________________
Jack Parker - Hewlett Packard, DMD/IS Boise, Idaho, USA
jparker@boi.hp.com Currently on loan to PLD/PE
________________________________________________________________________
Outside of a dog a book is a man's best friend.
Inside of a dog it's too dark to read. (Groucho Marx)
________________________________________________________________________
Any opinions expressed herein are my own and not those of my employers.
________________________________________________________________________