DB2分区数据库备份映象文件是通过联机备份产生的,在DB2分区数据库恢复操作结束后,数据库将处于前滚暂挂状态,必须通过前滚操作前滚归档日志,以取消前滚暂挂状态,使数据库最终可用。
对DB2分区数据库的前滚操作:
由于新数据库 SAMPNEW 的日志路径下不包含源 SAMPLE 数据库日志路径下的归档日志文件,所以在前滚操作之前,需要将 SAMPLE 的归档日志文件复制到一个特定的路径下,然后在发出前滚命令时,使用 OVERFLOW 选项来指定该路径,以替代 SAMPNEW 的数据恢复日志路径来提供前滚操作要使用的归档日志文件。
为查找源 SAMPLE 数据库归档日志存放的路径,可利用如下命令:
db2_all "db2 get db cfg for sample" | grep "Path"
Path to log files = /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/
Path to log files = /home/db2inst1/db2inst1/NODE0001/SQL00001/SQLOGDIR/
Path to log files = /home/db2inst1/db2inst1/NODE0002/SQL00001/SQLOGDIR/
Path to log files = /home/db2inst1/db2inst1/NODE0003/SQL00001/SQLOGDIR/
这里假设将各分区的归档日志文件对应复制到 /sampnew 下,因前滚命令仅可在编目分区上执行,所以在编目分区上前滚到日硬盘数据恢复志文件尾并结束前滚状态的命令应写为:
db2 "rollforward db sampnew to end of logs and complete overflow log path
(/sampnew/NODE0000/SQL00001/SQLOGDIR,
/sampnew/NODE0001/SQL00001/SQLOGDIR on dbpartitionnum 1,
/sampnew/NODE0002/SQL00001/SQLOGDIR on dbpartitionnum 2,
/sampnew/NODE0003/SQL00001/SQLOGDIR on dbpartitionnum 3,
)"
注:对于0号分区,在 OVERFLOW 选项中不能使用“ON DBPARTITIONNUM 0”的子句,否则会遇到:
SQL0104N An unexpected token "on" was found following "<identifier>". Expected tokens may include: ")". SQLSTATE=42601
的报错,表明命令语法不正确。