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

 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 信息包含了 transaction SQL 所改变的旧数据 ( 快照 ).
                       ii.              SGA redo 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 log entries (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、付费专栏及课程。

余额充值