楼主: text1978

[FAQ] 冷备份还原数据库是不是不能前滚恢复?

[复制链接]
论坛徽章:
16
ITPUB元老
日期:2006-12-29 17:11:00秀才
日期:2015-12-25 15:31:102015年新春福章
日期:2015-03-06 11:57:31沸羊羊
日期:2015-03-04 14:43:432012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412010新春纪念徽章
日期:2010-03-01 11:21:02祖国60周年纪念徽章
日期:2009-10-09 08:28:002009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:鼠
日期:2008-01-02 17:35:53
41#
发表于 2004-5-11 14:35 | 只看该作者
如果在归档方式正常关机作冷备份,在所有文件全部丢失的情况下,restore所有冷备文件,在mount状态,recover database using backup controlfile untill cancel恢复数据库,这是数据库其实是没有考虑使用旧的控制文件,而是直接考虑利用可用归档日至,到最后,因为最后的重做日至丢失,所以只能恢复到最后一个归档日至,也就只能用resetlogs打开数据库,做不完全恢复。不知道这样理解是否正确?

如果重建控制文件,恢复时利用最后的重做日志,这样的话是否可以作完全恢复?

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
42#
发表于 2004-5-11 14:47 | 只看该作者
最初由 cyr1974 发布
[B]这是数据库其实是没有考虑使用旧的控制文件,而是直接考虑利用可用归档日至, [/B]


数据库如何得知道要从哪个日志开始?

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
43#
发表于 2004-5-11 14:51 | 只看该作者
最初由 ZALBB 发布
[B]你的结论是,即使是新创建的控制文件,也可以使用来恢复到数据库关闭的最后一刻? [/B]

是这样的

使用道具 举报

回复
论坛徽章:
0
44#
发表于 2004-5-11 14:51 | 只看该作者
做了测试,只要有current online redo log files和archive log files就可以完全恢复。如果只有archive log files就只能恢复到最后一个归档日志,步骤如下:
1.还原所有文件,control files、data files、redo log files等
2.startup mount
3.recover database using backup controlfile until cancel;输入“AUTO”
4.recover database using backup controlfile until cancel;输入“CANCEL”。
5.alter database open resetlogs;
由于没有当前的online redo log files,所以第4步只能输入“CANCEL”。而且从第3步到第5步要连续执行。

使用道具 举报

回复
论坛徽章:
0
45#
发表于 2004-5-11 15:05 | 只看该作者
我的理解是recover database using backup controlfile 语句是使用备份的控制文件恢复数据库,但oracle最先做的是利用archive log files更新contorl files头部,然后再同步data files。

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
46#
 楼主| 发表于 2004-5-11 15:56 | 只看该作者

Re: 我不认同这句话

最初由 ZALBB 发布
[B]冷备的时刻的在线日志是没有用的。因为这些信息最终会写到随后的归档中。
--这些信息最终会写到随后的“数据文件”中。 [/B]


冷备份时候的在线日志怎么会有用的?我知道你的意思是在线日志可以用于数据文件的重构,但是冷备份时刻的在线日志毕竟是写到随后的归档的嘛,而且用归档来重构数据来来得快些。

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
47#
 楼主| 发表于 2004-5-11 16:09 | 只看该作者
最初由 cyr1974 发布
[B]如果在归档方式正常关机作冷备份,在所有文件全部丢失的情况下,restore所有冷备文件,在mount状态,recover database using backup controlfile untill cancel恢复数据库,这是数据库其实是没有考虑使用旧的控制文件,而是直接考虑利用可用归档日至,到最后,因为最后的重做日至丢失,所以只能恢复到最后一个归档日至,也就只能用resetlogs打开数据库,做不完全恢复。不知道这样理解是否正确?

如果重建控制文件,恢复时利用最后的重做日志,这样的话是否可以作完全恢复? [/B]


正解
可以参考kingdom的测试。
我的理解是:在一般情况下oracle是用控制文件指导恢复。但是在完全冷备还原数据库的时候。控制文件认为数据是一致的,没有必要恢复。所以用recover database using backup controlfile untill cancel来从归档提取信息重构控制文件,然后控制文件在指导数据文件的恢复。
我做了一个测试
冷备+ACRH0001+ACRH0002+ACRH0003. 归档02。03之间做了一个控制文件的备份。然后以备份的控制文件恢复即:recover database untill cancel。发现ACRH0003是不能恢复的。

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
48#
发表于 2004-5-11 16:49 | 只看该作者
最初由 cyr1974 发布
[B]
老大:重新创建控制文件这种情况是否还需要最后的重作日至才能完全恢复?另外如果恢复到cancel,没有最后的重做日至,这样的话肯定要丢失部分数据。这样理解是否准确? [/B]


重新创建控制文件自动恢复的话,在你open的时候自己会应用联机日志文件的,跟 shutdown  abort 启动一样的效果

这样还不用 resetlogs



BTW : 关于这个问题,大家多讨论多做实验,是很有好处的
所以我并没有一开始就给出什么结论  更没有做什么实验,那样子的话各位理解的不是很深刻

备份与恢复 真正地理解了原理,其实就觉得应对不同的情况,不过感觉就是一个非常简单的游戏

使用道具 举报

回复
论坛徽章:
4
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB技术丛书作者
日期:2010-09-26 15:24:56
49#
发表于 2004-5-11 16:54 | 只看该作者

Re: 冷备份还原数据库是不是不能前滚恢复?

我的理解:

[B]1,有冷备份,并且有冷备份到数据库损坏时刻的所有归档。

如果数据库完全损坏,只能重建库。然后用冷备还原。[/B]

这说明只要这个冷备是有效备份,并且所有归档都可用,那么数据库一定可以恢复。根本不需要重建数据库。只不过如果你的联机日志文件也全都丢失了,那么很可能丢失部分数据(看是否checkpoint了)。

[B]2,是不是只能用冷备份拷贝恢复还原到冷备份时刻。并不能应用归档前滚?[/B]

归档是用于恢复数据库的,和前滚是两个概念。找你上面的条件,最次也能恢复到仅仅丢失最后一次checkpoin之后的情况,如果checkpoint之后没有其他操作,应该是可以恢复到不丢失一点数据的。

[B]3,因为在做冷备的时候数据文件,日志文件,控制文件,归档文件的SCN号是一致的,那么oracle就认为没有必要恢复了? [/B]

要恢复到最新的时刻(数据库损坏的时刻),当然需要recovery数据库,并应用自冷备以来的所有归档。否则你冷备之后到数据库损害之前这段数据从哪里来呢,呵呵。不过你要仅仅要求恢复到冷备的时候当然是可以得,作基于时间点的不完全恢复就可以了。


总结:
1,冷备、热备跟完全恢复的理解:
    如果数据库工作在归档模式下,只要备份全(数据文件,控制文件,归档文件。个别时候也需要备份日志文件,例如线程恢复的情况,或者OPS这样的系统),无论是冷备或热备,都一定可以恢复。一般情况下日志文件不用备份。

2,使用旧的控制文件和重建控制文件:
    如果使用旧控制文件备份的(或者用resetlog选项重建控制文件)时,必须用using backup controlfie选项恢复数据库,而且必须用resetlog打开数据库,因为这个全新的控制文件中不包含当前联机日志和数据文件的结束scn,自然也就不能在恢复中使用联机日志。如果所有控制文件都丢失或者联机日志全都丢失了,当然要重建控制文件。

建议搞清楚几个概念:
冷备和热备《——》物理备份和逻辑备份
完全恢复和不完全恢复

使用道具 举报

回复
论坛徽章:
0
50#
发表于 2004-5-11 17:11 | 只看该作者
请问:
除了发生日志切换、强制归档和checkpoint外,还有没有其他机制可以激活ARCn呢?

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表