ITPub博客

首页 > 数据库 > Oracle > sysstatgar.sh 收集数据库指标信息脚本

sysstatgar.sh 收集数据库指标信息脚本

原创 Oracle 作者:hurp_oracle 时间:2015-12-18 11:30:51 0 删除 编辑
#!/bin/sh
#
# sysstatgar.sh, Gather  system v$sysstat details .
#  sh sysstatgar.sh SERVICE_IP

if [ $# -ne 1 ]; then
 echo "Usage: sh sysstatgar.sh SERVICE_IP"
 exit 1;
fi

BASE_HOME=`/usr/bin/dirname "$0"`
. ~/.profile

# Log To LogFile
MLOGFILE=${BASE_HOME}/`hostname`_sysstat_`date +%Y%m`.log
BEFOREVALUE=${BASE_HOME}/before_value.file
KPIFILE=${BASE_HOME}/kpi_key.value


exec >> ${MLOGFILE} 2>&1

echo "Current time " `date +%Y%m%d%H%M%S`

IPADDR=$1

# Get Instance name
INSTNAME=`sqlplus -S '/ as sysdba' << EO
set pages 0 heading off verify off  feedback off echo off
SELECT instance_name FROM v\\\$instance;
EO`

ftp_upload_()                                                 
{                                                             
                                                              
TEMP="$1|$2|$3|`date +%Y%m%d%H%M%S`"                  
TMPFILE="`hostname`_oracle_`date +%Y%m%d%H%M%S`.tok"
echo ${TEMP} > /tmp/${TMPFILE}                                                                                       
ftp -n << EOD
open 10.19.251.64
user aiox zwzx%1208B
prompt off
bin
cd  /home/aiox/busicollect/oracle_coll/source
lcd /tmp
put ${TMPFILE}
close
bye
EOD
                                     
rm -f /tmp/${TMPFILE}                                        
                                                              
}


if [ ! -s ${KPIFILE} ]; then
echo "SDBB_01    user_commits              " >> ${KPIFILE}   
echo "SDBB_02    user_rollbacks            " >> ${KPIFILE}   
echo "SDBB_03    user_calls                " >> ${KPIFILE}   
echo "SDBB_04    session_logical_reads     " >> ${KPIFILE}   
echo "SDBB_05    CPU_used_by_this_session  " >> ${KPIFILE}   
echo "SDBB_06    DB_time                   " >> ${KPIFILE}   
echo "SDBB_07    session_pga_memory_max    " >> ${KPIFILE}   
echo "SDBB_08    enqueue_waits             " >> ${KPIFILE}   
echo "SDBB_09    consistent_gets           " >> ${KPIFILE}   
echo "SDBB_10    physical_reads            " >> ${KPIFILE}   
echo "SDBB_11    physical_writes           " >> ${KPIFILE}   
echo "SDBB_12    redo_size                 " >> ${KPIFILE}   
echo "SDBB_13    undo_change_vector_size   " >> ${KPIFILE}   
echo "SDBB_14    transaction_rollbacks     " >> ${KPIFILE}   
echo "SDBB_15    table_scans_(long_tables) " >> ${KPIFILE}   
echo "SDBB_16    parse_count_(total)       " >> ${KPIFILE}   
echo "SDBB_17    parse_count_(hard)        " >> ${KPIFILE}   
echo "SDBB_18    execute_count             " >> ${KPIFILE}   
echo "SDBB_19    sorts_(memory)            " >> ${KPIFILE}
echo "SDBB_20    sorts_(disk)              " >> ${KPIFILE}
fi

BCNT=`cat ${BEFOREVALUE}|wc -l`


echo "ORACLE DATABASE SYSSTAT GATHER BEGIN......................................"

TEMPFILE="${BASE_HOME}/systat_gar_`date +%Y%m%d%H%M%S`.log"





sqlplus -S '/ as sysdba' << EOF
set line 330
col name for a30
set pages 0 heading off verify off  feedback off echo off
col value for 9999999999999999999999999
spool ${TEMPFILE}
SELECT a.statistic#,replace(b.name,' ','_'),a.value value FROM v\$sysstat a,v\$statname b
WHERE a.statistic# = b.statistic#
AND replace(b.name,' ','_') IN ('user_commits','user_rollbacks','user_calls','session_logical_reads','CPU_used_by_this_session','DB_time','session_pga_memory_max','enq
ueue_waits','consistent_gets','physical_reads','physical_writes','redo_size','undo_change_vector_size','transaction_rollbacks','table_scans_(long_tables)','parse_count
_(total)','parse_count_(hard)','execute_count','sorts_(memory)','sorts_(disk)');
spool off;
exit;
EOF

if [ ${BCNT} -gt 4 ]; then
while read line
do
statname=`echo ${line}|awk '{print $2}'`
LASTVAL=`cat ${BEFOREVALUE}|grep ${statname}|awk '{print $3}'`
CURVAL=`echo ${line}|awk '{print $3}'`
DIFFVAL=`expr ${CURVAL} - ${LASTVAL}`

KPI=`cat ${KPIFILE}|grep ${statname}|awk '{print $1}'`

ftp_upload_  $IPADDR"*oracle*"${INSTNAME}  ${KPI} ${DIFFVAL}

sleep 2
done < ${TEMPFILE}
fi
cat ${TEMPFILE} > ${BEFOREVALUE}

rm -f  ${TEMPFILE}

echo "ORACLE DATABASE SYSSTAT GATHER END......................................"

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29446986/viewspace-1874424/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-01-17

  • 博文量
    152
  • 访问量
    590999