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

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

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


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

  要执行完全脱机数据库备份,可以使用以下命令:

  TERMINATE

  FORCE APPLICATION ALL

  BACKUP DATABASE testdb1 TO c:\testdb1\backup

  需要注意备份文件名称中生成的 ID。它类似于:20060411154219。这个 ID 只是备份映像的时间戳,恢复过程中需要使用它。

  步骤 2. 模拟故障

  要模拟故障场景,可以完全删除数据库

  TERMINATE

  FORCE APPLICATION ALL

  DROP DATABASE testdb1

  现在,尝试连接数据库

  CONNECT TO testdb1

  将报告以下错误,它提示找不到此数据库

  Error: SQL1013N Database alias name or Database name "testdb1" could not found.

  步骤 3. 创建一个新的数据库

  要开始恢复过程,首先创建一个与丢弃数据库名称相同的数据库

  CREATE DATABASE testdb1

  查看数据库目录的内容,确保数据库创建成功且目录正确:

  LIST DB DIRECTORY

  步骤 4. 恢复数据库

  恢复数据库备份映像。在本例中,我使用时间戳 20060411154219 恢复备份映像:

  RESTORE DATABASE testdb1 FROM c:\testdb1\backup TAKEN AT 20060411154219 INTO testdb1

  将返回以下报警消息

  SQL2523W: Restoring to an existing database that is different from the database on the backup image. The target database will be overwritten by the backup version. The roll-forward recovery logs associated with the target database will be overwritten.

  按 Y 键继续运行。该操作将把数据库备份恢复到前一步骤中创建的数据库。成功恢复映像之后,数据库将与备份时的数据库完全一致。

  步骤 5. 连接到数据库

  尝试连接到数据库

  CONNECT TO testdb1

  可能会返回以下错误消息:

  SQL1117N A connection to or activation of database "testdb1" cannot be made because of Roll-Forward Pending SQLSTATE=57019.

  出现错误的原因可能是,必须使用某些日志文件进行一致性检查。使用以下命令将数据库恢复到一致状态:

  ROLLFORWARD DATABASE testdb1 COMPLETE

  再次尝试连接到数据库

  CONNECT TO testdb1

  步骤 6. 数据库和对象验证

  验证之前的对象仍然存在且可用,比如说:

  LIST TABLESPACES SHOW DETAIL

  LIST TABLES

  上一条命令应该会提示,所有表空间均处于正常状态并且可以访问容器。所有表及表中的数据集合应该与执行备份时的状态一致。

场景 2. 表空间容器意外丢弃或损坏的表空间容器

  本场景将展示当一个或多个表空间容器丢失或损坏时如何恢复数据库系统。出现此情况的原因可以是人为错误(比如说,某个用户删除了某个目录或文件)或数据文件损坏问题。本场景基于 表 2 中的配置。

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

组件 描述
操作系统 Windows XP Service Pack 2 / RHEL 4.0
DB2 版本和等级 DB2 UDB Enterprise Server Edition (ESE) V8.2.6 fixpak 13 / DB2 V9.1 ESE fixpak 1
数据库名称 TESTDB1
表空间名称 TS1
TS1 中的容器 c1.dat, c2.dat, c3.dat, c4.dat

  步骤 1. 获取定义的所有表空间的目录

  CONNECT TO testdb1

  LIST TABLESPACES SHOW DETAIL

  步骤 2. 获取所有表空间容器信息的目录

  LIST TABLESPACE CONTAINERS FOR 1 SHOW DETAIL

  注意:上面命令中的 “1” 是本环境中表空间 TS1 的表空间 ID。它是通过之前 LIST TABLESPACES SHOW DETAIL 命令中的输出获得的。所使用的每个表空间 ID 都需要重复这个命令。

  步骤 3. 备份表空间

  TERMINATE

  FORCE APPLICATION ALL

  BACKUP DATABASE testdb1 TABLESPACE ts1 TO c:\testdb1\backup\ts1

  如您所见。本场景假定用户对大多数重要的表空间都执行了备份(供恢复使用)。

  步骤 4. 模拟表空间故障

  手动模拟此场景,即表空间容器文件被某个用户意外删除:

  DEL C:\TESTDB1\TS1\C1.DAT

  DEL C:\TESTDB1\TS1\C2.DAT

  DEL C:\TESTDB1\TS1\C3.DAT

  随后,当我们连接到数据库并尝试执行与表空间 TS1 相关的操作时,将返回错误。比如说:

  CONNECT TO testdb1

  CREATE TABLE tab1(c1 INTEGER) IN ts1

  返回以下错误消息:

  SQL0290N Table space access is not allowed.

  还可以使用以下命令检查表空间状态:

  LIST TABLESPACES SHOW DETAIL

  删除容器后,上面的命令将显示 TS1 的状态为 0x400 ,该代码表示脱机且不可访问状态。由于删除了三个容器,因此表空间不再处于正常状态(0x000)。

(编辑:IT资讯之家 www.it55.com

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

网友评论

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