For Report DB的Archived log 获得,新版Shell,完善了一下

RHEL4下的版本。copy到任何目录都可执行。因为上次的shell并不严谨,在某些情况会有遗漏,遂重新写之。

[@more@]

Oracle ENV先声明。

#Some Variables

BTIME=`date`;

ARCH_FOLDER=/u04/arch/SHxxx1;

SH_DIR=$(cd "$(dirname "$0")"; pwd);

DBA="J A "

#INIT FOLDR

if [ -f $SH_DIR/applied.lst ]

then rm -f $SH_DIR/applied.lst

fi

if [ -f $SH_DIR/compared.lst ]

then rm -f $SH_DIR/compared.lst

fi

if [ -f $SH_DIR/copy.lst ]

then rm -f $SH_DIR/copy.lst ]

fi

if [ -f $SH_DIR/SHXXX02.lst ]

then rm -f $SH_DIR/SHXXX02.lst

fi

if [ -f $SH_DIR/SHXXX02.temp ]

then rm -f $SH_DIR/SHXXX02.temp

fi

if [ -f $SH_DIR/SHXXX02.temp1 ]

then rm -f $SH_DIR/SHXXX02.temp1

fi

if [ -f $SH_DIR/SHXXX03.lst ]

then rm -f $SH_DIR/SHXXX03.lst

fi

if [ -f $SH_DIR/SHXXX03.temp ]

then rm -f $SH_DIR/SHXXX03.temp

fi

#get max sequence log applied in SHXXX03

sqlplus "/ as sysdba" >$SH_DIR/applied.lst<

@$SH_DIR/get_maxlog.sql;

EOF

row1=`tail -6 $SH_DIR/applied.lst | head -1`;

max_log=`echo $row1 | awk '{print $3}'`;

message="Now SHXXX03 has applied sequence $max_log" ;

echo "$message" > $SH_DIR/mail.message

#build SHXXX03 archived log list later than max_log

ls -l $ARCH_FOLDER/arch* | awk '{print $9}'|sed 's//u04/arch/SHxxx1/arch_1_//'| sed 's/.arc//'> $SH_DIR/SHXXX03.temp;

cat $SH_DIR/SHXXX03.temp | while read num

do

touch $SH_DIR/SHXXX03.lst

if [ $num -gt $max_log ]

then echo $num>>$SH_DIR/SHXXX03.lst

fi

done

echo "Recieved archived log sequence later than MAX_applied_log_sequence in SHXXX03" >>$SH_DIR/mail.message

echo "------------------------ I am a beeline--------------------------" >>$SH_DIR/mail.message

cat $SH_DIR/SHXXX03.lst >> $SH_DIR/mail.message

#build SHXXX02 archived log list later than max_log

ssh SHXXX02 "ls -l $ARCH_FOLDER/arch*" > $SH_DIR/SHXXX02.temp1;

cat $SH_DIR/SHXXX02.temp1 |awk '{print $9}'|sed 's//u04/arch/SHxxx1/arch_1_//'| sed 's/.arc//'> $SH_DIR/SHXXX02.temp;

cat $SH_DIR/SHXXX02.temp | while read num

do

touch $SH_DIR/SHXXX02.lst

if [ $num -gt $max_log ]

then echo $num>>$SH_DIR/SHXXX02.lst

fi

done

#compare SHXXX02.lst & SHXXX03.lst

SHXXX03_LST=`awk '{print $1}' $SH_DIR/SHXXX03.lst`

cat $SH_DIR/SHXXX02.lst | while read NUM_NB02

do

for NUM_NB03 in $SHXXX03_LST

do

if [ $NUM_NB03 -eq $NUM_NB02 ]

then touch $SH_DIR/MARK;

break;

fi

done

if [ -f $SH_DIR/MARK ]

then rm -f $SH_DIR/MARK

else echo $NUM_NB02 >> $SH_DIR/compared.lst

fi

done

echo "------------------------ I am a beeline--------------------------" >> $SH_DIR/mail.message

echo " ****** " >> $SH_DIR/mail.message

echo "These archived log sequence will be copied" >> $SH_DIR/mail.message

echo "------------------------ I am a beeline--------------------------" >> $SH_DIR/mail.message

cat $SH_DIR/compared.lst >> $SH_DIR/mail.message

echo "------------------------ I am a beeline--------------------------" >> $SH_DIR/mail.message

#Build archived log needed to COPY

cat $SH_DIR/compared.lst | while read num

do

filename=$ARCH_FOLDER/arch_1_$num.arc

scp SHXXX02:$filename $ARCH_FOLDER

if [ $? -eq 0 ]

then echo "$filename has been copied." >> $SH_DIR/copy.lst

fi

done

echo " ****** " >> $SH_DIR/mail.message

echo "These archived log has been copied" >> $SH_DIR/mail.message

echo "------------------------ I am a beeline--------------------------" >> $SH_DIR/mail.message

cat $SH_DIR/copy.lst >> $SH_DIR/mail.message

echo "------------------------ I am a beeline--------------------------" >> $SH_DIR/mail.message

ETIME=`date`;

echo "Begine at $BTIME" >> $SH_DIR/mail.message

echo "End at $ETIME" >> $SH_DIR/mail.message

mail -s "SCP archived log Staus: SHXXX02 ---&gt SHXXX03 " $DBA < $SH_DIR/mail.message > /dev/null 2>&1;

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

转载于:http://blog.itpub.net/10856805/viewspace-999767/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值