数据库中系统故障恢复的问题。
在系统故障中造成数据库不一致状态的原因有两个,一个是未完成事务对数据库的更新可能已经写入数据库,二是已经提交的事务对数据库的更新还没有来的及写入数据库。在这里未完成事务和...
在系统故障中造成数据库不一致状态的原因有两个,一个是未完成事务对数据库的更新可能已经写入数据库,二是已经提交的事务对数据库的更新还没有来的及写入数据库。
在这里未完成事务和已经提交的事务什么区别?是commit的区别吗?如果是commit的区别,那么未完成的事务按理说应该没有对数据库进行更新,为何要undo? 展开
在这里未完成事务和已经提交的事务什么区别?是commit的区别吗?如果是commit的区别,那么未完成的事务按理说应该没有对数据库进行更新,为何要undo? 展开
1个回答
展开全部
如果系统故障造成数据库非正常关闭,在下一次open的时候自动进行recover操作,未提交的操作会被回滚,提交的操作会根据日志进行恢复。只要某个事务修改了数据,那么更新前的原有数据就会被写入一个回滚段或undo段,在你提交之前,其他会话查询的是undo段,实际上你的操作已经写在数据块上了,但是会有标志,表示未提交,只有你的会话可见。你commit之后这个标志会被更改,操作会写入redo日志。
追问
你还没回答我的问题0 0.。
追答
不管你是否commit数据都是已经写在数据块上了,提交不提交只是数据块的标识不一样,rollback的是从UNDO段(以前这个叫回滚段)上回滚的。commit之后数据的更改一定会写到你的REDO日志上,不提交的话3秒内的更改只会体现在数据缓冲区和日志缓冲区,你非正常退出这些内存还没来得及写到你的磁盘上,数据自然会有所丢失。commit不会触发DBWR进程写数据文件,也就是说你的comiit后日志和数据文件可能不同步。
壹寰(深圳)科技文化有限公司
2021-03-27 广告
2021-03-27 广告
要找正规专业的公司,行业口碑也比较重要。如果想了解更多详细信息,可以咨询下壹寰(深圳)科技文化有限公司。91数据恢复是壹寰(深圳)科技文化有限公司旗下专业数据恢复品牌,91数据恢复专注于勒索病毒数据恢复、勒索病毒数据修复、数据库修复、数据库...
点击进入详情页
本回答由壹寰(深圳)科技文化有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询