数与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