事前に用意する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