ページの先頭行へ戻る
Linkexpress Replication optionV5.0L27 導入運用ガイド

H.4.3 DR_ONLINE_RCV3.sh

事前に用意するDR_ONLINE_RCV3.shについて説明します。

[名称]

アーカイブログの退避

[形式]

DR_ONLINE_RCV3.sh

[機能説明]

システムロググループとすべてのユーザロググループに対し、アーカイブログ使用状況のファイルの存在確認とアーカイブログの強制切替えを行い、現在の使用中のアーカイブログ通番を取得した後、アーカイブログの退避を行います。
その後、複写元システムのRERUNログの取得開始とDRレプリケーション業務の起動を行います。

[注意事項]

[復帰値]

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