我曾经针对这个问题做过大量的测试,相对来说PuTTY的行为比较稳定,在X掉窗口时会有提示“Are you sure you want to close this session?”,如果点击“OK”便会关闭窗口,PuTTY的行为是提交所有之前的操作,也有例外,如果操作完成之后网络断掉了,再次连接后获得的内容将是操作之前的结果,类似于Windows的cmd中的行为,不理会之前的操作。
但是在secureCRT默认情况下,如果直接X掉窗口,会提示“Do you wish to disconnect from ***”,点击“Yes”会推出操作的窗口。此时的结果有时会得到一个commit之前的操作结果,有时会得到一个rollback的结果。可以测试一下,比较的诡异。
Toad工具其中就有一个单独对这个行为的配置,当直接关闭窗口的时候,Toad是提示你commit还是rollback之前的操作,也可以通过设置影响这个行为,如设置成每次退出时将之前操作的内容全部rollback,或设置成为commit的行为。
也许有一天,Oracle会对这个问题给出一种统一的控制方法。类似于EXITCOMMIT参数,没准会叫做“CLOSECLIENTCOMMIT”。不过可能性不大。
关于11gR2中EXITCOMMIT参数的介绍请参考下面文章
《【11gR2】【SQL*Plus】使用EXITCOMMIT参数控制exit时commit的行为》
http://space.itpub.net/519536/viewspace-617655
既然直接X掉窗口对SQL*Plus中的结果影响效果与客户端有关,因此,通过直接关闭客户端的方法退出事务操作是非常危险的。所以操作规范化很重要。
操作规范如下:
1)一定要显式提交(commit)和回滚(rollback);
2)忘记显式commit或rollback的时候也要正常的通过“exit”退出SQL*Plus界面,毕竟在11gR2中这个行为是稳定的;
3)严格禁止通过关闭窗口的方式退出SQL*Plus操作界面。
-- The End --
【SQL*Plus】直接X掉窗口对SQL*Plus中的操作结果的影响
分享好友
分享这个小栈给你的朋友们,一起进步吧。
订阅须知
• 所有用户可根据关注领域订阅专区或所有专区
• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询
• 专区发布评论属默认订阅所评论专区(除付费小栈外)