当前位置:首页>网络学院>数据库开发教程>DB2教程>文章内容

DB2 9 数据库恢复功能使用教程

[ 来源:http://www.it55.com | 作者: | 时间:2007-12-18 | 收藏 | 推荐 ] 【


  清单 1 中的 Backup ID 栏显示被丢弃表的 ID 为 000000000000892700050108。这一信息对于恢复表非常重要。

  步骤 6. 向前恢复数据库

  现在已经获得了被丢弃表的 ID,下一步需要使用该表的备份 ID RB 数据库,这样才能够导入表的数据。在向前恢复数据库之前,需要确保有一个目录可供存储导入数据,比如说 c:\testdb1\exporttab1。使用以下命令向前恢复数据库

  ROLLFORWARD DATABASE testdb1 TO END OF LOGS

  AND STOP RECOVER DROPPED TABLE 000000000000892700050108 TO c:\testdb1\exporttab1

  使用 END OF LOGS 选项的作用是让 DB2 在执行备份操作后应用所有可用日记文件。

  步骤 7. 检查导入的数据文件

  完成数据库向前恢复之后,需要检查在 ROLLFORWARD 命令中指定路径。应该能够找到一个 .TXT 文件,打开该文件并验证其中包含的数据与意外丢弃表之前的数据相同。

  步骤 8. 连接到数据库并重新创建被丢弃的表

  验证导出文件之后,我们需要重新创建被丢弃的表并重新填入数据。被丢弃表的定义包含在步骤 5 的 LIST HISTORY 命令的输出中。连接到数据库并执行 CREATE TABLE 语句:

  CONNECT TO testdb1
  CREATE TABLE "ADMINISTRATOR"."TAB1" ( "NO" INTEGER ) IN "TS1"

  步骤 9. 导入数据

  重新创建表之后,可以使用以下命令将数据库重新导入到表中:

  IMPORT FROM c:\testdb1\exporttab1\Node0000\data.txt OF DEL INSERT INTO administrator.tab1

  IMPORT 工具将导出文件中的所有数据导回到表中并在成功后发送报告(未显示)。

  步骤 10. 验证恢复后的数据

  确保 IMPORT 过程中没有错误或报警,并且所有数据都已导回表中:

  SELECT * FROM tab1

  如果一切运行正常,则意外丢弃点之前的所有数据应该都在表中。

场景 4. 恢复到时间点

  如果某个表空间被丢弃或受到破坏,则定义在其中的表及数据将不可访问。要从此场景中恢复系统,需要一个可用的完全数据库备份映像并且需要将数据库配置为归档日志模式。本场景基于 表 4 中的系统配置。

表 4. 场景 4 中所使用的系统配置

组件 描述
操作系统 Windows XP Service Pack 2 / RHEL 4.0
DB2 版本和等级 DB2 UDB Enterprise Server Edition (ESE) 8.2.6 fixpak 13 / DB2 9.1 ESE fixpak 1
数据库名称 TESTDB1
表空间名称 TS1
表空间 TAB1

  步骤 1. 执行完全数据库备份

  TERMINATE

  FORCE APPLICATION ALL

  BACKUP DATABASE testdb1 TO c:\testdb1\backup

  务必记录下备份映像文件接收到的时间戳,因为恢复过程需要使用它。

  步骤 2. 创建一个新的表空间

  创建一个新的表空间 TS1,以供本恢复场景使用:

  CREATE TABLESPACE TS1 MANAGED BY DATABASE USING (FILE 'c:\testdb1\s4\C1.dat' 1000 )

  EXTENTSIZE 8 PREFETCHSIZE 24

  确认表空间和相关容器都已创建:

  LIST TABLESPACES

  LIST TABLESPACE CONTAINERS FOR n SHOW DETAIL

  其中,n 是 LIST TABLESPACES 输出中显示的表空间 ID。

  步骤 3. 创建一个表并对它执行一些操作

  创建表空间之后,创建一个名为 TAB1 的表并将它放到表空间中。在表中插入一些数据。为了让此场景更接近现实,使用一些命令强制 DB2 打开归档文件:

  •   CREATE TABLE tab1 (no INTEGER) IN TS1
  •   INSERT INTO tab1 VALUES(1)
  •   INSERT INTO tab1 VALUES(2)
  •   COMMIT
  •   TERMINATE
  •   ARCHIVE LOG FOR DATABASE testdb1
  •   CONNECT TO testdb1
  •   INSERT INTO tab1 VALUES(3)
  •   INSERT INTO tab1 VALUES(4)
  •   INSERT INTO tab1 VALUES(5)
  •   COMMIT
  •   SELECT * FROM tab1
  •   TERMINATE
  •   ARCHIVE LOG FOR DATABASE testdb1
  •   CONNECT TO testdb1

  步骤 4. 模拟表空间故障

  要在此场景中模拟一个故障,需丢弃表空间:

  DROP TABLESPACE ts1
  SELECT * FROM tab1

  将返回以下错误消息:

  SQL0204N Error table does not exist "Administrator.Tab1" is an Undefined Name.

  步骤 5. 恢复数据库

  丢弃表空间之后,这个表空间的所有内容也被丢弃。要恢复表空间,恢复上一次可用备份映像:

返回顶部
共5页: 上一页 [1] [2] [3] 4 [5] 下一页  

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]