DB2在线备份恢复,无法回滚。 求大神帮忙解决

f1956 2015-09-28 11:22:30
#!/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.

在线备份数据库,然后使用上面脚本在本机恢复数据库,前滚失败导致数据恢复失败,试了网上的各种方法进行前滚都无效,停止回滚也不行。 求大神帮忙看看有什么解决方法。不甚感激
...全文
1979 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Your Man 2019-01-11
  • 打赏
  • 举报
回复
还原成功后数据库会被锁住

使用归档日志前滚数据库:
检查归档日志目录
01.db2 get db cfg for dbname
或者[db2inst1@localhost home]$ db2 get db cfg for AWS | grep -i 'log'

[db2inst1@localhost home]$ db2 get db cfg for AWS | grep -i 'log'
Log retain for recovery status = NO
User exit for logging status = YES
Catalog cache size (4KB) (CATALOGCACHE_SZ) = 300
Log buffer size (4KB) (LOGBUFSZ) = 2150
Log file size (4KB) (LOGFILSIZ) = 1024
Number of primary log files (LOGPRIMARY) = 13
Number of secondary log files (LOGSECOND) = 12
Changed path to log files (NEWLOGPATH) =
[color=#000080] [color=#333399]Path to log files = /home/db2inst1/db2inst1/NODE0000

将需要还原时间点的归档日志存放在该目录中

http://blog.csdn.net/nayanminxing/article/details/78386467?locationNum=1&fps=1
02.[db2inst1@db22 ~]$ db2 "rollforward db AWS to end of logs overflow log path (/home/log)"
Rollforward Status

Input database alias = AWS
Number of members have returned status = 1

Member ID = 0
Rollforward status = DB working
Next log file to be read = S0000651.LOG
Log files processed = S0000650.LOG - S0000650.LOG
Last committed transaction = 2018-03-27-16.01.44.000000 UTC

DB20000I The ROLLFORWARD command completed successfully.
03.[db2inst1@localhost home]$ db2 "rollforward db AWS complete"
SQL1273N An operation reading the logs on database "AWS" cannot continue
because of a missing log file "S0000650.LOG" on database partition "0" and log
stream "0".

如果03这一步骤执行结果出现上面的提示,说明归档日志不在活动日志目录中,需要将上面的归档日志手动copy到对应的活动日志目录中,
再次执行03即可。

[db2inst1@localhost home]$ db2 "rollforward db AWS complete"

Rollforward Status

Input database alias = AWS
Number of members have returned status = 1

Member ID = 0
Rollforward status = not pending
Next log file to be read =
Log files processed = S0000650.LOG - S0000650.LOG
Last committed transaction = 2018-03-27-16.01.44.000000 UTC

DB20000I The ROLLFORWARD command completed successfully.
grouk_wany 2015-11-03
  • 打赏
  • 举报
回复
归档日志路径设置问题
starym 2015-10-12
  • 打赏
  • 举报
回复
那个归档日志文件在目录里吗

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧