ROLLBACK 的表空间不够

[复制链接]
查看11 | 回复3 | 2014-4-17 11:38:13 | 显示全部楼层 |阅读模式
请高手指教:LGWR在REDO BUFFER满3分之1的时候触发。如果LGWR写满了一个日志组,系统切换日志的时候,就会触发CKPT。CKPT写控制文件和数据文件头的同时又会触发DBWR。那么我那些没有提交的数据(脏BUFFER)不就写入了数据文件里了吗?
系统会比较数据文件和日志文件。SMON会查找没有COMMIT过的数据然后进行ROLLBACK。但是如果ROLLBACK 的表空间不够呢????
回复

使用道具 举报

千问 | 2014-4-17 11:38:13 | 显示全部楼层
最初由 wulang1979 发布
[B]请高手指教:LGWR在REDO BUFFER满3分之1的时候触发。如果LGWR写满了一个日志组,系统切换日志的时候,就会触发CKPT。CKPT写控制文件和数据文件头的同时又会触发DBWR。那么我那些没有提交的数据(脏BUFFER)不就写入了数据文件里了吗?
系统会比较数据文件和日志文件。SMON会查找没有COMMIT过的数据然后进行ROLLBACK。但是如果ROLLBACK 的表空间不够呢???? [/B]

会有你说的那种情况,就是未提交的数据会写入到磁盘中。
至于你说的ROLLBACK空间不够的话是根本不存在问题的。因为段头会记录事务是否提交,只有事务提交过后的ROLLBACK空间才可重用。如果像你所说ROLLBACK空间不足的话,那么后面的事务只能等待,只至前面的事务提交并释放ROLLBACK空间后,他才会重用释放的ROLLBACK空间。
回复

使用道具 举报

千问 | 2014-4-17 11:38:13 | 显示全部楼层
最初由 wulang1979 发布
[B]请高手指教:LGWR在REDO BUFFER满3分之1的时候触发。如果LGWR写满了一个日志组,系统切换日志的时候,就会触发CKPT。CKPT写控制文件和数据文件头的同时又会触发DBWR。那么我那些没有提交的数据(脏BUFFER)不就写入了数据文件里了吗?
系统会比较数据文件和日志文件。SMON会查找没有COMMIT过的数据然后进行ROLLBACK。但是如果ROLLBACK 的表空间不够呢???? [/B]

如果ROLLBACK表空间不够,它会使用系统回退段,但如果回退段空间都不够,你修改的时候就不能成功了,因为它没地方存放旧
IMAGE ,也就无所谓的回滚了。
回复

使用道具 举报

千问 | 2014-4-17 11:38:13 | 显示全部楼层
如果回滚段不够用,回报错误的;今天就发生了1562错误,浪费了1个小时的时间
ALTER TABLE EUSTRADE.trade_activity MODIFY(
*
ERROR at line 1:
ORA-01562: failed to extend rollback segment number

Elapsed: 00:47:52.58
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行