文章目录
- 环境
- 症状
- 问题原因
- 解决方案
环境
系统平台:N/A 版本:9.0.4
症状
在HGDB V9版本,PG模式初始化的实例中,当显式配置参数nls_length_semantics时,例如
nls_length_semantics = 'char'
或
nls_length_semantics = 'byte'
都会产生如下警告:
2026-04-21 00:14:54.708 CST,"highgo","xxxxx",1397122,"172.21.1xx.1xx:55190",69e650f3.155182,19,"SELECT",2026-04-21 00:14:43 CST,20/4878604,0,警告,0A000,"Do not use this GUC variable in the current cluster (PG).",,,,,"while setting parameter ""nls_length_semantics"" to ""char""(或byte)
该警告日志会强制随相关SQL打印到数据库日志中,业务繁忙时会占用大量日志存储空间。
问题原因
nls_length_semantics 是 HGDB V9 版本专为 Oracle 兼容模式 设计的字符长度语义参数:
- byte:按字节计算长度
- char:按字符个数计算长度
PostgreSQL 兼容模式原生支持按字符个数计算长度,不支持该参数,且参数配置后不生效。
PG 模式下显式配置该参数,数据库会强制打印不兼容警告。
警告示例: Do not use this GUC variable in the current cluster (PG)
解决方案
所有操作使用highgo数据库用户执行,无需重启数据库,reload 即可生效。
方案:SQL 命令修复(推荐,无需修改配置文件):
— 恢复参数为默认值(取消配置)
alter system set nls_length_semantics to default;
— 重载配置生效
select pg_reload_conf();
集群架构下,需要检查并取消所有节点的此参数配置。
网硕互联帮助中心



评论前必须登录!
注册