主题
金仓 PG 兼容模式安装要点(与 Oracle 模式的差异与坑)
一句话机制:金仓 PG 模式与 Oracle 模式的安装全流程只差 3 处配置(单机安装交互 +
install.conf+kingbase.conf),其余章节完全沿用——真正的风险不在流程,而在**「兼容模式 + 大小写敏感」这两个 initdb 落地后不可逆的决策**,以及 oracle 兼容参数的清理是否彻底。
三处变更点(其余全沿用)
| 位置 | Oracle 模式 | PG 模式 |
|---|---|---|
单机安装 setup.sh 交互 | 兼容模式选 ORACLE、大小写敏感选「否」 | 选 PG、大小写敏感选 是(yes) |
install.conf | db_mode=oracle、db_case_sensitive=no | db_mode=pg、db_case_sensitive=yes、db_auth=scram-sha-256 |
kingbase.conf | 启用 ora_* 系列参数 | 全部删除/注释 |
必须删除的 oracle 兼容参数(PG 模式)
以下参数在 PG 模式下必须删除/注释,否则 PG 语义被污染:
ora_forbid_func_polymorphism / ora_statement_level_rollback / ora_open_cursors
nls_length_semantics / enable_upper_colname / ora_numop_style
ora_input_emptystr_isnull / exclude_reserved_words三个必踩的坑
archive_command=''空串 → WAL 归档持续失败、主库 WAL 堆积、备库 LSN 延迟。必须指向真实可写的归档路径,并预先mkdir -p+chown kingbase:kingbase。- 大小写敏感 yes 的 SQL 适配 → Oracle 模式「不敏感」已写入业务逻辑时,迁到 PG 模式后未加引号的标识符自动转小写,需应用侧统一或建表时显式加双引号
"MyTable"保留大小写。此参数 initdb 落地后不可在线改。 - postgis 扩展
libssl.so.10缺失(x86_64 平台相关,与兼容模式无关)→ 用官方libssl_x86.zip修复。
不变量(必须成立的约束)
- 兼容模式 + 大小写敏感在 initdb 后不可在线改,安装前必须定死;改动的代价是重建实例。
- PG 模式必须彻底清理
ora_*兼容参数,残留会导致 SQL 语义异常(如空串被当 NULL)。 archive_command不能为空串,否则 WAL 堆积直到磁盘写满。- 认证方式 PG 模式建议
scram-sha-256(比md5安全)。
常见误解
- 以为 PG 模式和 Oracle 模式安装流程差异很大 → 实际只差 3 处配置,其余全沿用。
- 把 Oracle 模式"大小写不敏感"的业务假设直接套到 PG 模式 → 标识符需加引号保护。
- 验证时只测连接不测"模式纯净度" → 应主动验证
SYSDATE/NVL/DUAL在 PG 模式下报function does not exist,确认无 oracle 函数污染。
关联
- 部署全景:KingbaseES集群技术栈总览
- 高可用机制:KingbaseES集群高可用机制
- 源(A10 成稿):金仓数据库(KingbaseES)PG模式集群安装方案(对照现场文档)