oracle 事务管理

oracle 事务管理

  转贴请注明出处

 

关于事务的基本属性ACID在这里不在累述,但是oracle有一种特殊的事务提交形式--DDL(数据库定义语言)。下面着重oracle从开始一个事务到提交一个事务的时序。

  • 事务开始
    1. oracle生产undo数据,这里的undo数据指的是要被此事务修改的数据。它的生产方法是在buffer cash中找到相应的数据块,如果没有找到就到数据文件中读取到buffer cash。说明这里提到的buffer cash是指sga DataBase Buffer Cash 它主要包括dirty buffer 和 free buffer。
    2. 生成redo log buffer 记录,然后把此记录放到sga中的redo log buffer中,此记录即包括原来的数据有包括将要提交的记录。但是此可以在事务提交时写到redo log file。
    3. 在sga中修改在此事务中的一些相关信息。
  • 事务提交
    1. 在记录事务的内部表中标记此事务已经被提交,同时系统产生一个SCN(SCN只有在事务提交后才产生的,system change number 关于SCN想专门描述)被记录到相应的数据文件中(这里指的是控制文件)。
    2. 把将要提交的数据从redo log buffer写到redo log file,同时把上面的SCN也加入到redo log file.因为这个SCN是用redo log file恢复时要用到得。
    3. 释放相应的lock。
    4. 此事务标记为已提交。
  • 当发生检查点时
    1. 当发生检查点时CKPT更新所有数据问题的头信息(包括SCN),DBWn 负责将buffer cash 中的脏数据写到数据文件中。所以我们可以看到只有当检查点的时候数据才真正写到数据文件中。而且是从buffer cash 中读取的。redo file只能用于恢复。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值