OB V4 中哪个参数决定数据库字符集

问题

1 OB V4 中哪个参数决定数据库字符集?
2 encoding ,charset , character_set , character set 有什么不同;

已查询分析的信息:

– 在 OCP 上查看参数如下,没有encoding 和 chaset。

###  创建数据库指定字符集,每个数据库都有默认字符集和默认字符序。
CREATE DATABASE database_name
    [DEFAULT] CHARACTER SET [=] charset_name
    [[DEFAULT] COLLATE [=] collation_name]

ALTER DATABASE database_name
    [[DEFAULT] CHARACTER SET charset_name]
    [[DEFAULT] COLLATE collation_name]


###  在创建租户时设置字符集
    create tenant oracle replica_num = 1,
    resource_pool_list =('pool1'),
    charset = gbk
    set
      ob_tcp_invited_nodes = '%',
      ob_compatibility_mode = 'oracle',
      parallel_servers_target = 10,
      ob_sql_work_area_percentage = 20,
      secure_file_priv = "";

@辞霜

@论坛小助手

在 OceanBase V4 中,决定数据库字符集的主要参数有:

  1. character_set_server: 这个参数决定了服务器的默认字符集。如果没有在创建数据库时指定字符集,那么新建的数据库将使用 character_set_server 的值作为其默认字符集。

  2. character_set_database: 这个参数决定了当前选中数据库的默认字符集。这个值可以在创建数据库时指定,也可以在数据库创建后通过 ALTER DATABASE 语句进行修改。

  3. character_set_client: 这个参数决定了客户端的字符集。客户端发送到服务器的 SQL 语句将使用这个字符集进行编码。

  4. character_set_connection: 这个参数决定了连接层的字符集。在客户端和服务器之间传输的数据将使用这个字符集进行编码和解码。

  5. character_set_results: 这个参数决定了查询结果的字符集。服务器返回给客户端的查询结果将使用这个字符集进行编码。

参数的区别

  • character_set_server: 服务器级别的默认字符集,影响新建数据库的默认字符集。
  • character_set_database: 数据库级别的默认字符集,影响当前选中数据库的默认字符集。
  • character_set_client: 客户端发送 SQL 语句时使用的字符集。
  • character_set_connection: 连接层的字符集,用于客户端和服务器之间的数据传输。
  • character_set_results: 查询结果的字符集,用于服务器返回给客户端的数据。

示例

创建数据库时指定字符集:

CREATE DATABASE mydb
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_bin;

修改数据库的字符集:

ALTER DATABASE mydb
CHARACTER SET utf8mb4
COLLATE utf8mb4_bin;

创建租户时指定字符集:

CREATE TENANT mytenant
charset = utf8mb4
set
  ob_compatibility_mode = 'mysql';

具体信息可参考以下文档:

  1. 查询全部租户列表
  2. V$OB_MEMORY

已用AI 分析过,感觉不透彻

character_set_database 与创建租户时设置的字符集不一致时,创建数据库时会以 character_set_database 系统变量的值作为默认字符集