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

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

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

  如果再次执行 LIST TABLESPACE CONTAINERS 命令,可以验证哪些容器丢失或不可用:

  LIST TABLESPACE CONTAINERS FOR 1 SHOW DETAIL

  在结果中,容器 C1、C2 和 C3 的 Accessible 状态将显示为 No。

  步骤 6. 恢复表空间备份映像

  要恢复备份映像,可以使用以下命令:

  TERMINATE

  RESTORE DATABASE testdb1 TABLESPACE (ts1) FROM C:\TESTDB1\BACKUP\TS1

  步骤 7. 检查表空间状态

  确保容器可以访问:

  LIST TABLESPACES SHOW DETAIL

  LIST TABLESPACE CONTAINERS FOR 1 SHOW DETAIL

  如果恢复成功,表空间 TS1 的状态应该为正常(0x000)并且所有容器应该都可以访问。

  步骤 8. 验证恢复是否成功

  CREATE TABLE tab1(no INTEGER) IN ts1

  注意:您可能会遇到以下这种情况:恢复表空间之后仍然需要进一步恢复操作。如果有任何日志文件修改未被应用(以确保数据库的一致性),都有可能出现这种情况。在这种情况下,使用以下任一命令完成恢复:

  ROLLFORWARD DATABASE testdb1 COMPLETE

  OR

  ROLLFORWARD DATABASE testdb1 TO END OF LOGS AND STOP

  以上命令将应用所有剩余的日志文件,从而将数据库恢复到一致状态。

场景 3. 某个表意外丢失

  对于含有上千个表的数据库环境,难免会错误地丢弃某个表。在本场景中,您将看到如何恢复意外丢弃的表。要执行这种类型的恢复,必须将数据库配置 为归档日志模式,并且可以使用完全数据库备份映像。要对丢弃的表执行恢复操作,表所在的表空间必须将 DROPPED TABLE RECOVERY 选项打开。可以在创建表空间的过程中设置此选项,也可以直接调用 ALTER TABLESPACE 语句。DROPPED TABLE RECOVERY 选项特定于表空间且局限于常规表空间。

  本场景基于 表 3 中的系统配置。

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

组件 描述
操作系统 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. 连接到数据库并执行生成日志记录的操作

  CONNECT TO testdb1

  CREATE TABLE tab1(no INTEGER) IN ts1

  TERMINATE

  ARCHIVE LOG FOR DATABASE testdb1

  CONNECT TO testdb1

  INSERT INTO tab1 VALUES(1)

  INSERT INTO tab1 VALUES(2)

  INSERT INTO tab1 VALUES(3)

  COMMIT

  TERMINATE

  ARCHIVE LOG FOR DATABASE testdb1

  CONNECT TO testdb1

  INSERT INTO tab1 VALUES(4)

  INSERT INTO tab1 VALUES(5)

  COMMIT

  TERMINATE

  ARCHIVE LOG FOR DATABASE testdb1

  CONNECT TO testdb1

  SELECT * FROM tab1 /* check the 5 committed values from TAB */

  步骤 3. 模拟意外丢弃表的场景

  DROP TABLE tab1

  COMMIT

  SELECT * FROM tab1

  将返回以下错误消息:

  Error: SQL0204N "Administrator.TAB1" is an undefined name

  步骤 4. 恢复数据库

  要恢复已被丢弃的表,先恢复数据库备份,然后执行向前恢复(rollforward)操作:

  TERMINATE

  FORCE APPLICATION ALL

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

  将返回以下消息:

  SQL2539W Warning! Restoring to an existing database that is the same as the Backup image database.

  The database files will be deleted.

  Do you want to continue? (Y/N)

  按 Y 键完成此过程。

  步骤 5. 检索已丢弃表的对象 ID

  使用以下命令检索意外丢弃的表的对象 ID:

  LIST HISTORY DROPPED TABLE ALL FOR DATABASE testdb1

  可以将返回的信息(比如说 清单 1 中显示的示例)复制到某个文本文件中以供未来引用。

  清单 1. LIST HISTORY 命令返回的信息

 Op Obi Timestamp Sequence Type Dev Earliest Log Current Log  Backup ID
-- --- ------------------ ---- --- ------------ ------------ -----------------------------
D  T  20070314142913                                    000000000000892700050108
------------------------------------------------------------------------------------------
"ADMINISTRATOR"."TAB1" resides in 1 table space(s):
00001 TS1
----------------------------------------------------------------------------
Comment: DROP TABLE
Start Time: 20070314142913
End Time: 20070314142913
Status: A
----------------------------------------------------------------------------
EID: 37
DDL: CREATE TABLE "ADMINISTRATOR"."TAB1" ( "NO" INTEGER )  IN "TS1" ;

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

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

网友评论

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