OceanBase 数据库的系统变量主要分为全局变量和 Session 变量:

  • 全局变量:表示 Global 级别的修改,数据库同一租户内的不同用户共享全局变量。全局变量的修改不会随会话的退出而失效。此外,全局变量修改后,对当前已打开的 Session 不生效,需要重新建立 Session 才能生效。

  • Session 变量:表示 Session 级别的修改。当客户端连接到数据库后,数据库会复制全局变量来自动生成 Session 变量。Session 变量的修改仅对当前 Session 生效。

与系统配置项对比

对比项

系统配置项

系统变量

生效范围

分为集群、Zone、机器和租户。

分为租户的 Global 或 Session 级别。

生效方式

  • 动态生效:edit_leveldynamic_effective

  • 重启生效:edit_levelstatic_effective

  • 设置 Session 级别的变量仅对当前 Session 有效,对其他 Session 无效。

  • 设置 Global 级别的变量对当前 Session 无效,需要重新登录建立新的 Session 才会生效。

修改方式

  • 支持通过 SQL 语句修改,示例如下:

    1. obclient> Alter SYSTEM SET schema_history_expire_time=’1h
  • 支持通过启动参数修改,示例如下:

    1. cd /home/admin && ./bin/observer -o schema_history_expire_time=’1h’”

仅支持通过 SQL 语句修改,示例如下:

  • MySQL 模式

    1. obclient> SET ob_query_timeout = 20000000;
    2. obclient> SET GLOBAL ob_query_timeout = 20000000;
  • Oracle 模式

    1. obclient> SET ob_query_timeout = 20000000;
    2. obclient> ALTER SYSTEM SET ob_query_timeout = 20000000;

持久化

持久化到内部表与配置文件,可以在 /home/admin/oceanbase/etc/observer.config.bin 与 /home/admin/oceanbase/etc/observer.config.bin.history 文件中查询该配置项。

仅 GLOBAL 级别的变量会持久化,SESSION 级别的变量不会进行持久化。

生命周期

长,从进程启动到退出。

短,需要租户的 Schema 创建成功以后才生效。

查询方式

可以使用 SHOW PARAMETERS 语句查询。

可以使用 SHOW [GLOBAL] VARIABLES 语句查询。

本章主要介绍 OceanBase 数据库中的所有系统变量及其缺省值说明(包括参数含义、取值范围和使用说明等)。系统变量的查看和设置相关操作,请参见 租户管理变量 章节。