我在 2015 年 3 月 3 日 19:20 执行了备份映像的恢复命令:
db2 restore database maxdb71 from "/data/archiveBackup" taken at 20150303192002 without prompting;
然后我尝试将前滚到一个时间点(03.03.2015 21:05)所以这是在备份图像之后:
db2 rollforward db maxdb71 to 2015-03-03-21.05.00.000000 using local time and complete;
但我收到错误:
SQL4970N Roll-forward recovery on database "MAXDB71" cannot reach the
specified stop point (end-of-log or point-in-time) on database partition(s)
"0". Roll-forward recovery processing has halted on log file "S0000189.LOG".
所以喜欢它找不到日志S0000189.LOG。但是此日志存在于存档日志位置(C0000004 当前子文件夹用于存档日志)/data/archive/ctginst1/MAXDB71/NODE0000/C0000004>:
这些是一些存档日志文件的时间戳:
ctginst1 db2iadm1 15765504 2015-03-03 19:22 S0000187.LOG
ctginst1 db2iadm1 16785408 2015-03-03 21:52 S0000188.LOG
ctginst1 db2iadm1 16785408 2015-03-04 00:15 S0000189.LOG
ctginst1 db2iadm1 16785408 2015-03-04 02:32 S0000190.LOG
基本上日志文件 S0000188.LOG 应该是包含 21.05 的事务的文件,对吧?
那么,当我有必要的日志时,为什么我不能进行时间点的前滚呢?我真的对这个前滚选项感到困惑。
当我这样做时db2 rollforward database maxdb71 to end of logs and complete;
,它是成功的,我得到了信息:
Log files processed = S0000187.LOG - S0000188.LOG
如此to end of logs
有效,但为什么我要到某个特定时间点才能执行?
如果将日志归档到与活动日志目录不同的位置(
logpath
数据库配置参数),则需要指定子句overflow log path /path/to/archived/logs
。该ROLLFORWARD
命令不会自动执行此操作。PS。你真的应该开始阅读手册——它们充满了有用的东西,包括多个例子......