gpt4 book ai didi

Oracle 断开连接行为

转载 作者:行者123 更新时间:2023-12-02 02:09:22 26 4
gpt4 key购买 nike

如果长时间运行过程中连接丢失会发生什么?

例如,有一个 select 语句需要几分钟才能完成,并且在执行过程中连接丢失。它会继续执行还是会停止?

对于删除语句:它会执行到底还是会在客户端断开连接时中断?数据会发生什么:会提交还是回滚,多久?

对于 ddl 操作:我有一个长时间运行的 alter table tbl_name move 操作,当客户端失去连接时会发生什么?会继续执行还是会被中断?

最佳答案

我假设我们正在讨论类似于客户端应用程序崩溃或网络连接断开的情况,而不是应用程序正在执行干净断开连接的情况,因为在事务打开时无法执行干净断开连接更不用说在语句运行时了。

一般来说,该语句将在服务器上运行直至完成(其中 SELECT 的“完成”是指它可以返回客户端请求的第一组行,这可能或可能不需要完整执行该语句)。然后,服务器将尝试将结果已准备好这一事实传达回客户端。当它没有得到响应时(等待ACK数据包可能需要几分钟时间),它知道客户端进程已经死亡并开始回滚未提交的进程事务(释放该事务持有的所有锁)。如果您在事务中对数据库进行了更改(即您已完成插入、更新和/或删除),则回滚更改所需的时间可能与最初生成更改所需的时间一样长。

关于Oracle 断开连接行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com