基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
字符集配置
更新时间:2023-06-08 10:47:08
在 OMS 中启动迁移任务之前,需要先检查源端数据源的字符集配置。
支持的字符集配置
| 源端 | 支持的字符集 |
|---|---|
| Oracle | * NLS_CHARACTER_SET:UTF8、GBK 或 GB18030 * NLS_NCHAR_CHARACTER_SET: UTF16 |
| MySQL | UTF8 和 GBK |
| DB2 | UTF8 和 GBK |
检查 Oracle 源端字符集配置
源端为 Oracle 时,OMS 目前支持字符集配置为 AL32UTF8、AL16UTF16、ZHS16GBK、GB18030 四种之一的数据同步。源端和目标端的字符编码配置不同时,字段长度处理策略(长度放大,BYTE 转 CHAR 等)是基于 config.yaml 文件的 byte_used_type 字段设置而定的。
byte_used_type 的设置说明如下:
'IGNORE_BYTE_IF_BYTE_USED':迁移表结构源端是 NLS_LENGTH_SEMANTIC 是 BYTE,创建目标端是不强制指定BYTE,依赖于目标实例的 NLS_LENGTH_SEMANTIC 设置,长度不做处理。
'FORCE_CHAR_IF_BYTE_USED':迁移表结构源端是 NLS_LENGTH_SEMANTIC 是 BYTE,创建目标端是默认强制转成 CHAR,长度不做处理。
'EXPAND_LEN_IF_BYTE_USED':10 BYTE -> 15 BYTE,默认长度乘以 1.5 倍,用于字符编码配置不同场景。
'DO_NOTHING_IF_BYTE_USED':不做任何长度转换处理,用于字符编码配置相同场景。
注意
OCP V2.4.0 之前的版本中,创建租户时不支持指定字符编码,默认为 UTF8,如果是 Oracle 非 UTF8 编码,需要手动在OceanBase 创建 Oracle 租户并加入OCP 管理。
执行以下查询语句,检查对于 Oracle 源端实例的字符集配置:
select * from v$nls_parameters;

检查 MySQL 源端字符集配置
OMS 支持 MySQL 源端使用 UTF8 和 gbk 字符编码迁移 OceanBase V2.2.x。
MySQL 字符集检查方法如下:

检查 DB2 源端字符集配置
如果需要从 DB2 迁移到 OB-Oracle,在创建迁移的目标 OceanBase Oracle 租户时,需要和 Oracle 源库的NLS_CHARACTERSET 设置保持一致,数据才能保证写入到目标库。请检查对应设置是否正确。