笔记38-徐 文件还原步骤

笔记38-徐 文件还原步骤

 1 --文件还原步骤
 2 --文件还原、页面还原、段落还原都需要日志备份
 3 --一个大数据库会有若干文件和文件组。如果损坏只是集中在其中一个文件或文件组上,而
 4 --其他大部分数据文件都没有损坏,使用传统的数据库还原方案将所有的文件重建,会很
 5 --浪费时间。如果SQL只是把坏掉的那个数据文件或文件组重建,肯定能节省时间
 6 
 7 --可是数据库的事务修改是会分布在各个数据文件上的。如果用备份只恢复其中一个文件,
 8 --而其他文件不恢复,那他们的状态一定会不一致。一定会有许多修改在被恢复的文件里
 9 --没有被包含进来。这样的数据库是无法使用的。为了使新恢复的文件能够自动恢复备份
10 --以后做的修改,SQL需要借助事务日志。首先在恢复之前,必须做一次当前数据库的日志
11 --备份(即是所谓的尾日志备份)。恢复所有日志备份,SQL就能利用前滚的方法将数据
12 --文件恢复到一致的时间点
13 
14 
15 --从文件备份和差异文件备份中还原一个或多个受损文件的步骤如下:
16 --(1)创建活动事务日志的尾日志备份
17 --这一步是文件还原的至关重要的一步。对于离线文件还原,在文件还原之前必须始终先
18 --进行一次尾日志备份。对于在线文件还原,在文件还原之后必须始终进行一次日志备份。
19 --此日志备份对于将文件恢复到与数据库的其余部分一致的状态至关重要。如果因为日志
20 --已经损坏而无法执行此操作,则文件还原无法进行,必须还原整个数据库
21 
22 --(2)从每个损坏的文件的最新文件备份还原相应文件
23 
24 --(3)针对每个还原的文件,还原最近的差异文件备份(如果有)
25 
26 --(4)按顺序还原事务日志备份,从覆盖最早还原文件的备份开始,到在步骤1中创建的尾
27 --日志备份结束
28 
29 --虽然这里恢复的日志备份针对的是整个数据库,但是事务日志备份的恢复会比较迅速,因为
30 --这里仅仅处理对还原文件所做的更改。与还原整个数据库相比,这样做会节省很多时间
31 
32 
33 ---------------------------------------示例---------------------------------------------------
34 --一个名为adb的数据库(使用完整恢复模式)包含3个文件组。文件组A为读/写文件组,文件组B和C是
35 --只读文件组。最初,所有文件组都处于在线状态
36 
37 --现在文件组A中的文件a1已经损坏,DBA决定在数据库处于在线状态时还原该文件
38 --(1)在线还原文件a1
39 RESTORE DATABASE GPOSDB FILE='a1' FROM backup1 WITH norecovery
40 
41 --(2)此时,文件a1处于restoring状态,文件组A处于离线状态
42 
43 --(3)完整文件还原之后,DBA进行新的日志备份以确保捕获到该文件离线时的点(之后曾经做过两次日志备份)
44 BACKUP LOG GPOSDB TO log_backup3 WITH copy_only
45 --(4)在线还原日志备份
46 RESTORE LOG GPOSDB FROM log_backup1 WITH norecovery
47 RESTORE LOG GPOSDB FROM log_backup2 WITH norecovery
48 RESTORE LOG GPOSDB FROM log_backup3 WITH norecovery
49 
50 --(5)文件a1现在处于在线状态。数据库恢复完成

 

posted @ 2013-07-27 16:09  桦仔  阅读(454)  评论(0编辑  收藏  举报