文件名: 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