设为首页 加入收藏

TOP

使用DB2 V9进行非增量重定向还原(四)(一)
2014-11-23 22:08:49 来源: 作者: 【 】 浏览:22
Tags:使用 DB2 进行 增量 定向 还原

备份测试数据库

  现在我们来备份测试数据库,好方便我们在下面的例子中可以恢复到此时的状态,如清单10所示。

  --清单 10.备份数据库 

BACKUP DATABASE DB2TEST1 TO /db2/databases/backup/


  命令执行完后,显示如下:

  备份成功。此备份映像的时间戳记是:20070911175125

  创建示例表

  接下来我们创建示例表,在/home/db2inst1/目录下我们编写脚本employee.sql,内容如清单11所示。

  --清单 11. employee.sql内容

CREATE TABLE "DB2INST1"."EMPLOYEE" (
  "EMPNO" CHAR(6) NOT NULL ,
  "FIRSTNME" CHAR(12) NOT NULL ,
  "MIDINIT" CHAR(1) ,
  "LASTNAME" CHAR(15) NOT NULL ,
  "PHOTO" BLOB (10 M ) NOT NULL LOGGED NOT COMPACT,
  "WORKDEPT" CHAR(3) ,
  "PHONENO" CHAR(4) ,
  "HIREDATE" DATE ,
  "JOB" CHAR(8) ,
  "EDLEVEL" SMALLINT NOT NULL ,
  "SEX" CHAR(1) ,
  "BIRTHDATE" DATE ,
  "SALARY" DECIMAL(9,2) ,
  "BONUS" DECIMAL(9,2) ,
  "COMM" DECIMAL(9,2) )
  IN "TABLESPACE1" LONG IN "TABLESPACE2";


  接下来执行employee.sql脚本:

$db2 tvf /home/db2inst1/employee.sql


  执行成功后,表DB2INST1.EMPLOYEE的用户数据存放在TABLESPACE1,大型字段存放在TABLESPACE2中,其中TABLESPACE1是使用自动存储器,TABLESPACE2是使用的非自动存储器。

  再次备份测试数据库

  现在我们来再次备份测试数据库,好方便我们在下面的例子中可以恢复到此时的状态,如清单12所示。
--清单 12.备份数据库

BACKUP DATABASE DB2TEST1 TO /db2/databases/backup/


  命令执行完后,显示如下:

  备份成功。此备份映像的时间戳记是:20070911175656

  利用全量备份还原测试数据库

  使用RESTORE DATABASE 命令来在发生问题(例如介质或存储器故障、断电或者应用程序故障)后恢复数据库或表空间。如果已经备份了数据库或各个表空间,则可以在它们由于某种原因损坏时重新创建它们。

  需要注意的是,我们的备份介质中所包含的自动存储路径在我们要复原的环境中必须存在,这次还原我们将利用第一次全量备份的备份文件,时间戳为20070911175125,通过DB2命令行发出RESTORE DATABASE命令,具体如清单13所示。

  --清单 13.还原数据库

  RESTORE DATABASE DB2TEST1 FROM /db2/databases/backup/ TAKEN AT 20070911175125

  由于DB2TEST1数据库存在并且在发出RESTORE DATABASE命令时将被替换,所以会返回一个提示消息,内容如下:

  SQL2539W 警告!正在复原至与备份映像数据库相同的现有数据库。数据库文件将被删除。

  要继续吗 (y/n)

  我们指定y,将完成还原操作。

  数据库还原操作需要一个独占连接:启动任务后,restore实用程序会防止其他应用程序访问数据库,直到还原操作成功完成,所以不能再对该数据库运行任何应用程序,但表空间还原操作可以联机完成,前提是该数据库是归档数据库。

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

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

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

  --清单 14.前滚恢复数据库

  ROLLFORWARD DATABASE DB2TEST1 TO END OF LOGS AND STOP

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

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

  前滚状态

  输入数据库别名 = DB2TEST1

  节点数已返回状态 = 1

  节点号 = 0

  前滚状态 = 未暂挂

  下一个要读取的日志文件 =

  已处理的日志文件 = S0000001.LOG - S0000002.LOG

  上次落实的事务 = 2007-09-11-09.56.54.000000 UTC

  DB20000I ROLLFORWARD命令成功完成。
非增量重定向还原测试数据库

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

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

  可以通过调用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参数,则此参

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇DB2使用笔记-常用命令 下一篇使用DB2 V9进行非增量重定向还原..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: