IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:回滚段

共 2 篇相关文章

IT 累计浏览 4,561

undo异常事务回滚规则分析

这篇讲的是Oracle数据库在异常情况下(如非正常关闭或事务未提交会话终止)undo事务回滚的具体机制。文章没有停留在理论描述,而是通过一系列实际的测试和dump操作,清晰地展示了这一回滚过程是如何发生的。 核心流程是,数据库启动后会扫描回滚段,识别出未提交的事务。它通过事务的xid(回滚段号.槽号.序列号)定位到具体的undo block,再通过undo记录中的信息找到对应的数据块(data block)。回滚的关键在于undo记录之间通过rdba字段形成了一个链表结构。文章通过dump回滚段头(v$transaction视图)和具体的undo block(datafile 2 block 3627)证实了这一点:一个undo block处理完成后,其内部的undo记录(rci字段)指向前一个undo block的rdba地址,从而实现连续回滚。整个过程遵循“先进后出”原则,即最后修改的数据块最先被回滚。 作者通过从创建测试表、查询事务信息到最终dump出undo block内部结构的完整步骤,直观地揭示了Oracle底层利用undo链表保证事务原子性和数据一致性的精巧设计。

IT 累计浏览 2,770

SMON: recover undo segment 与 事务恢复

这篇讲的是Oracle数据库在异常宕机后,SMON后台进程如何自动进行事务恢复,特别是对undo段的处理。文章从alert日志中常见的“recover undo segment”提示切入,拆解了这个过程:SMON如何扫描回滚段、处理悬而未决的事务,以及将数据块恢复到一致状态。作者不仅解释了机制,还给出了关键的判断思路——如何通过日志中的关键词和后续的一致性检查(如DBA_SEGMENTS),来确认恢复是否彻底、数据库是否真正健康。这对理解数据库的自愈能力以及诊断“数据库假死”类问题很有帮助,尤其是在那些宕机原因不明、恢复后行为异常的棘手场景下。