#!/bin/sh
#数据库名
DB_NAME="AMFEDB"
#备份目录
HBAK_DIR="/tmp"
#备份文件名
FILE_NAME=`ls -t $HBAK_DIR|grep $DB_NAME|head -1`
#备份时间戳
TIMESTAMP=`echo "$FILE_NAME" | awk -F . '{ print $6 }'`
if [ -z "$FILE_NAME" ];then
echo "备份文件不存在!"
exit 99
fi
if [ -z "$TIMESTAMP" ];then
echo "最新备份文件[$FILE_NAME]格式不正确!"
exit 99
fi
echo "使用备份文件[$FILE_NAME]对数据库[$DB_NAME]进行恢复"
echo `date "+%Y-%m-%d %H:%M:%S"`"开始恢复..."
#数据库恢复恢复
RES=`db2 "restore db $DB_NAME incremental automatic from $HBAK_DIR taken at $TIMESTAMP logtarget /tmp/"<<EOF
y
EOF`
echo "$RES"
if [ "$RES" = "SQL1035N The database is currently in use. SQLSTATE=57019" ];then
#重启数据库
echo "开始重启数据库..."
db2stop force
db2start
echo "数据库重启结束"
RES=`db2 "restore db $DB_NAME incremental automatic from $HBAK_DIR taken at $TIMESTAMP logtarget /tmp/"<<EOF
y
EOF`
echo "$RES"
fi
#数据库前滚恢复
db2 "rollforward db $DB_NAME to end of backup and stop overflow log path(/tmp)"
if [ $? -ne 0 ];then
echo "恢复数据库[$DB_NAME]失败!"
else
echo "恢复数据库[$DB_NAME]成功!"
fi
#删除第一步生成的log文件
echo "正在删除临时文件..."
rm -r /tmp/NODE0000
使用备份文件[AMFEDB.0.db2inst1.NODE0000.CATN0000.20150928192955.001]对数据库[AMFEDB]进行恢复
2015-09-28 20:18:58开始恢复...
SQL1035N The database is currently in use. SQLSTATE=57019
开始重启数据库...
2015-09-28 20:19:00 0 0 SQL1064N DB2STOP processing was successful.
SQL1064N DB2STOP processing was successful.
09/28/2015 20:19:02 0 0 SQL1063N DB2START processing was successful.
SQL1063N DB2START processing was successful.
数据库重启结束
SQL2539W Warning! Restoring to an existing database that is the same as the
backup image database. The database files will be deleted.
Do you want to continue ? (y/n) DB20000I The RESTORE DATABASE command completed successfully.
SQL1268N Roll-forward recovery stopped due to error "24" while retrieving log
file "S0000004.LOG" for database "AMFEDB" on node "0".
恢复数据库[AMFEDB]失败!
正在删除临时文件...
rm: 鏃犳硶鍒犻櫎"/tmp/NODE0000": 娌湁閭d釜鏂囦欢鎴栫洰褰
2015-09-28 20:19:33恢复结束
[db2inst1@ACS222 dbdate]$ db2 rollforward db amfedb to end of logs
SQL1265N The archive log file "S0000003.LOG" is not associated with the
current log sequence for database "AMFEDB" on node "0".
[db2inst1@ACS222 dbdate]$ db2 rollforward database amfedb to end of backup and complete
SQL1274N The database "AMFEDB" requires roll-forward recovery and the
point-in-time must be to the end of logs.
db2 "rollforward db amfedb to end of logs and stop OVERFLOW LOG PATH (/u01/dbdate/db2inst1/NODE0000/SQL00001/SQLOGDIR)"
SQL4910N Overflow log path "/u01/dbdate/db2inst1/NODE0000/SQL00001/SQLOGDIR"
is not valid.
在线备份数据库,然后使用上面脚本在本机恢复数据库,前滚失败导致数据恢复失败,试了网上的各种方法进行前滚都无效,停止回滚也不行。 求大神帮忙看看有什么解决方法。不甚感激