생계/Sybase

Sybase 성능분석 로그 편집 쉘

돌고래트레이너 2017. 9. 9. 00:08

- Sybase 성능 분석 리포트 결과를 편집하는 쉘

 

isql 에서 sp_sysmon 을 실행하면 많은 항목들에 대한 결과가 나오는데

이중에서 내가 필요한 항목은 달랑 3개 (Engine Utilization, Data Cache Management, Procedure Cache Management)

정기적으로 보고 하는 자료이기에 매번 수동 편집하지 않고 실행만 하면 자동 편집되는 쉘을 만들었습니다.

 

비슷한 요구사항의 작업 시에 참고하기실...

grep -n 으로 원하는 내용의 라인수 출력,

파일 한줄씩 읽어들여 배열에 저장,

sed -n 으로 원하는 부분만 편집 등을 사용했습니다. 

 

 

01_exec_sysmon.sh  : isql 에서 sp_sysmon 실행

----------------------------------------------------------

DATE=`date +%Y%m%d%H%M`

echo $DATE

isql -Usa -w400 -P1111 << 'EOF' >> ./logs/sysmon.log.$DATE
sp_sysmon '00:05:00'
go
exit
EOF
----------------------------------------------------------

 

 

02_make_editsh.sh : 분석로그를 편집하는 쉘을 만들기 위한 전 단계 (sed 에 변수($) 처리가 잘 안되서

                              echo 를 redirect 해서 결과를 쉘로 만들기

----------------------------------------------------------

echo '\n'
echo '\n'
echo '### beginning of the shell ###'
echo '\n'

filename=`ls -l ./logs/sysmon.log.* | grep "^-" | tail -1 | awk '{print $9 }'`

echo 'The name of the result file is :' $filename
echo '\n'
echo '\n'

grep -n "Engine Utilization" $filename | awk '{print $1}' > filename.tmp
grep -n "Data Cache Management" $filename | awk '{print $1}' >> filename.tmp
grep -n "Procedure Cache Management" $filename | awk '{print $1}' >> filename.tmp

#cat filename.tmp

sed -e s/:/'  '/g filename.tmp | awk '{print $1}' > filename2.tmp

#cat filename2.tmp

index=0
while read line ; do
    ary[$index]="$line"
    index=$(($index+1))
done < filename2.tmp

a=${ary[0]}
b=${ary[1]}
c=${ary[2]}

aa=`expr $a + 23`
bb=`expr $b + 13`
cc=`expr $c + 7`

echo 'sed -n '\'$a','$aa'p'\' $filename '> engine_busy.log' > edit_log.sh
echo 'sed -n '\'$b','$bb'p'\' $filename '> cache_hit.log'   >> edit_log.sh
echo 'sed -n '\'$c','$cc'p'\' $filename '> procedure_cache.log' >> edit_log.sh

echo '\n'
echo '#### before executing editing shell ####'
echo '\n'

sh ./edit_log.sh

echo '#### done executing the editing shell ####'
echo '\n'

 

03_print_result.sh  : 편집된 결과 출력

----------------------------------------------------------

echo '  ######################################################################### '
echo '\n'
cat engine_busy.log
echo '\n'
echo '  ######################################################################### '
echo '\n'
cat cache_hit.log
echo '\n'
echo '  ######################################################################### '
echo '\n'
cat procedure_cache.log
echo '\n'

 

반응형