OGG运维优化脚本(四)-信息修改类--长事务跳过

文件名: skiptrans.sh skip.sh

所在路径:$HOME/ggscript/ggtrandata

功能:该脚本用于重启抽取进程时跳过长事务,可自动识别1小时以上的长事务并批量跳过,skiptrans.sh通过edit脚本选择调用,skip.sh用于在其他脚本中调用用,例如allstop.sh全goldengate进程停止脚本

Ps:目前该脚本目前仅适用于AIX和LINUX系统

skiptrans.sh

#!/bin/bash
function date2seconds {
    echo "$*" | awk ‘{
        z=int((14-$2)/12); y=$1+4800-z; m=$2+12*z-3;
        j=int((153*m+2)/5)+$3+y*365+int(y/4)-int(y/100)+int(y/400)-2472633;
        j=j*86400+$4*3600+$5*60+$6
        print j
    }‘
}

cd $HOME/ggscript/ggtrandata
echo $login
echo $dir

dir=$PWD 
echo $dir
cd $HOME/ggserver

echo "searching the Extract name......"
(echo info all;echo exit)|./ggsci|grep "EXTRACT" |awk ‘BEGIN {FS=" +"} {print $3}‘|grep  ‘^E‘
read -p "Please enter the extract name:" extract

echo "loading the trans data.....please wait....."
(echo send $extract showtrans thread 1;echo exit)|./ggsci > $dir/thread1
echo "Thread 1 data load compete"
(echo send $extract showtrans thread 2;echo exit)|./ggsci > $dir/thread2
echo "Thread 2 data load compete"

cd $dir

cat thread1|awk ‘BEGIN{}{FS=" "} /^XID:/{print $2}‘|sed  -e ‘/^$/d‘ > xid1
cat thread1|awk -F ‘Time:           ‘ ‘{print $2}‘|sed  -e ‘/^$/d‘ > time1
paste time1 xid1 > trandata
cat thread2|awk ‘BEGIN{}{FS=" "} /^XID:/{print $2}‘|sed  -e ‘/^$/d‘ > xid2
cat thread2|awk -F ‘Time:           ‘ ‘{print $2}‘|sed  -e ‘/^$/d‘ > time2
paste time2 xid2 > trandata2

cat trandata2 >> trandata

sydate=`date +"%Y-%m-%d:%H:%M:%S"`
echo $HSYSTIME
date2seconds `echo $sydate | sed ‘s/-/ /g;s/:/ /g‘` > secondssys
HSYSTIME=`cat secondssys`
echo $HSYSTIME
rm -f secondssys
#date2seconds `echo $sydate | sed ‘s/-/ /g;s/:/ /g‘`

NUX=`sed -n ‘$=‘ trandata`

i=1
cat /dev/null > trains
while(($i<=$NUX));  do

str=`sed -n "${i}p"  trandata |awk ‘{print $1}‘`
echo $str
date2seconds `echo $str | sed ‘s/-/ /g;s/:/ /g‘` > secondssys
HGTI=`cat secondssys`
rm -f secondssys
echo $HGTI
echo $HSYSTIME
POOR=`expr $HSYSTIME - 3600`
echo $POOR
echo "--------------------"
if [ "$HGTI" -le "$POOR" ]
        then
                sed -n "${i}p"  trandata |awk ‘{print $2}‘ >> trains
fi

i=`expr $i + 1`

done

sed ‘s/^/send ‘$extract‘ skiptrans /‘ trains > trains1
sed ‘s/$/ force/‘ trains1 > skiptrains 

cd $HOME/ggserver

cat $HOME/ggscript/ggtrandata/skiptrains > dirdat/skiptrains

echo   OBEY dirdat/skiptrains |./ggsci

skip.sh

#!/bin/bash
echo $dir
cd $HOME/ggscript/ggtrandata
dir=$PWD
cd $HOME
if [ -f .profile ];then
        . .profile
fi

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

cd $dir

function date2seconds {
    echo "$*" | awk ‘{
        z=int((14-$2)/12); y=$1+4800-z; m=$2+12*z-3;
        j=int((153*m+2)/5)+$3+y*365+int(y/4)-int(y/100)+int(y/400)-2472633;
        j=j*86400+$4*3600+$5*60+$6
        print j
    }‘
}

if [ $# -eq 0 ]; then
        echo "skip EXTRACT"
        exit 2
fi

extract=$1

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

elif [ `echo $extract|grep ^P` ];then
	echo "only can operate the EXTRACT  process"
	exit 2
elif  [ `echo $extract|grep ^R` ];then
        echo "only can operate the extract process"
        exit 2
else
        echo "only can operate the EXTRACT  process"
        exit 2
fi

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

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

cd $dir
echo $login

echo $dir
cd $HOME/ggserver

echo "loading the trans data.....please wait....."
(echo send $extract showtrans thread 1;echo exit)|./ggsci > $dir/thread1
echo "Thread 1 data load compete"
(echo send $extract showtrans thread 2;echo exit)|./ggsci > $dir/thread2
echo "Thread 2 data load compete"

cd $dir

cat thread1|awk ‘BEGIN{}{FS=" "} /^XID:/{print $2}‘|sed  -e ‘/^$/d‘ > xid1
cat thread1|awk -F ‘Time:           ‘ ‘{print $2}‘|sed  -e ‘/^$/d‘ > time1
paste time1 xid1 > trandata
cat thread2|awk ‘BEGIN{}{FS=" "} /^XID:/{print $2}‘|sed  -e ‘/^$/d‘ > xid2
cat thread2|awk -F ‘Time:           ‘ ‘{print $2}‘|sed  -e ‘/^$/d‘ > time2
paste time2 xid2 > trandata2

cat trandata2 >> trandata

sydate=`date +"%Y-%m-%d:%H:%M:%S"`
echo $HSYSTIME
date2seconds `echo $sydate | sed ‘s/-/ /g;s/:/ /g‘` > secondssys
HSYSTIME=`cat secondssys`
echo $HSYSTIME
rm -f secondssys
#date2seconds `echo $sydate | sed ‘s/-/ /g;s/:/ /g‘`

NUX=`sed -n ‘$=‘ trandata`

i=1
cat /dev/null > trains
while(($i<=$NUX));  do

str=`sed -n "${i}p"  trandata |awk ‘{print $1}‘`
echo $str
date2seconds `echo $str | sed ‘s/-/ /g;s/:/ /g‘` > secondssys
HGTI=`cat secondssys`
rm -f secondssys
echo $HGTI
echo $HSYSTIME
POOR=`expr $HSYSTIME - 3600`
echo $POOR
echo "--------------------"
if [ "$HGTI" -le "$POOR" ]
        then
                sed -n "${i}p"  trandata |awk ‘{print $2}‘ >> trains
fi

i=`expr $i + 1`

done

sed ‘s/^/send ‘$extract‘ skiptrans /‘ trains > trains1
sed ‘s/$/ force/‘ trains1 > skiptrains 

cd $HOME/ggserver

cat $HOME/ggscript/ggtrandata/skiptrains > dirdat/skiptrains

echo   OBEY dirdat/skiptrains |./ggsci
时间: 2024-11-05 14:25:15

OGG运维优化脚本(四)-信息修改类--长事务跳过的相关文章

OGG运维优化脚本(十一)-查询维护类--操作选择

文件:ggedit 路径:$HOME/ggscript 功能:该脚本用于选择使用其他脚本 通过alias别名初始化入.profile和.bash_profile文件,以edit指令方式使用 #!/bin/bash echo "Select an action you want to perform" select ch in "addtable" "addtrandata" "annotate" "reannotat

OGG运维优化脚本(十二)-信息同步类--信息上传

文件: upload.sh 路径:$HOME/ggscript/ggupload 功能:该脚本不会直接使用,为满足其他脚本进行信息上传而设计,在脚本内直接调用上传相应的文件信息 他会读取系统信息配置文件sysinfo内的系统配置信息 范例 [detest#] Ip-MTMyLjEyMS4xMDEuODYK UserName-Z2dzCg== PassWord-Z2dzxxxxxx Port-MjIK path-L2RhdGExL2dncy9nZ3NlcnZlci9kaXJkZWYK [#dete

OGG运维优化脚本(十四)-信息同步类--定义文件自动下发

文件: resend.sh 路径:$HOME/ggscript/ggdef 功能:该脚本为用于应对目标端因为定义文件失效导致的进程异常中断所设计 因源端业务经常未通知目标端以及系统组自行修改表结构 因此设计该脚本自动生成定义文件,并发送至指定目标机器的相应路径,以用于目标机器REPLICATE进程的正常读取 日志路径:$HOME/gglog/ggupload #!/bin/bash cd $HOME if [ -f .profile ];then         . .profile fi if

OGG运维优化脚本(二. 五)-信息修改类--快速加表

文件名:add.sh 所在路径:$HOME/ggadd 功能:批量加表脚本的优化版,用于针对少量加表需求,包括重复配置表过滤功能以及附加日志自动增加功能 该脚本通过alias方式写入账户系统配置文件.profile 和.bash_profile通过命令使用 日志路径:$HOME/ggscript/ggadd 具体脚本内容 #!/bin/bash if [ $# -eq 0 ]; then         echo "info EXTRACT TABLE AREA user"      

OGG运维优化脚本(七)-信息修改类--快速注释

文件名:note.sh 路径:$HOME/ggscript/ggnote 功能:该脚本用于注释指定行的配置表,配合重复值检查脚本repeat.sh使用 通过alias初始化入.profile或.bash_profile文件,通过指令note使用 日志路径:$HOME/gglog/ggnote #!/bin/bash if [ $# -eq 0 ]; then         echo "note EXTRACT rowsnum"         exit 2 fi if [ $# -e

OGG运维优化脚本(三)-信息修改类--附加日志增加

文件名: addtrandata.sh 所在路径:$HOME/ggscript/gginsert 功能:用于批量增加表附加日志,属于从加表脚本中独立出来的功能,用于应对表附加日志丢失以及加表附加日志增加失败的情况 #!/bin/bash echo "This script will add trandata( by RenYi)" ls -lrt $HOME/ggserver/dirprm/e*.prm echo "The EXTRACT process:" cd 

OGG运维优化脚本(六)-信息修改类--批量取消注释

文件名:recomment.sh 路径: $HOME/ggscript/ggcomment 功能:该脚本用于批量取消注释,配合批量注释脚本使用,基本功能相反,操作步骤完全一致.通过edit脚本选择使用 日志路径:$HOME/gglog/ggcomment #!/bin/bash backuptime=`date +%Y%m%d-%H%M` echo "This script is used to reannotate the specified table!(created by renyi)&

OGG运维优化脚本(五)-信息修改类--批量注释

文件名:comment.sh 路径:$HOME/ggscript/ggcomment 功能:该脚本基于CBS用户每月大批量注释源端表进行数据清理的需求而设计 通过edit脚本选择并调用 日志路径:$HOME/gglog/ggcomment #!/bin/bash backuptime=`date +%Y%m%d-%H%M` echo "This script is used to annotate the specified table!(created by renyi)" echo

OGG运维优化脚本(十)-查询维护类--进程详细信息查询

文件:processinfo.sh 路径:$HOME/ggscript/ggupload 功能:该脚本为满足维护配置时检查所有goldengate进程的详细源端目标端,定义文件等信息而设计 #!/bin/bash export PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"  echo "This sciprt is write by RenYi" hn=`e