您好,欢迎访问一九零五行业门户网

执行Commit时Oracle做哪些工作

commit是一个非常快的操作,当我们发布commit命令时,真正困难的动作已经完成,在数据库中已经执行了数据更改,所以已经完成了99
commit是一个非常快的操作,当我们发布commit命令时,真正困难的动作已经完成,
在数据库中已经执行了数据更改,所以已经完成了99%的任务,例如:下列操作已经产生:
1.在sga(buffer cache)中已经生成了undo块;
2.在sga(buffer cache)中已经生成了产生改变的数据块和索引块;
3.在redo log buffer生成了前面两项的redo信息;
4.依赖于前三项产生的数据量大小以及操作需要的时间,buffer中的数据可能已经
有一部分输出到了磁盘;
5.所有需要的锁已经获得;
当执行commit命令时,,只执行如下操作:
1.为事务生成scn:scn是oracle数据库的一种计时信息,用以保证事务的顺序性,
同时还用于失败恢复和保证数据库的读一致性和检查点,无论何时何人提交,scn
自动加1;
2.将事务相关的未写入redo log file中的redo信息从redo log buffer写入到redo log
file,这才是真实的commit,这步操作完成,说明我们已经完成commit,事务从
v$transaction中移除;
3.v$lock中记录的session关于该事务的锁会释放,其他需要这些锁的事务被唤醒;
4.执行块清理,清理块头保存的事务信息;
其它类似信息

推荐信息