事前に用意するDR_ONLINE_RCV2.shについて説明します。
[名称]
RDBディクショナリの退避とリカバリポイントの設定
[形式]
DR_ONLINE_RCV2.sh
[機能説明]
rdbrtrコマンドによって、RDBディクショナリとすべてのデータベーススペースに更新抑止の利用規定を設定し、rdbdmpdicコマンドによってRDBディクショナリを退避します。
rdbsetrpコマンドによってリカバリポイントを設定し、rdbrlsコマンドによってRDBディクショナリとすべてのデータベーススペースの更新抑止の利用規定を解除します。
その後、複写元システムのRLP環境を復旧し、複写元システムの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 # 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