技术开发 频道

如何使用DB2 V9进行非增量重定向还原

非增量重定向还原测试数据库


    以上介绍了如何对数据库进行还原和前滚恢复,接下来看一下如何对不允许增量备份的数据库进行非增量重定向还原。 

    在数据库备份操作期间,保留了一个记录,它记录了与正在备份的表空间相关的所有表空间容器。在还原操作期间,会检查备份映像中列示的所有容器,以确定它们是否存在并可访问。若这些容器中的一个或多个由于介质故障(或由于任何其他原因)而不可访问,还原操作将失败。在这种情况下,还原操作需要重定向至不同的容器。 

    可以通过调用RESTORE DATABASE命令并指定REDIRECT参数来重新定义表空间容器,需要注意的是对使用自动存储功能的表空间需要重新指定自动存储路径,而不是重定向至不同的容器。在重定向还原操作期间,如果目录和文件容器不存在,将自动创建。数据库管理器不会自动创建设备容器。容器重定向为管理表空间容器提供了相当大的灵活性。 

    我们使用时间戳记为20070911175656的全备备份映像进行重定向还原,首先,连接上DB2TEST1数据库(如果要还原的是另外的机器,可以在其上面建立一个名称为DB2TEST1的数据库,再连接上),发出RESTORE DATABASE命令,使用REDIRECT选项,如清单16所示。

--清单 16.重定向还原数据库第一步 RESTORE DATABASE DB2TEST1 TAKEN AT 20070911175656 ON
/db2/databases/new_db2test1/auto_storage DBPATH ON
/db2/databases/new_db2test1 REPLACE EXISTING REDIRECT

    我们此次重定向还原数据库,通过ON和DBPATH ON参数将数据库路径和自动存储器路径都做了更改,即把数据库路径由/db2/databases/db2test1改成了/db2/databases/new_db2test1,把自动存储器路径由/db2/databases/db2test1/auto_storage改成了/db2/databases/new_db2test1/auto_storage。 

    DBPATH ON参数表示目标数据库目录。如果实用程序还原到一个现有数据库,将忽略次参数。知道的驱动器和目录必须是本地的。如果备份映像包括启用了自动存储器的数据库,且未指定ON参数,则此参数与TO参数是同义词,且仅数据库目录被更改,而与数据库关联的存储路径不更改。 

    TO target-directory参数我们这里没有使用,简单介绍一下这个参数,因为在实际应用过程中,也会经常用到。此参数表示目标数据库目录,如果实用程序还原到一个现有数据库,将忽略此参数。指定的驱动器和目录必须是本地的。如果备份映像包括启用了自动存储器的数据库,则仅数据库目录被更改,而与数据库关联的存储路径不更改。 

    ON参数重新定义与自动存储区数据库相关联的存储路径。此参数只能用在启用了自动存储器的数据库上,如果将此参数与未启用自动存储器的数据库将导致错误(SQL20321N)。使用此参数后, 不再使用备份映像中定义的现有存储路径,自动存储器表空间自动重定向至新路径。如果没有为自动存储器数据库指定此参数,则存储器路径仍为备份映像中定义的路径,此时,备份映像中定义的路径在我们要还原的服务器上要真实存在,否则整个重定向最终会失败。 

    可以指定一个或多个路径,各个路径之间用逗号分隔。每个路径必须有绝对路径名称且该路径必须在本地。如果磁盘上尚没有该数据库,且未指定DBPATH ON参数,则第一个路径用作目标数据库目录。 

    对不使用自动存储,且需要重新定义其容器的表空间TABLESPACE2发出SET TABLESPACE CONTAINERS命令。对TABLESPACE2的表空间标识可以通过LIST TABLESPACES SHOW DETAIL得到。表空间TABLESPACE1、SYSCATSPACE、TEMPSPACE1和USERSPACE1,都是使用自动存储管理,所以不需要发出SET TABLESPACE CONTAINERS命令。如清单17所示。

--清单 17.重定向还原数据库第二步 SET TABLESPACE CONTAINERS FOR 4 USING (FILE '/databases/tablespace1/tablespace_32k' 640)

    成功后完成了第一步和第二步之后,发出RESTORE DATABASE DB2TEST1 CONTINUE命令,如清单18所示。

--清单 18.重定向还原数据库第三步 RESTORE DATABASE DB2TEST1 CONTINUE

    如果第三步失败,或者如果已异常终止了还原操作,则可以从第一步重启启动重定向的还原。 

    命令成功后,连接数据库,会报数据库处于ROLL-FORWARD PENDING状态,这是因为归档数据库执行完还原后,需要进行前滚恢复,具体返回消息如下:

SQL1117N 由于 ROLL-FORWARD PENDING,不能连接或激活数据库 "DB2TEST1"。SQLSTATE=57019

    接下来我们对DB2TEST1继续进行前滚恢复,发出ROLLFORWARD命令,具体见清单19所示。

--清单 19.前滚恢复数据库 ROLLFORWARD DATABASE DB2TEST1 TO END OF LOGS AND STOP

    执行成功后,就可以正常访问数据库了,从返回的消息可以看到已处理的日志文件有S0000003.LOG,此时具体的消息如清单20所示下。

清单 20.前滚恢复数据库返回消息 

前滚状态

输入数据库别名 = DB2TEST1
节点数已返回状态 = 1

节点号 = 0
前滚状态 = 未暂挂
下一个要读取的日志文件 =
已处理的日志文件 = S0000003.LOG - S0000003.LOG
上次落实的事务 = 2007-09-11-13.51.46.000000 UTC

DB20000I ROLLFORWARD命令成功完成。

    重定向还原,至此完全做完,连接上DB2TEST1数据库,会发现有我们在第二次全备之后创建的示例表"DB2INST1"."EMPLOYEE"。

参考资料 

    学习

DB2 V9.1新增内容
数据恢复和高可用指南和参考 
管理指南:计划
DB2信息中心 

    获得产品和技术

• 下载 DB2 V9 测试版,试用本文中描述的特性。
• 使用可直接从 developerWorks 下载的 IBM 试用软件 构建您的下一个开发项目。 

    讨论

• 参与ITPUB论坛讨论。
• 参与 developerWorks blog 并加入 developerWorks 社区。 
 

0
相关文章