关于RAC的undo的使用问题

[复制链接]
查看11 | 回复9 | 2010-3-1 11:07:23 | 显示全部楼层 |阅读模式
请问RAC不同实例之间的undo是共享的还是独享的?要是独享的话,假如一个实例down掉了,未完成的事务会被回滚,这个回滚是发生在另外的实例上,还是发生在自身实例下次重新启动时,要是发生在自身实例下次重新启动时,这样另外一个实例继续工作,数据库未关闭,貌似就不能保证数据一致性了。要是发生在另外的实例上,那就说明RAC之间的undo是共享的。
这个点怎么理解的,请大虾指点小弟一下,谢谢
[ 本帖最后由 scau_2005 于 2009-5-6 10:05 编辑 ]
回复

使用道具 举报

千问 | 2010-3-1 11:07:23 | 显示全部楼层
undo、redo虽然放在共享磁盘上,但都是各用各的。
回复

使用道具 举报

千问 | 2010-3-1 11:07:23 | 显示全部楼层
“假如一个实例down掉了,未完成的事务会被回滚,这个回滚是发生在另外的实例上,还是发生在自身实例下次重新启动时”
另外的实例上。
而且是先做redo的前滚,再做undo的回滚,就像单节点instance crash recovery一样。给你贴段日志,看得就更明白了:
Beginning instance recovery of 1 threads
Wed May6 10:48:56 2009
Started redo scan
Wed May6 10:48:56 2009
Completed redo scan
488 redo blocks read, 124 data blocks need recovery
Wed May6 10:48:56 2009
Started recovery at
Thread 1: logseq 1598, block 2, scn 0.1131696448
Wed May6 10:48:56 2009
Recovery of Online Redo Log: Thread 1 Group 2 Seq 1598 Reading mem 0
Mem# 0 errs 0: /dev/rcms_redo12
Wed May6 10:48:56 2009
Completed redo application
Wed May6 10:48:56 2009
Ended recovery at
Thread 1: logseq 1598, block 490, scn 0.1131716791
122 data blocks read, 124 data blocks written, 488 redo blocks read
Ending instance recovery of 1 threads
SMON: about to recover undo segment 1
SMON: mark undo segment 1 as available
SMON: about to recover undo segment 2
SMON: mark undo segment 2 as available
SMON: about to recover undo segment 3
SMON: mark undo segment 3 as available
SMON: about to recover undo segment 4
SMON: mark undo segment 4 as available
SMON: about to recover undo segment 5
SMON: mark undo segment 5 as available
SMON: about to recover undo segment 6
SMON: mark undo segment 6 as available
SMON: about to recover undo segment 7
SMON: mark undo segment 7 as available
SMON: about to recover undo segment 8
SMON: mark undo segment 8 as available
SMON: about to recover undo segment 9
SMON: mark undo segment 9 as available
SMON: about to recover undo segment 10
SMON: mark undo segment 10 as available
回复

使用道具 举报

千问 | 2010-3-1 11:07:23 | 显示全部楼层
注:上面的日志是instance 2 在用instance 1(你可以看到恢复的是thread 1的日志)的redo和undo进行恢复。
回复

使用道具 举报

千问 | 2010-3-1 11:07:23 | 显示全部楼层
也就是说实例之间的undo是共享的了?意思就是说相互可以读的了。那样rac为什么不设计成一个undo呢,就像temp表空间那样。
[ 本帖最后由 scau_2005 于 2009-5-6 11:19 编辑 ]
回复

使用道具 举报

千问 | 2010-3-1 11:07:23 | 显示全部楼层
顶起来。
回复

使用道具 举报

千问 | 2010-3-1 11:07:23 | 显示全部楼层
因为每个实例都有自己的事务,为了事务的完整性,所以每个实例都有自己的REDO 和 UNDO
当一个实例出现了问题,另一个实例可以读另外实例的UNDO和REDO进行回滚和恢复。
回复

使用道具 举报

千问 | 2010-3-1 11:07:23 | 显示全部楼层
加深理解
回复

使用道具 举报

千问 | 2010-3-1 11:07:23 | 显示全部楼层
谢谢
回复

使用道具 举报

千问 | 2010-3-1 11:07:23 | 显示全部楼层
各用各的,undo_tablespace 这些参数都是分开的
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行