[ 来源: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 |
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) 网友评论[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]图片文章 |