Oracle - 如果 ORA-03135 连接丢失,事务会发生啥?

Posted

技术标签:

【中文标题】Oracle - 如果 ORA-03135 连接丢失,事务会发生啥?【英文标题】:Oracle - what happens with the transaction in case of ORA-03135 connection lost?Oracle - 如果 ORA-03135 连接丢失,事务会发生什么? 【发布时间】:2017-02-10 15:04:28 【问题描述】:

我需要在生产环境中运行一个删除语句,该语句需要花费大量时间,并且服务器在 30 分钟后关闭任何连接(我在日志中看到的 ORA-03135)。

如果我启动删除语句并且服务器将关闭连接会发生什么?语句会在服务器上完成执行还是会立即关闭并回滚? SQL*Plus set autocommit on 命令可以在这种情况下提供帮助吗?

【问题讨论】:

【参考方案1】:

查看手册:https://docs.oracle.com/database/121/CNCPT/transact.htm#CNCPT037

交易结束 当发生以下任何操作时,事务结束:

用户发出不带 SAVEPOINT 子句的 COMMIT 或 ROLLBACK 语句。 用户运行 DDL 命令,例如 CREATE、DROP、RENAME 或 ALTER。 用户正常退出大多数 Oracle 数据库实用程序和工具,导致当前事务被隐式提交。用户断开连接时的提交行为取决于应用程序且可配置。 客户端进程异常终止,导致使用存储在事务中的元数据隐式回滚 表和撤消段。

【讨论】:

删除时间超过 30 分钟是否合理?

以上是关于Oracle - 如果 ORA-03135 连接丢失,事务会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

Navicat:连接Oracle时,提示ORA-28547,Cannot load OCI DLL.193,ORA-03135错误

有关ORA-03135报错分析解决

如何解决dblink过多的问题

oracle 日志文件丢了,怎么解决? 开启了归档日志!

oracle闲置超时,怎么样重新连接(急)

Oracle中将小数转换成字符丢零.截取小数.除数为零解决法