---
title: 通过 DBLink 去远端执行 SQL 语句时触发了嵌套 PL/SQL，导致执行 120s 后就会报 -4012 超时-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于通过 DBLink 去远端执行 SQL 语句时触发了嵌套 PL/SQL，导致执行 120s 后就会报 -4012 超时相关的常见问题和使用技巧，帮助您快速解决通过 DBLink 去远端执行 SQL 语句时触发了嵌套 PL/SQL，导致执行 120s 后就会报 -4012 超时的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 通过 DBLink 去远端执行 SQL 语句时触发了嵌套 PL/SQL，导致执行 120s 后就会报 -4012 超时

更新时间：2026-06-03 03:01

适用版本： V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x、V4.3.x、V4.4.x 内容类型：Troubleshoot  

本文主要介绍通过 DBLink 去远端执行 SQL 语句时，该 SQL 语句触发了嵌套的 PL 存储过程，导致执行超过 120s 后会报错 -4012 超时的具体原因及解决方法。

## 问题现象

在本地通过 DBLink 去远端执行全表 UPDATE 时，在远端的表上定义了一个 UPDATE 型 TRIGGER，该 TRIGGER 定义中会同步执行一系列相关的业务逻辑且耗时较长，导致在 120s 后出现超时报错 -4012：

```shell
UPDATE /*+ QUERY_TIMEOUT(3600000000) */ TBL1@ob_dblink1 SET CODE_VALUE = 'A'

-- 失败原因
ErrorCode = 600, SQLState = HY000, Details = OBE-00600: internal error code, arguments: -5975, dblink remote error code: 600, remote error msg: OBE-00600: internal error code, arguments: -4012, Timeout, query has reached the maximum query timeout: 3600000000(us), maybe you can adjust the session variable ob_query_timeout or query_timeout hint, and try again. at procedure PKG1.PRO_TEST1 , line :

```

## 详细说明

1. DBLink 连接默认的超时时间为 120s，且该配置项目前是硬编码的，不支持调整，因为从设计上期望通过 DBLink 向远端发送的 SQL 语句都会带上 timeout hint，所以预期这个系统变量不会被实际使用到。
 2. hint 级 timeout 的优先级 > timeout 系统变量，只要在 SQL 语句中指定了 timeout hint，那么 timeout 系统变量就不会生效。
 3. 通过 DBLink 去远端执行 SQL 语句时，会根据当前剩余的超时时间，在 SQL 中加上 timeout hint，比如用户设置了 timeout 变量等于 1 小时，现在已经执行半小时了，那么通过 DBLink 向远端发的 SQL 语句里就会加上 `query_timeout(1800000000)`的 hint。
 4. 嵌套 PL 内的 SQL 语句因为没有添加 query_timeout hint，会重新计算超时，超时计算逻辑为 `min(current_time + query_timeout`，顶层语句超时，因为 DBLink 连接默认的 query_timeout 是硬编码的 120s，在当前例子中总是比顶层语句的超时 hint 小，所以会取 120s 超时，最终导致远端语句超时报错。

因此，如果通过 DBLink 去远端间接执行耗时较长的嵌套 PL/SQL 语句时，在执行超过 120s 后，最外层会抛出超时错误 -4012。

## 适用版本

OceanBase 数据库 V3.x、V4.x 版本。

## 规避方式

采用在远端的嵌套语句里面通过 timeout hint 指定超时阈值，绕过该问题。

上一篇

[OceanBase 数据库 MySQL 租户 OBClient connect 用法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001853651)

下一篇

[Python 应用连接 OceanBase 数据库 Oracle 模式租户使用指南](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000005438227) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
