---
title: 启动 OceanBase 时 -o 内的参数是否会持久化-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于启动 OceanBase 时 -o 内的参数是否会持久化相关的常见问题和使用技巧，帮助您快速解决启动 OceanBase 时 -o 内的参数是否会持久化的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 启动 OceanBase 时 -o 内的参数是否会持久化

更新时间：2026-07-02 15:41

适用版本： V2.1.x、V2.2.x、V3.1.x、V3.2.x 内容类型：TechNote  

本文介绍启动 OceanBase 数据库时 `-o` 内的参数是否会持久化。

通常，除了 bootstrap 首次启动 OBServer 节点时需要通过 `-o` 来指定集群配置项外，日常的 OBServer 节点重启不需要指定配置项。使用 `-o` 选项既可以指定集群配置项，也可以采用 `key@tenant_id=value` 的形式指定租户配置项，如下所示。

```shell
./observer -o "freeze_trigger_percentage@1001=30,freeze_trigger_percentage@1003=30,enable_monotonic_weak_read=false"

```

其中，`freeze_trigger_percentage` 只对 `tenant_id` 为 1001 和 1003 的租户生效，`enable_monotonic_weak_read` 对所有租户生效。

#### 注意

等号两侧不能有空格。

 ​

使用 `-o` 来指定集群或租户的配置项是一种临时性的行为，是解决已有问题的权宜之计，它不具有传递性和可继承性。按照目前的设计，`-o` 选项设置的配置项不会刷到内部表中，这可能导致重启后 `-o` 选项设置的值被覆盖，是否会被覆盖，取决于该配置项在使用 `-o` 参数设置前，有没有通过 `alter system set` 修改过。 ​ 举例:

以动态生效的集群级配置项 `memory_limit_percentage` 为例（默认值为 81），使用 `deploy.py` 部署。

1. reboot 集群，不在 `-o` 中设置 `memory_limit_percentage`。
 2. 以 SYS 租户登录，`alter system set memory_limit_percentage=81;`，使用 `select gmt_create, gmt_modified, name, value, config_version from __all_sys_parameter;` 查看内部表。

   ```shell
   obclient> select gmt_create, gmt_modified, name, value, config_version from __all_sys_parameter where name = 'memory_limit_percentage';

   ```

   返回结果如下：

   ```shell
   +----------------------------+----------------------------+-------------------------+-------+------------------+
   | gmt_create                 | gmt_modified               | name                    | value | config_version   |
   +----------------------------+----------------------------+-------------------------+-------+------------------+
   | 2023-08-18 15:03:19.675398 | 2023-08-18 15:03:19.671442 | memory_limit_percentage | 81    | 1692342199671442 |
   +----------------------------+----------------------------+-------------------------+-------+------------------+

   ```
 3. stop 集群；在 `config.py` 中增加 `ObCfg.init_config['memory_limit_percentage']=82;`，然后再 start 集群。以 SYS 租户登录后进行以下操作，结果如下。

      1. 查询内部表中 `memory_limit_percentage` 值。

        ```

        返回结果如下：

        ```
      2. 查询 `memory_limit_percentage` 值，确认 `-o` 设置的值已生效。

        ```shell
        obclient> select name, value, zone from __all_virtual_sys_parameter_stat where name = 'memory_limit_percentage';

        ```

        返回结果如下：

        ```shell
        +-------------------------+-------+-------+
        | name                    | value | zone  |
        +-------------------------+-------+-------+
        | memory_limit_percentage | 82    | zone1 |
        +-------------------------+-------+-------+

        ```
      3. 修改一个其他配置项，触发刷内部表的动作。

        ```shell
        obclient> alter system set auto_refresh_location_cache_rate_limit=1050;

        ```
      4. 查询 `-o` 设置的值未被覆盖。

        ```

        返回结果如下：

        ```

   根据上述示例可以得知，处理 `-o` 参数时会将当前时间戳设为配置项的版本号，因此，`alter system set` 触发的刷内部表行为不会把 `-o` 设的值覆盖掉。
 4. stop 集群；在 `config.py` 中去掉对 `memory_limit_percentage` 的设置；然后再 start 集群。以 SYS 租户登录后进行以下操作，结果如下。

        ```

        返回结果如下：

        ```
      2. 查询 `memory_limit_percentage` 值。

        ```

        返回结果如下：

        ```shell
        +-------------------------+-------+-------+
        | name                    | value | zone  |
        +-------------------------+-------+-------+
        | memory_limit_percentage | 81    | zone1 |
        +-------------------------+-------+-------+

        ```

   根据上述示例可以得知，`memory_limit_percentage` 的值变成了 81，和内部表中的值一样了。这是因为，observer 会从内部表中读取配置项的值，但同时会将该配置项对应的版本号强设为 0。而重启时，observer 会刷内部表，于是，`memory_limit_percentage` 的值就被内部表中的值覆盖了。

#### 注意​

- 如果通过 `-o` 设置某配置项之前，没有通过 `alter system set` 修改过该配置项（即没有上面的 step2），那么，无论之后再重启多少次，该配置项的值都是通过 `-o` 设置的值。这是因为，`-o` 设置的值不会写入内部表，所以内部表中就不会有该配置项，也就不存在内部表中的值把 `-o` 的值覆盖的情况了。
 - 对于重启生效的配置项，在 step4 中并不会看到截图所示情况，注意再次重启，才能看到。
 - 以上结论对租户级配置项同样适用。

## 适用版本

OceanBase 数据库 V2.x、V3.x 版本。

Previous

[OceanBase 数据库在 ARM 架构中推荐使用的系统参数](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000137)

Next

[如何修改 OceanBase 集群的区域与机房信息](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000060) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
