分类: Linux
oracle commit所作的工作如下:
1,产生一个scn 与此事务相关联的undo tablespace的itl标志为提交即flag为-c--; 并且为此事务分配一个唯一的scn并记录到undo tablespace的事务表中2,lgwr把log buffer余下的重作日志条目写入到log file中; 而且要把上述提交事务产生的scn一并写入到log file中3,oracle把表及行上加的锁释放掉 其它等待它的事务就可以继续工作了4,删除保存点5,如果提交事务所修改的数据块还在sga中; 此时没有其它会话修改这些数据块 数据块就清除这些数据块上的锁标志 (最理想的情況是:commit动作一产生就清除数据块上的锁标志,这样就不用之后的select清除数据块上的锁标志了)这个概念相当重要 另:块清除会产生redo,因为可能select会产生redo,就可能会导致下次检查点发生写入这个数据块到datafile中 6,oracle标志commit完成