首批通过分布式安全可靠测评,为关键业务系统打造
使用 nlssort 报错:-4077, 不支持的功能
更新时间:2026-05-19 08:21
问题现象
OceanBase 数据库 V3.2.3 版本开始支持 NLSSORT 函数,用于按照指定的字符排序规则进行排序。未打开集群配置项 _enable_static_typing_engine 使用 NLSSORT 时报以下错误。
ORA-00600: internal error code, arguments: -4077, Not implemented feature
示例如下。
查询集群配置项
_enable_static_typing_engine。obclient [oceanbase]> select * from __all_virtual_sys_parameter_stat where name='_enable_static_typing_engine';输出结果如下。
+-------+----------+---------------+----------+------------------------------+-----------+-------+--------------+-------------------------------------------------------------------+-------------+----------+---------------+---------+---------+-------------------+ | zone | svr_type | svr_ip | svr_port | name | data_type | value | value_strict | info | need_reboot | section | visible_level | scope | source | edit_level | +-------+----------+---------------+----------+------------------------------+-----------+-------+--------------+-------------------------------------------------------------------+-------------+----------+---------------+---------+---------+-------------------+ | zone1 | observer | xx.xx.xx.xx | 2882 | _enable_static_typing_engine | NULL | False | NULL | specifies whether static typing sql execution engine is activated | NULL | OBSERVER | NULL | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | +-------+----------+---------------+----------+------------------------------+-----------+-------+--------------+-------------------------------------------------------------------+-------------+----------+---------------+---------+---------+-------------------+ 1 row in set (0.002 sec)创建测试表。
obclient [SYS]> create table test(id number primary key,col1 varchar2(10),col2 varchar(10),col3 varchar2(10),col4 varchar(10)) partition by hash(id) partitions 6; Query OK, 0 rows affected (0.069 sec)插入测试数据。
obclient [SYS]> begin for i in 1..1000 loop insert into test values(i ,'AAA'||i ,'BBB'||i ,'CCC'||i,'DDD'||i) ; end loop; end; / Query OK, 1 row affected (0.109 sec)使用 NLSSORT 函数。
obclient [SYS]> SELECT * FROM test order by nlssort(id, 'NLS_SORT=SCHINESE_PINYIN_M'); ORA-00600: internal error code, arguments: -4077, Not implemented feature
问题原因
没有打开集群配置项 _enable_static_typing_engine。
为了避免 SQL 执行中对常量表达式的重复计算,OceanBase 数据库设计了新的 SQL 引擎并由配置项 _enable_static_typing_engine 控制新老引擎的使用。NLSSORT 函数需要使用新的 SQL 引擎。
适用版本
OceanBase V3.2.3 (oceanbase-3.2.3.0-20220418212020)、V3.2.4 (oceanbase-3.2.4.0-100000072022102819) 版本。
解决方法
开启 SQL 新引擎。
obclient [oceanbase]> ALTER SYSTEM SET _enable_static_typing_engine = True;
Query OK, 0 rows affected (0.054 sec)