实验九 数据库恢复<o:p></o:p>
实验内容<o:p></o:p>
第1 节– 决定DB2目前的日志配置参数<o:p></o:p>
第2 节– 循环日志条件下的数据库恢复<o:p></o:p>
第3 节– 归档日志条件下的数据库恢复<o:p></o:p>
注意:(1)实验用到的数据在DB2 Lab Data文件夹下的CF23中;(2)在实验过程中,可以用向导来完成实验,但请大家注意记录向导操作相应的SQL语句。<o:p></o:p>
第1节- 决定DB2目前的日志配置参数<o:p></o:p>
在前面的实验中,我们创建了一个新的数据库MUSICDB,库中包含五张表artists、albums、concerts、reorder和stock。表上设定了一定的完整性约束条件,并且表中已经导入了数据。<o:p></o:p>
1. 在本实验开始之前,先在命令中心执行脚本recovrst,将数据库的配置参数设置成本实验所需的值。记录脚本内容:<o:p></o:p>
<o:p> </o:p>
connect to musicdb;<o:p></o:p>
<o:p></o:p>
update db cfg for musicdb using logretain no;<o:p></o:p>
<o:p></o:p>
update db cfg for musicdb using dbheap 960 buffpage 160;<o:p></o:p>
<o:p></o:p>
update db cfg for musicdb using logfilsiz 6;<o:p></o:p>
<o:p></o:p>
update db cfg for musicdb using logprimary 3;<o:p></o:p>
<o:p></o:p>
update db cfg for musicdb using logsecond 2;<o:p></o:p>
<o:p></o:p>
force application all;<o:p></o:p>
<o:p></o:p>
terminate;<o:p></o:p>
<o:p></o:p>
<v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style="WIDTH: 261pt; HEIGHT: 200.25pt"><v:imagedata src="file:///C:\DOCUME~1\crystal\LOCALS~1\Temp\msohtml1\01\clip_image002.png" o:title=""></v:imagedata></v:shape><o:p></o:p>
<v:shape id="_x0000_i1028" type="#_x0000_t75" style="WIDTH: 333pt; HEIGHT: 163.5pt"><v:imagedata src="file:///C:\DOCUME~1\crystal\LOCALS~1\Temp\msohtml1\01\clip_image004.png" o:title=""></v:imagedata></v:shape><o:p></o:p>
2. 在命令中心执行connect to musicdb; 激活MUSICDB数据库。<o:p></o:p>
3. 查看MUSICDB数据库的“配置参数”<o:p></o:p>
(1)记录有多少个主日志文件(查看Logprimary参数)?当发出Active Database命令或者第一个应用程序连接到数据库时,DB2分配这些日志文件,主日志文件的大小一共是多少KB?<o:p></o:p>
<o:p> </o:p>
有3个主日志文件 <o:p></o:p>
发出Active Database命令:每个日志文件的大小为LOGFILSIZ+2 个4KB 页,因此所有主日志文件将占据3*(6+2)*4KB,即96KB 空间。 <o:p></o:p>
<v:shape id="_x0000_i1029" type="#_x0000_t75" style="WIDTH: 258pt; HEIGHT: 184.5pt"><v:imagedata src="file:///C:\DOCUME~1\crystal\LOCALS~1\Temp\msohtml1\01\clip_image006.png" o:title=""></v:imagedata></v:shape><o:p></o:p>
<v:shape id="_x0000_i1030" type="#_x0000_t75" style="WIDTH: 225pt; HEIGHT: 212.25pt"><v:imagedata src="file:///C:\DOCUME~1\crystal\LOCALS~1\Temp\msohtml1\01\clip_image008.png" o:title=""></v:imagedata></v:shape><o:p></o:p>
(2)记录有多少个辅助日志文件(查看Logsecond参数)?辅助日志文件在事务未提交但主日志文件写满的时候根据需要一次分配一个辅助日志文件。<o:p></o:p>
2个 辅助日志文件 <o:p></o:p>
<o:p> </o:p>
<v:shape id="_x0000_i1031" type="#_x0000_t75" style="WIDTH: 225pt; HEIGHT: 212.25pt"><v:imagedata src="file:///C:\DOCUME~1\crystal\LOCALS~1\Temp\msohtml1\01\clip_image008.png" o:title=""></v:imagedata></v:shape><o:p></o:p>
<o:p> </o:p>
4. 查看当前系统所使用的日志类型(循环日志circular logging,还是归档日志Log retention logging)?,哪些参数可以提供日志类型的相关信息?<o:p></o:p>
<o:p> </o:p>
LOGRETAIN 和USEREXIT 可被用来设置系统采用何种日志类型,本实验中这两个参数均被设为默认值否,因此系统采用循环日志方式。如果LOGRETAIN 被设为Recovery 或者USEREXIT 被设为Yes,那么系统将采用归档日志方式。 <o:p></o:p>
<o:p> </o:p>
<v:shape id="_x0000_i1032" type="#_x0000_t75" style="WIDTH: 225pt; HEIGHT: 212.25pt"><v:imagedata src="file:///C:\DOCUME~1\crystal\LOCALS~1\Temp\msohtml1\01\clip_image008.png" o:title=""></v:imagedata></v:shape><o:p></o:p>
<o:p> </o:p>
5. 循环日志支持哪些类型的数据库恢复操作,崩溃恢复(Crash Recovery)、版本恢复(Version Recovery),还是前滚恢复(Roll-forward Recovery)?<o:p></o:p>
循环日志只能支持崩溃恢复和版本恢复,但还不能支持前滚恢复 <o:p></o:p>
6. 配置参数中的Logpath指定日志文件的保存路径,查看并记录本实验的日志文件保存在哪里?<o:p></o:p>
F:\DB2\NODE0000\SQL00001\SQLOGDIR <o:p></o:p>
<o:p> </o:p>
<v:shape id="_x0000_i1033" type="#_x0000_t75" style="WIDTH: 341.25pt; HEIGHT: 288.75pt"><v:imagedata src="file:///C:\DOCUME~1\crystal\LOCALS~1\Temp\msohtml1\01\clip_image012.png" o:title=""></v:imagedata></v:shape><o:p></o:p>
<o:p> </o:p>
(数据库的工作单元可能被意外地中断,假如部分工作单元的所有变更完成和提交之前发生了电源故障,那么系统就需要执行崩溃恢复再次回到一致状态。命令restart database可以实现这个功能。如果AUTORESTART被设置成开(默认方式),那么崩溃发生后,应用程序首次连接到数据库时将会自动启动崩溃恢复机制。本实验AUTORESTART参数被设置为开。)<o:p></o:p>
<o:p> </o:p>
7. 在命令中心的“交互式”标签页,选择“命令中心-选项”,确保“执行”中的“自动落实SQl语句”未被选中。然后,执行下列语句:<o:p></o:p>
connect to musicdb;<o:p></o:p>
update stock set qty=qty+1;<o:p></o:p>
如果没有出现错误,继续执行:<o:p></o:p>
update stock set qty=qty-1; 这时系统会返回SQL<st1:chmetcnv tcsc="0" hasspace="False" sourcevalue="964" negative="False" numbertype="1" unitname="C" w:st="on">0964C</st1:chmetcnv><o:p></o:p>
记录SQL<st1:chmetcnv tcsc="0" hasspace="False" sourcevalue="964" negative="False" numbertype="1" unitname="C" w:st="on">0964C</st1:chmetcnv>给出的错误提示是什么:<o:p></o:p>
<o:p></o:p>
根据提示,要如何解决这个问题:<o:p></o:p>
<o:p></o:p>
(提示:未Commit或Rollback的事务,会长期占用日志,导致日志满)
<o:p></o:p>
<v:shape id="_x0000_i1034" type="#_x0000_t75" style="WIDTH: 396pt; HEIGHT: 219.75pt"><v:imagedata src="file:///C:\DOCUME~1\crystal\LOCALS~1\Temp\msohtml1\01\clip_image014.png" o:title=""></v:imagedata></v:shape><o:p></o:p>
第2节- 循环日志条件下的数据库恢复<o:p></o:p>
将命令中心的执行选择为“自动落实SQL语句”。<o:p></o:p>
1. 备份musicdb数据库:<o:p></o:p>
¨ 只能进行脱机备份<o:p></o:p>
¨ 脱机备份要求独占数据库,如果仍有其他程序连接到数据库,则备份不成功,此时在命令中心分别执行以下命令:<o:p></o:p>
force application all;<o:p></o:p>
terminate;<o:p></o:p>
强制所有用户与数据库断开连接。<o:p></o:p>
记录这次备份的时间戳:<o:p></o:p>
2007-12-19 23:34:55 <o:p></o:p>
¨ 提示:在控制中心选择“工具-日志”,在“日志”窗口选择“数据库历史”,找到musicdb数据库,记录本次备份的开始日期,开始时间,结束日期,结束时间。<o:p></o:p>
<v:shape id="_x0000_i1035" type="#_x0000_t75" style="WIDTH: 4in; HEIGHT: 240.75pt"><v:imagedata src="file:///C:\DOCUME~1\crystal\LOCALS~1\Temp\msohtml1\01\clip_image016.png" o:title=""></v:imagedata></v:shape><o:p></o:p>
<v:shape id="_x0000_i1036" type="#_x0000_t75" style="WIDTH: 297pt; HEIGHT: 159pt"><v:imagedata src="file:///C:\DOCUME~1\crystal\LOCALS~1\Temp\msohtml1\01\clip_image018.png" o:title=""></v:imagedata></v:shape><o:p></o:p>
<v:shape id="_x0000_i1037" type="#_x0000_t75" style="WIDTH: 414.75pt; HEIGHT: 108pt"><v:imagedata src="file:///C:\DOCUME~1\crystal\LOCALS~1\Temp\msohtml1\01\clip_image020.png" o:title=""></v:imagedata></v:shape><o:p></o:p>
<o:p> </o:p>
2. 在数据库成功备份后,改变数据库中的数据。<o:p></o:p>
(1)执行:<o:p></o:p>
select name, title from artists a, albums b where a.artno =77 and a.artno= b.artno;<o:p></o:p>
记录执行结果:<o:p></o:p>
NAME TITLE<o:p></o:p>
<o:p></o:p>
(2)执行:<o:p></o:p>
update artists set name='Melanie and the Mechanics' where artno=77; update albums set title ='Unmaterial Girl' where itemno=261;<o:p></o:p>
再次执行:<o:p></o:p>
select name, title from artists a, albums b where a.artno =77 and a.artno= b.artno;<o:p></o:p>
记录修改后的数据:<o:p></o:p>
NAME TITLE<o:p></o:p>
<o:p></o:p>
<v:shape id="_x0000_s1027" type="#_x0000_t75" style="MARGIN-TOP: 0.2pt; Z-INDEX: 2; MARGIN-LEFT: 0px; WIDTH: 333pt; POSITION: absolute; HEIGHT: 221.25pt; mso-position-horizontal: left"><v:imagedata src="file:///C:\DOCUME~1\crystal\LOCALS~1\Temp\msohtml1\01\clip_image022.png" o:title=""></v:imagedata><w:wrap side="right" type="square"></w:wrap></v:shape>
<o:p></o:p>
3. 假设现在出现磁盘故障,使用刚刚对musicdb的备份来恢复数据库。<o:p></o:p>
再次执行上述查询,则数据恢复到了更新前的状态,但由于DB2默认使用的是循环日志,不支持前滚恢复,所以无法找回对数据库所作的修改。<o:p></o:p>
<o:p> </o:p>
第3节- 归档日志条件下的数据库恢复 <o:p></o:p>
1. 采用归档日志方式:<o:p></o:p>
(1)修改musicdb的配置参数,将log_retain参数的值修改为recovery<o:p></o:p>
(2)若该参数不能自动启用,则重新启动实例,以及数据库。<o:p></o:p>
可以通过向导,也可以通过命令修改配置参数:<o:p></o:p>
update db cfg for musicdb using logretain recovery<o:p></o:p>
记录在重新启动实例后,数据库是否直接可以使用,出现了什么错误:<o:p></o:p>
不能执行连接或激活数据库 <o:p></o:p>
<v:shape id="_x0000_i1038" type="#_x0000_t75" style="WIDTH: 339pt; HEIGHT: 129pt"><v:imagedata src="file:///C:\DOCUME~1\crystal\LOCALS~1\Temp\msohtml1\01\clip_image024.png" o:title=""></v:imagedata></v:shape><o:p></o:p>
<v:shape id="_x0000_i1027" type="#_x0000_t75" style="WIDTH: 414.75pt; HEIGHT: 186pt"><v:imagedata src="file:///C:\DOCUME~1\crystal\LOCALS~1\Temp\msohtml1\01\clip_image026.png" o:title=""></v:imagedata></v:shape><o:p></o:p>
2. 在命令中心执行以下命令:<o:p></o:p>
(1)查询编号为77的artist的name,SQL语句为:<o:p></o:p>
select name, title from artists a, albums b where a.artno =77 and a.artno= b.artno; <o:p></o:p>
执行结果为: <o:p></o:p>
分享到:
相关推荐
1. 注意事项 2. 数据库安装 ——2.1 DB2 Express-C Version 11.1 下载 ——2.2 数据库安装步骤 3. 创建数据库 —— 3.1 找到服务器上面的命令窗口 —— 3.2 创建数据库详解 ...—— 7.2 卸载DB2数据库
db2通用数据库自学教程db2通用数据库自学教程db2通用数据库自学教程db2通用数据库自学教程db2通用数据库自学教程db2通用数据库自学教程db2通用数据库自学教程db2通用数据库自学教程db2通用数据库自学教程db2通用...
很好地DB2入门知识,很好,你值得拥有!
北邮数据库实验五-数据库的备份与恢复 ... 实验内容 在了解DB2数据库管理系统中的数据库备份、恢复机制的基础上,进行有关DB2数据库管理系统的备份和恢复操作 .3.实验环境 普通PC、Windows系列操作系统、IBM DB2 v8.1
window linux DB2数据库恢复
db2数据库安装包 db2数据库链接服务器驱动 db2数据库安装方法
db2数据库恢复 增量备份和恢复 版本恢复
数据库连接工具,可以连接多种数据库,access、oracle、mysql、postgreSQL、db2等等,功能强大、创建表快捷
DB2数据库调整数据库性能,DB2数据库调整数据库性能
db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训...
DB2和orcale数据库表分区相关操作和数据库的备份与恢复
DB2数据库灾难行恢复步骤,IBM服务无果,最后自己总结可用的恢复步骤 仅限DB2数据库
启动数据库: 启动db2服务:db2start 激活数据库实例:db2 activate database <db_name> 查看激活状态的数据库:db2 list active databases 关闭数据库: 失效数据库实例:db2 deactivate database <db_name> 关闭...
基于Linux系统下的TSM和DB2数据库的还原性测试03-TSM自身数据库及DB2异地跨节点恢复
DB2数据库备份与恢复 从入门开始 一步步讲述备份与恢复
db2数据库备份和恢复,这是本人通过上网搜集整理绝对有用
DB2-SQL 数据库函数 DB2-SQL 数据库函数
DB2数据库实践基础教程 内容简介:《DB2数据库实践基础教程》是《数据库原理与DB2应用教程》(杨鑫华、丁传华、赵慧敏编著,北京,清华大学出版社,2007年)的配套教材,着重于对实践操作的介绍,包括DB2实验环境...
DB2 怎么使用语句自动产生数据库 尤其当数据库没有测底删掉成功的时候
详细介绍db2数据库备份与恢复 内容如: 1、离线全备份 1)、首先确保没有用户使用DB2: $db2 list applications for db sample 2)、停掉数据库并重新启动,以便断掉所有连接: db2stop force db2start 3)、...