KingbaseES:ora_integer_div_returnfloat和ora_input_emptystr_isnull参数

ora_integer_div_returnfloat

在 KingbaseES 中,ora_integer_div_returnfloat 是一个 GUC 参数,用于控制整数除法的行为是否返回小数:


🧩 参数作用

  • 开启 (on)
    整数相除会保留小数部分,如 8/5 = 1.6

  • 关闭 (off)
    与传统 PostgreSQL 行为一致,只返回整数结果,如 8/5 = 1(向下取整)(blog.csdn.net, blog.csdn.net)。


✅ 参数支持版本

根据 KingbaseES 官方文档,该参数为 兼容 Oracle 的 GUC 配置之一,默认值为 on(help.kingbase.com.cn)。

具体在哪个版本引入:

  • 文档显示,该参数在 KingbaseES 版本 V8 系列以及 V9 系列中均已支持,即至少从 V8R006C008B0014(2023年后期)开始包含。
  • 用户社区与 CSDN 博主也确认此功能在 2023 年已经上线(blog.csdn.net, blog.csdn.net)。

在这里插入图片描述
在这里插入图片描述


✅ 总结建议

参数名 默认值 开始支持版本 功能简介
ora_integer_div_returnfloat on ≥ V8R006 / V9 系列 控制整数除法是否返回小数结果

如果你使用的是 KingbaseES 8.x 或 9.x,理论上默认已经支持该参数。可通过以下方式确认和设置:

-- 查看当前状态
SHOW ora_integer_div_returnfloat;

-- 如需关闭整数除法返回浮点行为
SET ora_integer_div_returnfloat = off;

如你使用更早版本(如 V7),或需要排查某个具体子版本是否包含此功能,建议查阅对应版本的兼容性参数文档或联系金仓技术支持。

KingBase 数据库实例参数

KingBase 数据库实例参数的详细说明、推荐值及相关参考信息,便于理解和优化配置。


📌 参数说明与推荐值

1. shared_preload_libraries

运行时加载必要扩展库,影响功能可用性与性能:

  • synonym, plsql, force_view, kdb_ora_expr, dblink 等用于 Oracle 兼容与跨库访问;
  • sysaudit, sys_stat_statements, backtrace 等用于审计与诊断;
  • 推荐方式:根据业务启用,禁止无用库,避免内存浪费与安全风险;
  • 完整重启实例即可应用更改。

在这里插入图片描述

2. ora_integer_div_returnfloat = on

  • 功能:开启后整数除法返回浮点结果(如 5/2 = 2.5),兼容 Oracle 行为;
  • 默认值 on
  • 推荐保持启用,无性能风险。

3. ora_input_emptystr_isnull = off

  • 功能:控制将空字符串('')作为空值处理;
  • 设置 off 可区分空值与空字符串;
  • 推荐视对 Oracle 应用的兼容需求设置,一般启用以保持一致性。

在这里插入图片描述


4. search_path = '"$USER", PUBLIC, SYS_CATALOG'

  • 控制对象查找顺序,设置为 "$USER" 可提高安全性与隔离性;
  • 默认路径适中,除非对 schema 管理有额外需求无需更改。

5. sql_mode = ''

  • 若与 MySQL 语法兼容性无关,则保持为空;
  • 除非使用特殊 SQL,否则无须配置。

6. log_statement = 'mod'

  • 功能:记录所有 DML 和 DDL 操作,有助于审计与回查;
  • 默认值为 none,日志量小;
  • 业务活跃时会产生大量日志,推荐接入集中日志系统,并视情况使用更细级别(如 ddl)。

7. log_disconnections = on

  • 功能:记录连接断开日志,有助于分析会话中断原因;
  • 推荐启用,尤其在审计与稳定性监控场景中。

8. sysaudit.enable = on, sysaudit.userevent = on

  • 功能:开启系统审计及用户事件审计;
  • 推荐在合规或安全审计要求下启用;
  • 审计日志表会持续增长,建议配置归档机制并定期清理。

在这里插入图片描述


🧮 推荐参考配置(生产环境示例)

shared_preload_libraries = 'plsql, dblink, sysaudit, sys_stat_statements, backtrace'
ora_integer_div_returnfloat = on
ora_input_emptystr_isnull = off
search_path = '"$USER",PUBLIC,SYS_CATALOG'
sql_mode = ''
log_statement = 'mod'
log_disconnections = on
sysaudit.enable = on
sysaudit.userevent = on
  • 精简为必需模块;
  • 保留兼容性与审计要求;
  • 控制日志量,确保系统稳定。

📚 参考资源

  • KingBase ES 系统管理与审计官方文档;
  • PostgreSQL/OpenGauss 延展的 shared_preload_libraries 和审计模块说明;
  • sysaudit 系统角色与日志表结构介绍(参考 Sybase/Avalache;