...
Since EXECUTE COUNT obtained by V$sysstat is an accumulated value, to obtain the increase per unit time, the unit time increase value = (last value-previous value) must be calculated.
| Code Block | ||
|---|---|---|
| ||
# gettps.sh
ALTIPID=`ps -ef | grep $USER | grep "bin/altibase -p boot" | grep -v grep | awk '{print $2}'`
MAXCOUNT=3
COUNT=0
INTERVAL=30
LOGFILE=altitps.log
do_getExecuteCount()
{
is -silent <<EOF
set linesize 1024;
set colsize 50;
set feedback off;
set heading off;
select 'RESULT='||( select count(*) from v\$session )
||'=' || ( select count(*) from v\$service_thread )
||'=' || ( select sum(value) from v\$sysstat where name in ( 'execute success count','prepare success count','prepare failure count') )
from dual;
EOF
}
while [ $COUNT -lt $MAXCOUNT ]
do
ALTICPU=`ps -o pcpu -p $ALTIPID | grep -v CPU`
EXECRESULT=`do_getExecuteCount`
SESSIONCNT=`echo $EXECRESULT | grep "RESULT=" | cut -d'=' -f 2| tr -d ' '`
THREADCNT=`echo $EXECRESULT | grep "RESULT=" | cut -d'=' -f 3 | tr -d ' '`
EXECCNT=`echo $EXECRESULT | grep "RESULT=" | cut -d'=' -f 4 | tr -d ' '`
echo `date "+%Y%m%d %H%M%S: CPU USAGE="`$ALTICPU" SESSIONCNT=$SESSIONCNT THREADCNT=$THREADCNT EXECCNT=$EXECCNT"
sleep $INTERVAL
COUNT=`expr $COUNT + 1`
done |
When the above shell script is executed, the following output can be displayed.
| Code Blockpanel |
|---|
$sh gettps.sh 20170203 150253: CPU USAGE= 12.3 SESSIONCNT=208 THREADCNT=16 EXECCNT=181813
150323: CPU USAGE= 24.8 SESSIONCNT=208 THREADCNT=10 EXECCNT=185834
150353: CPU USAGE= 32.1 SESSIONCNT=212 THREADCNT=15 EXECCNT=189865 ...... |
With the above history information, the user will be able to create a history in the form of a table as follows. It is convenient to use the Excel cell calculation formula for the increment per unit time.
...