我的第一贴: 小试牛刀, Oracle的Transaction

本文详细介绍了Oracle数据库中事务处理的过程,包括事务启动时如何分配undo表空间或回滚段记录入口,事务结束的条件,以及提交事务时Oracle如何生成回滚段块、redo日志条目等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 What did oracle do when transaction happens? (from Oracle reference book,翻译+个人理解)

1.       Transaction 发生在第一个可执行的SQL (DML or DDL).
2.       Transaction 开始后, Oracle:分配可用的undo tablespace rollback segment来记录回滚的入口 (新的transaction发生).
3.       Transaction何时结束?
a)         Commit or rollback 语句 (注意: 单字的rollback only).
b)         DDL语句结束 (create, alter, drop etc).
c)         用户断开连接. Oracle会自动提交( 设置auto commit参数)
d)         用户进程异常中止. (强制)
4.       Commit transaction,
a)         在修改的数据commit之前, oracle
                         i.              SGA的存储rollback segment数据缓冲区中 (block buffer cache)生成了rollback segment.rollback信息包含了transactionSQL所改变的旧数据 (快照).
                       ii.              SGAredo log buffer中生成了redo log entries. Redo log的记录包含了数据块和回滚块的变化.
                      iii.              这些变化会被存储到SGA的数据缓冲区 (data buffer), 在提交之前可能会写入磁盘 (DBWn 进程和Buffer cache设置以及LRU算法决定何时去写).
b)         在数据commit, Oracle
                         i.              相关联的rollback segment会记录提交事件, oracle分配SCN并记录.
                       ii.              LGWR进程会将redo logentries (SGA redo log buffer)写入online redo log file, 同时将SCN写入.
                      iii.              Oracle释放行级或者表级锁.
                      iv.              Oracle标记该transaction结束.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值