本文介绍如何为 Oracle 租户配置 GBK 字符集。
适用版本
OceanBase 数据库 V2.X 及后续版本。
创建 GBK 租户
通过在
CREATE TENANT
语句中增加
charset=gbk
,指定租户使用的字符集。创建租户的示例语句如下。
obclient> CREATE TENANT oracle replica_num = 1, resource_pool_list=(‘pool1’), charset=gbk SET ob_tcp_invited_nodes=’%’, ob_compatibility_mode=‘oracle’, parallel_max_servers=10, parallel_servers_target=10, ob_sql_work_area_percentage=20, secure_file_priv = “”;
连接创建的 Oracle 租户,验证
NLS_CHARACTERSET
变量的值是否为 GBK。
obclient> SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER=‘NLS_CHARACTERSET’; ±-----------------±---------±-------+ | PARAMETER | VALUE | CON_ID | ±-----------------±---------±-------+ | NLS_CHARACTERSET | ZHS16GBK | 0 | ±-----------------±---------±-------+
————————下接评论区
配置链路字符集
链路字符集是客户端和服务器之间交互使用的字符集,租户字符集与链路字符集没有直接关系,GBK 租户既可以使用 GBK 字符集作为链路字符集,也可以使用 UTF8 作为链路字符集。
可以通过以下方式确定使用的字符集:
- 客户端:客户端所在的环境是 GBK 环境还是 UTF8 环境。
- JDBC:JDBC 程序的编码配置值是 GBK 还是 UTF8。
服务器端配置
对于 OceanBase 数据库 Oracle 租户,可以通过修改
character_set_client
、
character_set_connection
与
character_set_results
三个变量的值修改服务器端的链路字符集。
--永久性修改
obclient> SET GLOBAL character_set_client = gbk;
obclient> SET GLOBAL character_set_connection = gbk;
obclient> SET GLOBAL character_set_results = gbk;
--临时修改(仅对当前会话生效)
obclient> SET character_set_client = gbk;
obclient> SET character_set_connection = gbk;
obclient> SET character_set_results = gbk;
此外,如果仅需要临时修改服务器端的链路字符集,也可以通过
SET NAMES
语句进行修改。
obclient> SET NAMES gbk;
配置成功后,可以通过以下语句验证当前链路字符集的配置。
如果
character_set_client
、
character_set_connection
与
character_set_results
三个变量的值均为
gbk
,表示链路 gbk 已经配置完毕。
obclient>show variables like '%character_set%';
+--------------------------+---------+
| VARIABLE_NAME | VALUE |
+--------------------------+---------+
| character_set_client | gbk | -> 客户端字符集
| character_set_connection | gbk | -> 字符常量字符集(mysql模式)
| character_set_database | gbk | -> 库字符集(mysql模式)
| character_set_filesystem | binary | -> 文件系统字符集(不使用)
| character_set_results | gbk | -> 返回客户端(字符类型)结果的字符集
| character_set_server | gbk | -> 租户字符集
| character_set_system | utf8mb4 | -> 系统字符集
+--------------------------+---------+
客户端配置
如果生产环境中的中文字符均为 GBK 编码,那么除了在服务器端配置 GBK 链路外,还需要修改客户端或驱动的链路字符集。
- 使用 JDBC 连接数据库时,可以通过修改 URL 的参数设置,在 URL 中添加
characterEncoding=gbk
。
String url = "jdbc:oceanbase://xxx.xxx.xxx.xxx:xxxx?useSSL=false&useUnicode=true&characterEncoding=gbk&connectTimeout=30000&rewriteBatchedStatements=true";
- 使用 OBClient 连接数据库时,需要按以下步骤配置。
- 修改环境变量。
export LANG=zh_CN.GBK
export LC_ALL=zh_CN.GBK
- 修改终端的编码配置。
- 本文以 ITEM2 终端为例。