首批通过分布式安全可靠测评,为关键业务系统打造
修改租户系统变量
更新时间:2026-06-03 13:50:26
通过系统变量的设置可以使 OceanBase 数据库的行为符合业务的要求。本文介绍如何修改租户系统变量。
租户的系统变量可以通过 SET 语句修改。
设置 Session 级别的变量仅对当前 Session 有效,对其他 Session 无效。
设置 Global 级别的变量对当前 Session 无效,需要重新登录后,建立新的 Session 才会生效。
注意
设置 Global 级别变量时,对于 MySQL 租户,要求当前用户拥有
SUPER权限或ALTER SYSTEM权限;对于 Oracle 租户,要求当前用户拥有ALTER SYSTEM权限。设置前,请确认您的权限。用户权限的详细说明,参见 用户和权限概述。
下文示例中的系统变量 ob_query_timeout 用于设置对 SQL 语句进行查询操作的超时时间,单位是微秒。在进行大数据查询操作时,就可以通过调大系统变量 ob_query_timeout 的值,避免查询超时导致语句执行失败。
修改 Session 级别的系统变量
使用 root 用户登录到集群的用户租户。
以登录
mq_t1租户为例:obclient -h172.30.xx.xx -P2883 -uroot@mq_t1#cluster -p**** -A查询租户 Session 级别的系统变量。
obclient [(none)]> SHOW VARIABLES LIKE 'ob_query_timeout';结果如下:
+------------------+----------+ | Variable_name | Value | +------------------+----------+ | ob_query_timeout | 10000000 | +------------------+----------+ 1 row in set通过
SET修改 Session 级别变量值。obclient [oceanbase]> SET ob_query_timeout = 20000000;说明
Oracle 模式还可以通过
ALTER SESSION SET ob_query_timeout = 20000000;语句修改 Session 级别的变量值。查看修改结果。
obclient [(none)]> SHOW VARIABLES WHERE variable_name LIKE 'ob_query_timeout';结果如下:
+------------------+----------+ | Variable_name | Value | +------------------+----------+ | ob_query_timeout | 20000000 | +------------------+----------+ 1 row in set
修改 Global 级别的系统变量
使用 root 用户登录到集群的用户租户。
以登录
mq_t1租户为例:obclient -h172.30.xx.xx -P2883 -uroot@mq_t1#cluster -p**** -A查询租户的 Global 变量。
obclient [(none)]> SHOW GLOBAL VARIABLES WHERE variable_name LIKE 'ob_query_timeout';结果如下:
+------------------+----------+ | Variable_name | Value | +------------------+----------+ | ob_query_timeout | 10000000 | +------------------+----------+ 1 row in set通过
SET修改 Global 级别变量值。obclient [oceanbase]> SET GLOBAL ob_query_timeout = 20000000;说明
Oracle 模式还可以通过
ALTER SYSTEM SET ob_query_timeout = 20000000;语句修改 Global 级别的变量值。查看修改结果。
obclient [(none)]> SHOW GLOBAL VARIABLES WHERE variable_name LIKE 'ob_query_timeout';结果如下:
+------------------+----------+ | Variable_name | Value | +------------------+----------+ | ob_query_timeout | 20000000 | +------------------+----------+ 1 row in set修改成功后,还可以通过视图
DBA_OB_SYS_VARIABLES查询ob_query_timeout变量值的详细修改情况及默认值,语句如下。obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_SYS_VARIABLES WHERE NAME='ob_query_timeout';结果如下:
+----------------------------+----------------------------+------------------+----------+-----------+-----------+------------------+----------------------------------+---------------+-----------+ | CREATE_TIME | MODIFY_TIME | NAME | VALUE | MIN_VALUE | MAX_VALUE | SCOPE | INFO | DEFAULT_VALUE | ISDEFAULT | +----------------------------+----------------------------+------------------+----------+-----------+-----------+------------------+----------------------------------+---------------+-----------+ | 2024-05-08 14:20:28.885780 | 2024-05-09 15:11:11.654128 | ob_query_timeout | 20000000 | | | GLOBAL | SESSION | Query timeout in microsecond(us) | 10000000 | NO | +----------------------------+----------------------------+------------------+----------+-----------+-----------+------------------+----------------------------------+---------------+-----------+ 1 row in set
修改布尔类型变量
在 SHOW VARIABLES 命令中显示 ON/OFF 的变量,可以通过如下任意方法设置变量值:
SET foreign_key_checks = ON;
SET foreign_key_checks = TRUE;
SET foreign_key_checks = 1;
SET GLOBAL foreign_key_checks = OFF;
SET GLOBAL foreign_key_checks = FALSE;
SET GLOBAL foreign_key_checks = 0;
说明
通过 ON/OFF、TRUE/FALSE 或 1/0 三种方式进行布尔类型变量的设置是等效的。
相关文档
关于系统变量的更多信息,参见: