实验报告
班级姓名学号
课程名称数据库
数据库的备份与恢复
指导老师 成绩_________
实验名称
年月日
实验
.1. 实验目的
在课程理论知识学习的基础上,使用DB2数据库管理系统工具对数据库的备份恢复操作有直接的体会。
.2. 实验内容
在了解DB2数据库管理系统中的数据库备份、恢复机制的基础上,进行有关DB2数据库管理系统的备份和恢复操作
.3.实验环境
普通PC、Windows系列操作系统、IBM DB2 v8.1 数据库管理系统
.4.实验步骤、结果与分析
1) 整个数据库意外删除和损坏 a) 执行完全数据库备份
b) 模拟故障
要模拟故障场景,可以完全删除数据库:
现在,尝试连接数据库,将报告以下错误,它提示找不到此数据库:
c) 创建一个新的数据库
要开始恢复过程,首先创建一个与丢弃数据库名称相同的数据库:
查看数据库目录的内容,确保数据库创建成功且目录正确:
d) 恢复数据库
恢复数据库备份映像。在本例中,我使用时间戳 20071211154219恢复备份映像:
e) 连接到数据库
尝试连接到数据库:
f) 数据库和对象验证
验证之前的对象仍然存在且可用,所有表空间均处于正常状态并且可以访问容器。所有表及表中的数据集合应该与执行备份时的状态一致。
2) 表空间容器意外丢弃或损坏的表空间容器 a) 获取定义的所有表空间的目录
b) 获取所有表空间容器信息的目录
c) 备份表空间
首先启用数据库以进行正向恢复:
将数据库配置参数 LOGRETAIN 或 USEREXIT 设置为ON,创新启动数据库实例;然后使所有应用程序与数据库断开连接,执行该数据库的脱机备份。这里是完整备份数据库,给出正向恢复的起始点。
返回以下消息:
d) 模拟表空间故障
模拟此场景,即表空间容器文件被某个用户意外删除:
随后,当我们连接到数据库并尝试执行与表空间 TS1 相关的操作时,将返回错误。
删除容器后,上面的命令将显示 TS1 的状态为 0x400 ,该代码表示脱机且不可访问状态。由于删除了三个容器,因此表空间不再处于正常状态(0x000)。 如果再次执行 LIST TABLESPACE CONTAINERS 命令,可以验证哪些容器丢失或不可用:
e) 恢复表空间备份映像
f) 检查表空间状态
恢复表空间之后仍然需要进一步恢复操作。如果有任何日志文件修改未被应用(以确保数据库的一致性),都有可能出现这种情况。
如果恢复成功,表空间 TS1 的状态应该为正常(0x000)并且所有容器应该都可以访问。
g) 验证恢复是否成功
3) 某个表意外丢失
a) 执行完全数据库备份
b) 连接到数据库并执行生成日志记录的操作
TERMINATE
DB2 ARCHIVE LOG FOR DATABASE testdb1
DB2 CONNECT TO testdb1 DB2 INSERT INTO tab1VALUES(1) DB2 INSERT INTO tab1VALUES(2) DB2 INSERT INTO tab1VALUES(3)
DB2 COMMIT
DB2 TERMINATE
DB2 ARCHIVE LOG FOR DATABASE testdb1 DB2 CONNECT TO testdb1 DB2 INSERT INTO tab1VALUES(4) DB2 INSERT INTO tab1VALUES(5)
DB2 COMMIT DB2 TERMINATE
DB2 ARCHIVE LOG FOR DATABASE testdb1 DB2 CONNECT TO testdb1
DB2 SELECT * FROM tab1 /* check the 5 committed values from TAB */
c) 模拟意外丢弃表的场景
DB2 DROP TABLE tab1 DB2 COMMIT
DB2 SELECT * FROM tab1
将返回以下错误消息:
d) 恢复数据库
要恢复已被丢弃的表,先恢复数据库备份,然后执行向前恢复(rollforward)操作:
e) 检索已丢弃表的对象 ID
f) 向前恢复数据库
g) 检查导入的数据文件
完成数据库向前恢复之后,需要检查在 ROLLFORWARD 命令中指定路径。应该能够找到一个 .TXT 文件,打开该文件并验证其中包含的数据与意外丢弃表之前的数据相同。
h) 连接到数据库并重新创建被丢弃的表
验证导出文件之后,我们需要重新创建被丢弃的表并重新填入数据。被丢弃表的定义包含在步骤 5 的 LIST HISTORY 命令的输出中。连接到数据库并执行 CREATE TABLE 语句:
CONNECT TO testdb1
CREATE TABLE \"USER\".\"TAB1\" ( \"NO\" INTEGER ) IN \"TS1\"
g) 导入数据
重新创建表之后,可以将数据库重新导入到表中:
IMPORT 工具将导出文件中的所有数据导回到表中并在成功后发送报告。 h) 验证恢复后的数据
如果一切运行正常,则意外丢弃点之前的所有数据应该都在表中。
4) 恢复到时间点
如果某个表空间被丢弃或受到破坏,则定义在其中的表及数据将不可访问。要从此场景中恢复系统,需要一个可用的完全数据库备份映像并且需要将数据库配置为归档日志模式。 a) 执行完全数据库备份
b) 创建一个新的表空间
创建一个新的表空间 TS1,以供本恢复场景使用,确认表空间和相关容器都已创建:
c) 创建一个表并对它执行一些操作
创建表空间之后,创建一个名为 TAB1 的表并将它放到表空间中。在表中插入一些数据。步骤在使用3)创建的表。 d) 模拟表空间故障
模拟一个故障,丢弃表空间,将返回以下错误消息:
e) 恢复数据库
丢弃表空间之后,这个表空间的所有内容也被丢弃。要恢复表空间,恢复上一次可用备份映像
f) 向前恢复数据库
恢复数据库之后,尝试连接到数据库:
DB2 将应用指定时间戳之前的所有日志,并恢复数据库的表空间。
g) 验证已恢复的表空间和表
因篇幅问题不能全部显示,请点此查看更多更全内容