Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

351

积分

0

好友

8

主题
1#
发表于 2012-4-28 09:50:58 | 查看: 3312| 回复: 0
一直都想不通为什么数据块从一个节点传到另一个节点之前需要flush redo log,看了这篇文章http://t.askmaclean.com/redirect.php?tid=438&goto=lastpost,里面提到这么一句话:
flush time 是Oracle为了保证Instance Recovery实例恢复机制,而要求每一个current block在本地节点local instance被修改后(modify/update) 必须要将该current block相关的redo 写入到logfile 后(要求LGWR必须完成写入后才能返回),才能由LMS进程传输给其他节点使用。

也就是说flush redo log是为了实例恢复的需要,那么考虑以下两种需要flush redo的情况:
1.节点1修改了数据块,没有提交,节点2要求修改数据块,current数据块从节点1传到节点2;
2.节点1修改了数据块,没有提交,节点2要求读取数据块,节点1从CURRENT数据块构造CR数据块传到节点2。

假如没有flush redo log,此时节点1崩溃,根本不需要恢复这个数据块的redo log,因为数据根本没有提交,就算是前滚了还需要再回滚,感觉没这个必要。

所以怎么想都觉得传输数据块之前没有必要写redo log,求刘大指教。
您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-15 12:14 , Processed in 0.048458 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569