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 logfile,这才是真实的COMMIT,这步操作完成,说明我们已经完成COMMIT,事务从V$TRANSACTION中移除;3.V$LOCK中记录的SESSION关于该事务的锁会释放,其他需要这些锁的事务被唤醒;4.执行块清理,清理块头保存的事务信息;Oracle 中的表变量(数组变量)Oracle存储过程的调用相关资讯 oracle
- [INS-32052] Oracle基目录和Oracle (07/22/2014 07:41:41)
- Oracle 4个大对象(lobs)数据类型 (02/03/2013 12:33:05)
- Oracle按时间段分组统计 (07/26/2012 10:36:48)
| - [Oracle] dbms_metadata.get_ddl的 (07/12/2013 07:37:30)
- Liferay Portal 配置使用Oracle和 (07/31/2012 20:07:18)
- Concurrent Request:Inactive (07/20/2012 07:44:05)
|
本文评论 查看全部评论 (0)