我正在使用Oracle SQL Developer工具3.0.02版,我在理解以下内容时遇到了一些问题:如果我提交更新并且时间响应为'0秒',则提交正确完成?因为它发生了几次并且DB没有更新。我不知道这是不是巧合。当我第二次提交(只是为了确定)后,它显示'0秒',它显示为'0,016秒'并且更新显示正确。但我不想连续4次做出正确的事情。你们怎么看待这个?哦,它并没有给我任何错误。
提前谢谢
答案 0 :(得分:1)
您可以查看Oracle文档,了解为什么commit
是如此快速的操作(rollback
多更长,它必须引用撤消段)。
如果其他人提交了他们的数据,那么“丢失”提交可能会发生,这似乎与您的“旧”数据相同。
答案 1 :(得分:1)
提交所花费的时间与任何故障无关。该工作由查询完成,并在事务完成的元数据中的某处提交。 Commit几乎可以做任何事情(只需强制将一些日志文件保存在磁盘上)。如果出现问题(即承诺不工作),您将收到错误消息。 没有错误表示一切正常,数据库完成了你所要求的所有事情。
例如,您的更新可能无效:
UPDATE db SET user='name' where file='name_of_file' and answer='okay' ;
如果没有名为' name_of_the_file'答案='好的'数据库不起作用。没什么可承诺的。
为了完整答案,我将从blog添加以下几点:
提交事务时,会发生以下情况:
事务已提交的关联撤消表空间记录的内部事务表,以及 事务的相应唯一系统变更号(SCN)是 分配并记录在表格中
日志写入器进程(LGWR)将SGA的重做日志缓冲区中的重做日志条目写入重做日志文件。它也写了 事务的SCN到重做日志文件。这个原子事件构成了 提交交易
Oracle发布行和表上的锁
- 醇>
Oracle标记交易完成