文件名: fullrestart.sh

路径 $HOME/ggscript/ggoperat

这个脚本属于为了应付某台非常头疼的业务数据库服务器OGG频繁延时的问题而特别写的

因为这台数据库每天晚上会调用大量的job 以及并发操作,因此导致OGG 数据抽取进程频繁的延时

必须强制杀除长事务才能正常恢复。

否则延时会一直拖到归档文件被自动备份走。导致进程异常中断为止。

跟业务沟通数据库调优,同时联系oracle原厂多次排查,无解后,不得不以该强制时间点调整脚本每天凌晨5点通过计划任务自动运行确保整体线路的正常运行。

希望各位不会遭遇这种头疼的问题吧

该脚本比较暴力请谨慎使用。不能保证100%恢复


#!/bin/bash
if [ $# -eq 0 ]; then
        echo "INFO EXTRACT"
        exit 2
fi
cd #HOME
if [ -f .profile ];then
        . .profile
fi

if [ -f .bash_profile ];then
        . .bash_profile
fi


backuptime=`date +%Y%m%d-%H%M%S`

val=$1
val=`echo $val|tr a-z A-Z`

if [ `echo $val|grep ^E` ];then
         IType=EXTRACT

elif [ `echo $val|grep ^P` ];then
         IType=POST

elif  [ `echo $val|grep ^R` ];then
       	IType=REPLICAT 
else
        echo "only can operate the EXTRACT REPLICAT and the POST process"       
        exit 2
fi

pro=`echo $val.PRM|tr A-Z a-z`

cd $HOME/ggserver/dirprm
if [ ! -e $pro ]; then
        echo "the PROCESS is not exist"
        exit 2
fi

#cd $HOME/ggscript/ggoperat
cd $HOME/ggserver

(echo KILL $val;echo exit)|./ggsci


cd $HOME/ggserver

(echo INFO $val;echo exit)|./ggsci|grep Thread > $HOME/ggscript/ggoperat/thread
cd $HOME/ggscript/ggoperat
cat thread |awk '{print $1}' > $HOME/ggscript/ggoperat/tmp1
cat thread |awk '{print $2}' > $HOME/ggscript/ggoperat/tmp2
paste -d' ' tmp1 tmp2 > tmp
join tmp1 tmp2
rm -f tmp1
rm -f tmp2
rm -f thread
sort -n tmp > temp
rm -f tmp
time=`sed -n 1p temp`
rm -f temp
cd $HOME/ggserver
echo "alter $val begin $time" > dirdat/altertime
echo "start $val" >>  dirdat/altertime

(echo   OBEY dirdat/altertime;echo exit) |./ggsci