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

H.4.2 DR_ONLINE_RCV2.sh

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

[名称]

RDBディクショナリの退避とリカバリポイントの設定

[形式]

DR_ONLINE_RCV2.sh

[機能説明]

rdbrtrコマンドによって、RDBディクショナリとすべてのデータベーススペースに更新抑止の利用規定を設定し、rdbdmpdicコマンドによってRDBディクショナリを退避します。
rdbsetrpコマンドによってリカバリポイントを設定し、rdbrlsコマンドによってRDBディクショナリとすべてのデータベーススペースの更新抑止の利用規定を解除します。
その後、複写元システムのRLP環境を復旧し、複写元システムの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
#
WKFILE=${WORKPATH}/dr_dbcopy_${RDBNAME:='RDBII'}.$$.wk;export WKFILE
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 rdbrtr
#
rdbrtr -z -rw > ${ERRFILE} 2>&1
if [ $? -ne 0 ]; then
	grep "qdg12136w" ${ERRFILE} > /dev/null 2>&1
	if [ $? -ne 0 ]; then
		cat ${ERRFILE}
		echo "ERROR: rdbrtr is failed."
		rm ${ERRFILE}
		exit 1
	fi
fi

while read DB_SPACE_NAME
do
	rdbrtr -p ${DB_SPACE_NAME} -rw > ${ERRFILE} 2>&1
	if [ $? -ne 0 ]; then
		grep "qdg12133w" ${ERRFILE} > /dev/null 2>&1
		if [ $? -ne 0 ]; then
			cat ${ERRFILE}
			echo "ERROR: rdbrtr ( DB space name:${DB_SPACE_NAME} ) is failed."
			rm ${ERRFILE}
			exit 1
		fi
	fi
done < ${DBSPACE_LIST}
rm ${ERRFILE}

#
# do rdbdmpdic
#
if [ ! -f ${DIC_BK_DEV}/${RDBNAME:='RDBII'}.dicback ]; then
	rdbdmpdic -f ${RDBNAME:='RDBII'}.dicback@${DIC_BK_DEV} -N
	if [ $? -ne 0 ]; then
		echo "ERROR: rdbdmpdic is failed."
		exit 1
	fi
fi

#
# Set Recovery Point
#
rdbsetrp ${RCV_P_NAME}
if [ $? -ne 0 ]; then
	echo "ERROR: rdbsetrp is failed."
	exit 1
fi

#
# do rdbrls
#
rdbrls -z -rw > ${ERRFILE} 2>&1
if [ $? -ne 0 ]; then
	grep "qdg12130w" ${ERRFILE} > /dev/null 2>&1
	if [ $? -ne 0 ]; then
		cat ${ERRFILE}
		echo "ERROR: rdbrls is failed."
		rm ${ERRFILE}
		exit 1
	fi
fi

while read DB_SPACE_NAME
do
	rdbrls -p ${DB_SPACE_NAME} -rw
	if [ $? -ne 0 ]; then
		grep "qdg12127w" ${ERRFILE} > /dev/null 2>&1
		if [ $? -ne 0 ]; then
			cat ${ERRFILE}
			echo "ERROR: rdbrtr ( DB space name:${DB_SPACE_NAME} ) is failed."
			rm ${ERRFILE}
			exit 1
		fi
	fi
done < ${DBSPACE_LIST}
rm ${ERRFILE}

#
# RLP Online
#
for RLPNAME in ${RLPNAME_LIST[@]}
do
	lxrepdrrlp -V -O -p ${RLPNAME} > ${WKFILE} 2>&1
	if [ $? -eq 0 ]; then
		if [ "`grep "Online/Offline" ${WKFILE} | awk '{print $3}'`" = "online" ]; then
			rm ${WKFILE}
			continue
		fi
	fi
	rm ${WKFILE}
	lxrepdrena -p ${RLPNAME} -k capture
	if [ $? -ne 0 ]; then
		echo "ERROR: lxrepdrena (RLPname:${RLPNAME}) is failed."
		exit 1
	fi
done

#
# Start DR Replication work
#
for RLPNAME in ${RLPNAME_LIST[@]}
do
	lxrepdrrep -p ${RLPNAME} -a start -k capture
	if [ $? -ne 0 ]; then
		echo "ERROR: lxrepdrrep -a start (RLPname:${RLPNAME}) is failed."
		exit 1
	fi
done

exit 0