事前に用意するDR_ONLINE_RCV3.shについて説明します。
[名称]
アーカイブログの退避
[形式]
DR_ONLINE_RCV3.sh
[機能説明]
システムロググループとすべてのユーザロググループに対し、アーカイブログ使用状況のファイルの存在確認とアーカイブログの強制切替えを行い、現在の使用中のアーカイブログ通番を取得した後、アーカイブログの退避を行います。
その後、複写元システムのRERUNログの取得開始とDRレプリケーション業務の起動を行います。
[注意事項]
本シェルスクリプトを実行する際、環境変数設定ファイルは本シェルスクリプトと同じディレクトリに配置してください。
本シェルスクリプトが異常終了した場合、出力されたSymfoware Serverのqdgメッセージに従い、エラー原因を排除したのち、本シェルスクリプトを再実行してください。
[復帰値]
0:正常終了
0以外:異常終了
[スクリプト内容]
本シェルスクリプトの内容を以下に示します。
#!/bin/sh
PATH=/opt/FJSVrdb2b/bin:/opt/FJSVrdb2b/sbin:/opt/FJSVlnkexp/bin:/opt/FJSVlnkre/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin;export PATH
LD_LIBRARY_PATH=/opt/FJSVrdb2b/lib:/opt/FJSVlnkre/lib;export LD_LIBRARY_PATH
CUR=$PWD
source ${CUR}/DR_ONLINERCV_ENV.def
#
# Define
#
FULL_FLG=0
ARC_LIST_F=${WORKPATH}/dr_dbcopy_${RDBNAME:='RDBII'}_arclist.wk;export ARC_LIST_F
ERRFILE=${WORKPATH}/dr_dbcopy_${RDBNAME:='RDBII'}.$$.err;export ERRFILE
#
# check rdb
#
rdbpid > /dev/null 2>&1
if [ $? -ne 0 ]; then
rdbstart > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "ERROR: RDB is not active."
exit 1
fi
sleep 1
fi
#
# do rdblog -S -a , rdblog -B
#
if [ ! -f ${ARC_LIST_F} ]; then
echo "ERROR: The file created in DR_ONLINE_RCV1.sh does not exist. Please delete all backup files and rerun from DR_ONLINE_RCV1.sh."
exit 1
fi
while read line
do
FULL_FLG=0
LOGGRP_NAME=`echo ${line} | cut -f 1 -d ","`
ARC_USE_OLD=`echo ${line} | cut -f 2 -d ","`
rdblog -S -a -g ${LOGGRP_NAME} > ${ERRFILE} 2>&1
if [ $? -ne 0 ]; then
grep "qdg02437u" ${ERRFILE} > /dev/null 2>&1
if [ $? -ne 0 ]; then
cat ${ERRFILE}
echo "ERROR: rdblog -S (Loggroup name:${LOGGRP_NAME}) is failed."
rm ${ERRFILE}
exit 1
else
FULL_FLG=1
fi
fi
rm ${ERRFILE}
ARC_USE_NOW=`rdblog -V -a -g ${LOGGRP_NAME} | grep "using" | awk '{print $1}'`
[ "${ARC_USE_NOW}" -eq 0 ] 2>/dev/null
if [ $? -ge 2 ];then
echo "ERROR: rdblog -V -a -g (Loggroup name:${LOGGRP_NAME}) is failed."
exit 1
fi
ARC_BKUP_NUM=$(( ARC_USE_NOW - ARC_USE_OLD ))
i=0
while [ ${i} -lt ${ARC_BKUP_NUM} ]
do
if [ -f ${ARC_BK_DEV}/${RDBNAME:='RDBII'}-${LOGGRP_NAME}.arcback_$(( i + 1 )) ]; then
i=$(( i + 1 ))
continue
fi
rdblog -B -g ${LOGGRP_NAME} ${RDBNAME:='RDBII'}-${LOGGRP_NAME}.arcback_$(( i + 1 ))@${ARC_BK_DEV}
if [ $? -ne 0 ]; then
echo "ERROR: rdblog -B (Loggroup name:${LOGGRP_NAME}) is failed."
exit 1
fi
i=$(( i + 1 ))
done
if [ ${FULL_FLG} -eq 1 ]; then
rdblog -S -a -g ${LOGGRP_NAME}
if [ $? -ne 0 ]; then
echo "ERROR: rdblog -S (Loggroup name:${LOGGRP_NAME}) is failed."
exit 1
fi
rdblog -B -g ${LOGGRP_NAME} ${RDBNAME:='RDBII'}-${LOGGRP_NAME}.arcback_$(( i + 1 ))@${ARC_BK_DEV}
if [ $? -ne 0 ]; then
echo "ERROR: rdblog -B (Loggroup name:${LOGGRP_NAME}) is failed."
exit 1
fi
fi
done < ${ARC_LIST_F}
exit 0