12
返回列表 发新帖
楼主: beyondluk

[讨论] 为什么ORACLE不需要MYSQL中DOUBLE WRITE这种机制

[复制链接]
论坛徽章:
122
现任管理团队成员
日期:2011-05-07 01:45:08
11#
发表于 2020-5-25 18:08 | 只看该作者
wolfop 发表于 2020-5-22 17:51
都是没用的,研究这个就跑偏了。这么多机制并不能保证不出问题,腾讯云出现过FLASH微码静默失效,SAN存储也 ...

正好提到adg,adg现在开 db_ultra_safe 是常规步骤么?我看了好几个公司的adg,根本不开db_ultra_safe

使用道具 举报

回复
论坛徽章:
78
ITPUB15周年纪念
日期:2020-08-28 17:23:53双鱼座
日期:2016-03-19 19:38:31秀才
日期:2016-02-18 09:31:52秀才
日期:2016-01-25 15:02:04双子座
日期:2016-01-19 20:35:54秀才
日期:2016-01-13 12:14:26秀才
日期:2015-12-25 15:31:10秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-14 14:56:09秀才
日期:2015-12-14 14:51:16
12#
发表于 2020-6-4 14:05 | 只看该作者
zergduan 发表于 2020-5-25 18:08
正好提到adg,adg现在开 db_ultra_safe 是常规步骤么?我看了好几个公司的adg,根本不开db_ultra_safe

一部分是手工设置DB_BLOCK_CHECKING DB_LOST_WRITE_PROTECT DB_BLOCK_CHECKSUM ;
更多的是也不设置,但是毕竟两套截然不同的集群硬件,同时发生错误的几率也会大大降低。
而且有些配置本地还有asm的修复功能。

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2014-02-20 06:00:12金牛座
日期:2016-01-24 17:24:26秀才
日期:2016-06-24 09:21:04
13#
发表于 2020-11-9 10:07 | 只看该作者
本帖最后由 Ashic 于 2020-11-9 10:20 编辑
lorikyo 发表于 2020-5-19 17:25
因为mysql的redo 是一个逻辑的日子 记录的是SQL语言 ,所以需要一个基本的数据块来恢复而oracle的redo是物 ...

innodb redo和oracle redo都是物理逻辑的吧

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2014-02-20 06:00:12金牛座
日期:2016-01-24 17:24:26秀才
日期:2016-06-24 09:21:04
14#
发表于 2020-11-9 10:20 | 只看该作者
sqysl 发表于 2020-5-20 12:08
嗯,你说的是对数据块的校验,校验完了对数据块进行重构和恢复才是最主要的,oracle发现数据块有问题时可以 ...

个人赞同您说的, oracle undo redo是基于block的, 而mysql undo redo是基于record的. 但是有个问题不太理解, 既然通过undo redo就能恢复"partial write", 那么为什么oracle当执行手工begin backup命令时,each time a block is changed the datbase writes the before-image of the entire block to the redo stream before modifying the block. Then, the database also records the changes to the block in the redo log,通过将oracle block的前镜像写入redo,使得在恢复是能够获取oracle block的整个before-image,以此为基础,在通过redo中的记录进行恢复.所以如果想要恢复split block,是要有该split block的整个前镜像的吧? 不然的话, 按您所说通过redo undo就可以解决partial write问题, oracle手工热备又何必要写before-image of the entire block to the redo stream呢?

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2014-02-20 06:00:12金牛座
日期:2016-01-24 17:24:26秀才
日期:2016-06-24 09:21:04
15#
发表于 2020-11-9 10:21 | 只看该作者
感觉roger的靠谱 https://www.modb.pro/db/23489?ywm=

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
16#
发表于 2020-11-9 15:01 | 只看该作者
本帖最后由 sqysl 于 2020-11-9 15:09 编辑
Ashic 发表于 2020-11-9 10:20
个人赞同您说的, oracle undo redo是基于block的, 而mysql undo redo是基于record的. 但是有个问题不太理解 ...

1、之前帖子里讲的,是Oracle正常运行过程中,如果发现“partial write”的block,可以通过undo回滚掉,然后,再次通过redo,就可以修复该block;
2、你这里讲的手工备份过程中,修改block前复制一份到redo里,这样做,是为了将来恢复时,如果发现备份文件里有“partial write”的block时,可以通过备份redo中的block先进行恢复,然后,再应用redo,因为,通过备份是无法回滚这些“partial write” block的。

使用道具 举报

回复
论坛徽章:
2
目光如炬
日期:2018-04-29 22:00:00山治
日期:2018-06-08 15:49:43
17#
发表于 2020-11-11 18:13 | 只看该作者
https://www.modb.pro/db/23489     好好看看。。。。这应该是史上最详细的解说了~~~roger大神写的

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2014-02-20 06:00:12金牛座
日期:2016-01-24 17:24:26秀才
日期:2016-06-24 09:21:04
18#
发表于 2020-11-14 13:22 | 只看该作者
xjlovezxx 发表于 2020-11-11 18:13
https://www.modb.pro/db/23489     好好看看。。。。这应该是史上最详细的解说了~~~roger大神写的

我个人也很认同这篇文章

网上很多文章说Oracle不需要类似double write机制,是因为Oracle有什么检查点,控制文件机制。。。。 这完全是瞎扯

使用道具 举报

回复

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

本版积分规则 发表回复

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