---
title: GET_LOCK 函数异常报错不支持的原因和解决方法-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 GET_LOCK 函数异常报错不支持的原因和解决方法相关的常见问题和使用技巧，帮助您快速解决 GET_LOCK 函数异常报错不支持的原因和解决方法的难题。
---
切换语言

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

划线反馈

# GET_LOCK 函数异常报错不支持的原因和解决方法

更新时间：2025-06-27 09:36

适用版本： V4.3.x 内容类型：Troubleshoot  

## 问题现象

在 OceanBase 数据库 V4.3.5 版本的集群中，通过 2883 端口连接 OceanBase 数据库使用 `DBMS_LOCK`（系统包提供了 OceanBase 数据库锁管理服务的接口），执行 `select GET_LOCK` 报错不支持该函数。

示例如下。

```shell
obclient [oceanbase]> select GET_LOCK('333',10);

ERROR 1235 (0A000): Not supported feature or function

obclient [oceanbase]> SELECT GET_LOCK('lock1',10);

obclient [oceanbase]> SELECT GET_LOCK('lock2',10);

obclient [oceanbase]> SELECT RELEASE_LOCK('lock2');

obclient [oceanbase]> SELECT RELEASE_LOCK('lock1');

```

## 问题原因

- ODP 历史版本如果设置了 `enable_single_leader_node_routing=true`，会根据租户的副本位置来修改 OBProxy 到 OBServer 的协议（旧版本默认该参数为 true）。
 - 对于 primary_zone 集中的租户，OBProxy 使用了 mysql 协议；对于 primary_zone 分散的租户，OBProxy 使用 OB2.0 协议。
 - table_lock 需要 OBProxy 到 OBServer 使用 OB2.0 协议，如果 OBProxy 发过来的协议是 mysql，就会设置相应标记位，导致 OBServer 后续报错不支持。

当前 ODP 最新版本 V4.3.1.4 已默认为 false，但如果是热升级上来的 ODP 版本仍需手动修改该参数为 false。

## 适用版本

OceanBase 数据库 V4.3.x 版本。

## 解决方法

1. 登录 ODP proxysys 租户修改成如下所示配置参数值。

   ```shell
   ## 用于控制 ODP 和 OceanBase 数据库之间是否开启 OceanBase 2.0 协议（OceanBase 自研的基于 MySQL 压缩协议的传输协议）进行传输
   enable_ob_protocol_v2 = true;
   ## 用于设置生成 Client Session ID 的计算逻辑版本，需要设置版本为 2 以使用新的计算逻辑
   client_session_id_version = 2;

   ```
 2. 设置 `enable_single_leader_node_routing`（配置项用于控制当租户为主副本聚集部署形态时，是否使用更高效的路由规则）参数值，并查询确认参数值生效。

   ![image01](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/sql/20250627get-lock-function-exception-error-not-supported01.png)
 3. 登录并执行 `select GET_LOCK` 语句。

   ![image02](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/sql/20250627get-lock-function-exception-error-not-supported02.png)

上一篇

[通过 OBProxy 在 OceanBase 数据库 V4.x 版本中执行 GET_LOCK 函数时会偶发性出现 -4007 异常报错信息的原因和解决方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003271551)

下一篇

[Oracle 租户 dump 函数 return_fmt 参数行为与原生 Oracle 的区别](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003278874) ![有帮助](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) 咨询热线
