---
title: "ALTER SYSTEM | OceanBase 文档中心"
description: "ALTER SYSTEM ALTER SYSTEM 语句用来对 OceanBase 数据库发送命令，执行某项指定操作。 BOOTSTRAP 描述 该语句用于自举 OceanBase 集群。 格式 alter_system_bootstrap_stmt: ALTER SYSTEM BOOTSTRAP opt_clust…"
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 2.2.77 企业版 LTS

# ALTER SYSTEM

更新时间：2025-03-25 15:16:34

`ALTER SYSTEM` 语句用来对 OceanBase 数据库发送命令，执行某项指定操作。

## BOOTSTRAP

#### 描述

该语句用于自举 OceanBase 集群。

#### 格式

```javascript
alter_system_bootstrap_stmt:
    ALTER SYSTEM BOOTSTRAP opt_cluster_type region_zone_server_list;

opt_cluster_type:
    [CLUSTER cluster_role]

cluster_role:
    PRIMARY | STANDBY

region_zone_server_list:
    region_zone_server [, region_zone_server ...]

region_zone_server:
    [region] zone server

region:
    REGION [=] region_name

zone:
    ZONE [=] zone_name

server:
    SERVER [=] ip_port

ip_port:
    'STR_VALUE:INT_VALUE'

```

#### 参数解释

系统自举时，需要指定 RootService 信息，多台 RootService 通过逗号（，）分隔。

| **参数** | **描述** |
| --- | --- |
| region_name | 指定 RootService 所在的地域，通过在"多地多中心"部署时指定。 |
| zone_name | 指定 RootService 所属的 Zone。 |
| ip_port | 指定 RootService 的 IP 和 RPC 端口。 |
| PRIMARY \| STANDBY | 指定主备库。系统启动时需要指定主备库，如果不指定，默认采用主库启动。 |

#### 示例

- 指定一台 RootService。

```javascript
ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER 'xx.xx.xx.178:55410';

```

- 多台 RootService 通过逗号（，）分隔。

```javascript
ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER 'xx.xx.xx.24:55410', ZONE 'zone2'
SERVER 'xx.xx.xx.114:55410';

```

- 启动备库。

```javascript
ALTER SYSTEM BOOTSTRAP CLUSTER STANDBY ZONE 'zone1' SERVER 'xx.xx.xx.178:55410';

```

## JOB

#### 描述

该语句触发参数指定的后台任务。

#### 格式

```javascript
alter_system_job_stmt:
ALTER SYSTEM RUN JOB job_name
[zone | server];

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| JOB job_name | 指定任务名称。有特殊字符时需要单引号，其它情况下单引号加与不加都支持，已支持的 JOB 有： * check_partition_table：OBServer 执行 partition table 核对删除任务 * root_inspection：触发 RootService 自检 |
| zone \| server | 该任务指定 Zone 或者 Server 执行。 |

#### 示例

- 触发 RootService 自检任务。

```javascript
ALTER SYSTEM RUN JOB "root_inspection";

```

## MERGE

#### 描述

该语句用来发起存储层合并。

#### 格式

```javascript
alter_system_merge_stmt:
    ALTER SYSTEM merge_action;

merge_action:
      {MAJOR FREEZE| MINOR FREEZE} [tenant_list | replica] [server_list] [zone_name]
    | START MERGE zone_name
    | {SUSPEND | RESUME} MERGE [zone_name]
    | CLEAN MERGE ERROR

tenant_list:
    TENANT [=] (tenant_name_list)

tenant_name_list:
    tenant_name [, tenant_name ...]

replica:
    PARTITION_ID [=] 'partition_id%partition_count@table_id'

server_list:
    SERVER [=] ip_port_list

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| MAJOR FREEZE | 发起每日合并，即所有 Zone 一起合并。 |
| MINOR FREEZE | 发起转储。 |
| START MERGE | 开始每日合并，即只针对某一个 Zone 的每日合并。 |
| {SUSPEND \| RESUME} MERGE | 暂停或恢复每日合并。 |
| CLEAN MERGE ERROR | 清理合并出错的标记。 |
| tenant_name | 指定租户转储。 |
| PARTITION_ID | 指定副本转储。 |
| SERVER | 指定机器转储。 |
| zone | 指定 Zone 开始合并。 |

#### 示例

- 发起每日合并。

```javascript
OceanBase(root@oceanbase)>alter system major freeze;
Query OK, 0 rows affected

```

## PARAMETER

#### 描述

该语句用来修改配置项信息。

#### 格式

```javascript
alter_system_parameter_stmt:
    ALTER SYSTEM [SET]
    parameter_name = expression [SCOPE = {MEMORY | SPFILE | BOTH}] [COMMENT [=} 'text']
                                                            {SERVER [=] 'ip:port' | ZONE [=] 'zone'};

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| parameter_name | 指定要修改的配置项名称。 |
| expression | 指定修改后的配置项的值。 |
| COMMENT 'text' | 用于添加关于本次修改的注释。该参数为可选，建议不要省略。 |
| SCOPE | 指定本次配置项修改的生效范围。它的值主要有以下三种： * MEMORY：表明只修改内存中的配置项，修改立即生效，且本修改在 Server 重启以后会失效（目前暂时没有配置项支持这种方式）。 * SPFILE：表明只修改配置表中的配置项值，当 Server 重启以后才生效。 * BOTH：表明既修改配置表，又修改内存值，修改立即生效，且 Server 重启以后配置值仍然生效。 SCOPE 默认值为 BOTH。对于不能立即生效的配置项，如果使用 BOTH 或 MEMORY，会报错 。 |
| SERVER | 只修改指定 Server 实例的某个配置项。 |
| ZONE | 表明本配置项的修改针对指定集群的特定 Server 类型，否则，针对所有集群的特定 Server 类型。 |

> **说明**
>
>  
>
> 同时修改多个系统配置项时，用","隔开。

查看系统配置项的格式：`SHOW PARAMETERS [LIKE 'pattern' | WHERE expr];`

#### 示例

- 修改配置项 enable_sql_audit 的信息。

```javascript
obclient> show parameters like 'enable_sql_audit';
+------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone | svr_type | svr_ip        | svr_port | name             | data_type | value | info                                                                                                          | section  | scope   | source  | edit_level        |
+------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| z1   | observer | xx.xx.xx.111  |    19510 | enable_sql_audit | NULL      | True  | specifies whether SQL audit is turned on. The default value is TRUE. Value: TRUE: turned on FALSE: turned off | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
+------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
1 rows in set

obclient> alter system set enable_sql_audit = false scope = BOTH;
Query OK, 0 rows affected

obclient> show parameters like 'enable_sql_audit';
+------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone | svr_type | svr_ip        | svr_port | name             | data_type | value | info                                                                                                          | section  | scope   | source  | edit_level        |
+------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| z1   | observer | xx.xx.xx.111  |    19510 | enable_sql_audit | NULL      | False | specifies whether SQL audit is turned on. The default value is TRUE. Value: TRUE: turned on FALSE: turned off | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
+------+----------+---------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
1 rows in set

```

## REFRESH

#### 描述

该语句系列用来触发刷新操作，包括刷新 schema、时区信息、各类缓存等。

#### 格式

```javascript
alter_system_refresh_stmt:
    ALTER SYSTEM refresh_action;

refresh_action:
      REFRESH SCHEMA
      [zone | server]
    | REFRESH TIME_ZONE_INFO
    | FLUSH cache_type CACHE
      [tenant_list] [GLOBAL]
    | FLUSH KVCACHE
      [tenant] [CACHE [=] cache_name]

cache_type:
      ALL
    | LOCATION
    | CLOG
    | ILOG
    | COLUMN_STAT
    | BLOCK_INDEX
    | BLOCK
    | ROW
    | BLOOM_FILTER
    | SCHEMA
    | PLAN

tenant:
    TENANT [=] tenant_name

cache_name:

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| REFRESH SCHEMA | 刷新 Schema。正常情况下，当系统执行 DDL 操作， RootService 都会主动通知所有 OBServer 刷新 Schema。当某些 OBServer 发生异常，和 RootService 网络中断，此时需要手动刷新 Schema。刷新Schema 可以针对单独的机器，也可以针对某个集群。 |
| REFRESH TIME_ZONE_INFO | 通知集群中的所有 Server 更新本地的时区信息。 |
| FLUSH cache_type CACHE | 清空指定 Cache 指令。 |
| FLUSH KVCACHE | 清空 KV Cache 指令。 * 如果指定 tenant 和 cache_name，则清除指定租户的指定 KV Cache * 如果只指定 tenant，则清除指定租户的全部KV Cache * 如果不指定 tenant 和 cache_name，则清除所有租户的全部KV Cache |

#### 示例

- 刷新单台 OBServer 的 Schema。

```javascript
ALTER SYSTEM REFRESH SCHEMA SERVER='xx.xx.xx.24:55410';

```

- 刷新整个 Zone 的 Schema。

```javascript
ALTER SYSTEM REFRESH SCHEMA ZONE='zone1';

```

## REPLICA

#### 描述

该语句用来处理副本的迁移，复制，删除，副本类型转换，角色切换等行为。

#### 格式

```javascript
alter_system_replica_stmt:
    ALTER SYSTEM replica_action;

replica_action:
      SWITCH REPLICA
      {LEADER | FOLLOWER}
      {replica server | server [tenant_name] | zone [tenant_name]}
    | DROP REPLICA partition_id_desc
      replica server [create_timestamp] [zone] [FORCE]
    | {MOVE | COPY} REPLICA
      replica source destination
    | REPORT REPLICA partition_id_desc
      {zone | server}
    | RECYCLE REPLICA partition_id_desc
      {zone | server}
    | {ALTER | CHANGE | MODIFY} REPLICA
      replica server [set] REPLICA_TYPE = replica_type

source:
    SOURCE [=] 'ip:port'

destination:
    DESTINATION [=] 'ip:port'

partition_id_desc
    PARTITION_ID partition_id%partition_count@table_id

partition_idx | partition_count | table_id | task_id:
    INT_VALUE

create_timestamp:
    CREATE_TIMESTAMP [=] INT_VALUE

replica_type:
      {FULL | F}
    | {READONLY | R}
    | {LOGONLY | L}
    | {EncryptVote | E}

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| SWITCH REPLICA | Leader 改选。 |
| DROP REPLICA | 副本删除。删除指定 OBServer 上的 Replica，必须指定 partition_id，OBServer 地址以及 create_timestamp。 |
| {MOVE \| COPY} REPLICA | 副本迁移/复制，需要指定源 OBServer 和目的 OBServer ，以及 partition_id。 |
| REPORT REPLICA | 副本汇报，强制要求某个 OBServer 或者某个 Zone 内的所有 OBServer 进行 Replica 汇报。 |
| RECYCLE REPLICA | 回收无用副本。 |
| {ALTER \| CHANGE \| MODIFY} REPLICA | 修改副本属性，可以修改指定副本的副本类型。现在已经支持的副本类型包括：FULL/READONLY/LOGONLY/EncryptVote。'replica_type'的值可以是这三种副本类型的全称或者简写的首字符：'F/R/L/E'；大小写通用。 |

#### 示例

- 副本迁移。

```javascript
ALTER SYSTEM MOVE REPLICA PARTITION_ID '0%4@1100611139403777'
SOURCE 'xx.xx.xx.24:55410'
DESTINATION 'xx.xx.xx.26:55410';

```

- 删除副本。

```javascript
ALTER SYSTEM DROP REPLICA PARTITION_ID '0%4@1100611139403777'
SERVER 'xx.xx.xx.26:55410';

```

- 修改副本类型。

```javascript
ALTER SYSTEM CHANGE REPLICA PARTITION_ID '0%4@1100611139403777'
SERVER 'xx.xx.xx.26:55410';
CHANGE REPLICA_TYPE = 'L';

```

- Leader 改选。

```javascript
ALTER SYSTEM SWITCH REPLICA LEADER PARTITION_ID '0%4@1100611139403777'
SERVER 'xx.xx.xx.26:55410';

```

## ROOTSERVICE

#### 描述

切换 RS 的角色。

#### 格式

```javascript
alter_system_rootservice_stmt:
ALTER SYSTEM SWITCH ROOTSERVICE {LEADER | FOLLOWER} {zone | server};

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| LEADER \| FOLLOWER | 把 RS 的角色设置为 Leader 或者 Follower。 |
| zone \| server | 修改指定 Zone 或 Server 的 RS 角色。 |

#### 示例

- 把 z1 的 RS 切换为 Leader。

```javascript
ALTER SYSTEM SWITCH ROOTSERVICE LEADER ZONE 'z1';

```

## SERVER

#### 描述

该语句维护系统中 OBServer 状态，控制 OBServer 的增、删、启、停等操作。

#### 格式

```javascript
alter_system_server_stmt:
    ALTER SYSTEM server_action SERVER ip_port_list [zone];

server_action:
      ADD
    | DELETE
    | CANCEL DELETE
    | START
    | STOP
    | FORCE STOP

ip_port_list:
    ip_port [, ip_port ...]

```

#### 参数解释

服务器状态图如下：

![image.png](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/7401155061/p149171.png "image.png")

| **参数** | **描述** |
| --- | --- |
| ip_port | 指定 OBServer 的 IP 地址和端口 |
| zone | 如果指定 Zone，将会对待维护 Server 执行 Zone 校验。 |
| ADD | 新增服务器。 |
| DELETE | 删除服务器。 |
| CANCEL DELETE | 取消删除服务器。 |
| START | 启动服务器。 |
| STOP | 停止服务器。 |
| FORCE STOP | 强制停止服务器。 |

#### 示例

- 新增服务器

```javascript
ALTER SYSTEM ADD SERVER 'xx.xx.xx.113:55410' ZONE 'zone1';

```

**注意**

- 通过 Add 和 Delete 命令将服务器加入到服务列表，只有服务列表中的服务器才可以提供服务。
 - Delete 操作执行 leader 改选以及 replica 复制。
 - Delete 操作执行时间很长，因此，允许通过 Cancel 命令取消该操作。

## THROTTLE

#### 描述

该语句用来设置特征限流。

#### 格式

```javascript
alter_system_throttle_stmt:
    ALTER SYSTEM throttle_action;

throttle_action:
      ENABLE SQL THROTTLE [priority_option] [using_metric_option_list]
    | DISABLE SQL

priority_option:
    FOR PRIORITY <= INT_VALUE

using_metric_option_list:
    USING metric_option_list

metric_option_list:
    metric_option [metric_option ...]

metric_option:
      RT = {INT_VALUE | DECIMAL_VALUE}
    | CPU = {INT_VALUE | DECIMAL_VALUE}
    | IO = INT_VALUE
    | NETWORK = {INT_VALUE | DECIMAL_VALUE}
    | QUEUE_TIME = {INT_VALUE | DECIMAL_VALUE}
    | LOGICAL_READS = {INT_VALUE | DECIMAL_VALUE}

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| ENABLE SQL | 开启限流，后接限流特征及特征值 |
| FOR PRIORITY | 设定优先级，目的是只在部分 session 生效 |
| RT | 按请求执行时间限流 |
| CPU | 按 CPU 占用限流，暂未支持 |
| IO | 按 IO 次数限流，暂未支持 |
| NETWORK | 按传输的网络流量大小限流，暂未支持 |
| QUEUE_TIME | 按队列等待时间限流 |
| LOGICAL_READS | 按逻辑读次数限流，暂未支持 |
| DISABLE SQL | 关闭限流 |

#### 示例

- 对 prioriy<=100 的 session 上队列等待时间超过 0.1s 的请求限流。

```javascript
alter system enable sql throttle for priority <= 100 using queue_time=0.1

```

## UNIT

#### 描述

该语句负责 UNIT 资源迁移。

#### 格式

```javascript
alter_system_unit_stmt:
    ALTER SYSTEM MIGRATE
    UNIT [=] unit_id DESTINATION [=] ip_port

unit_id:
    INT_VALUE

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| unit_id | UNIT 编号。 |
| ip_port | 将 UNIT 迁移到的目标 Server 地址。 |

#### 示例

- 将 UNIT 1001 的资源迁移到 xx.xx.xx.111:19510。

```javascript
OceanBase(root@oceanbase)>alter system migrate unit = 1001 destination = 'xx.xx.xx.111:19510';
Query OK, 0 rows affected (0.05 sec)

```

## ZONE

#### 描述

该语句负责维护 Zone 的状态，如 Zone 的增、删、启、停等操作。

#### 格式

```javascript
alter_system_zone_stmt:
      ADD ZONE zone_name
      [zone_option_list]
    | {ALTER | CHANGE | MODIFY} ZONE zone_name
      [SET] zone_option_list
    | {DELETE | START | STOP | FORCE STOP} ZONE zone_name

zone_option_list:
    zone_option [, zone_option ...]

zone_option:
      region
    | idc
    | ZONE_TYPE {READWRITE | ENCRYPTION}

idc:
    STR_VALUE

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| ADD ZONE | 新增 Zone |
| {ALTER \| CHANGE \| MODIFY} ZONE | 修改 Zone 的 Region 属性    **说明** ALTER、CHANGE、MODIFY 三者功能相同，可以使用任意命令来修改 Zone 的 Region 属性。 |
| DELETE ZONE | 删除 Zone，删除前需要保证 Zone 中没有可用的 Server |
| START \| STOP | 主动上下线 Zone |
| zone_option | 指定目标 Zone 的属性，同时指定多个属性时各属性之前用逗号（,）分隔：   - `region`：Zone 所在 Region 的名称 - * `idc`：Zone 所在机房的名称 - `ZONE_TYPE`：指定目标 Zone 为写读 Zone（`READWRITE` ）或者加密 Zone（`ENCRYPTION`） |

#### 示例

- 删除 Zone。

```javascript
OceanBase(root@oceanbase)>alter system delete zone 'z1';
ERROR 4668 (HY000): The zone is not empty and can not be deleted. You should delete the servers of the zone. There are 1 servers alive and 0 not alive.

```

## CLUSTER

#### 描述

集群管理相关操作，可以新增、删除、修改集群级相关属性。

#### 格式

```javascript
ALTER SYSTEM  cluster_action cluster_name CLUSTER_ID INTNUM;
cluster_action:
    ADD CLUSTER
    | REMOVE CLUSTER
    | ENABLE CLUSTER SYNCHRONIZATION
    | DISABLE CLUSTER SYNCHRONIZATION
    | MODIFY CLUSTER REDO_TRANSPORT_OPTIONS = 'SYNC|ASYNC'

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| ADD CLUSTER | 新增一个备库。 |
| REMOVE CLUSTER | 删除一个已经存在的备库。 |
| ENABLE CLUSTER SYNCHRONIZATION | 允许一个备库的同步。 |
| DISABLE CLUSTER SYNCHRONIZATION | 禁掉一个备库的同步。 |
| MODIFY CLUSTER REDO_TRANSPORT_OPTIONS | 在主库上修改备库的日志同步方式： * SYNC：强同步 * ASYNC：异步同步 默认为 ASYCN 方式。 |

#### 示例

- 新增备库

```javascript
ALTER SYSTEM ADD CLUSTER 'ob1.test' cluster_id = 1;

```

## SWITCHOVER

#### 描述

集群无损、有损切换语法，包括主库切成备库，备库切成主库。

#### 格式

```javascript
ALTER SYSTEM commit_switchover_clause;

commit_switchover_clause：
    COMMIT TO SWITCHOVER TO PRIMARY
    | COMMIT TO SWITCHOVER TO PHYSICAL STANDBY
    | ACTIVATE PHYSICAL STANDBY CLUSTER
    | CONVERT TO PHYSICAL STANDBY

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| COMMIT TO SWITCHOVER TO PRIMARY | 备库切成主库，在备库上执行，并且旧主库已经切换成主库，集群中没有其他的备库先切换成主库。 |
| COMMIT TO SWITCHOVER TO PHYSICAL STANDBY | 主库无损切换成备库，在主库上执行，并且备库已经同步成功。 |
| ACTIVATE PHYSICAL STANDBY CLUSTER | 在主库宕机的情况下，把一个集群拉成主库。 |
| CONVERT TO PHYSICAL STANDBY | 把一个主库切换成备库。 |

#### 示例

- 主库切换成备库

```javascript
ALTER SYSTEM COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

```

- 备库切换成主库

```javascript
ALTER SYSTEM COMMIT TO SWITCHOVER TO PRIMARY;

```

- 主库宕机，备库切换成主库

```javascript
ALTER SYSTEM ACTIVATE PHYSICAL STANDBY CLUSTER;

```

- 旧主库重启，切成备库

```javascript
ALTER SYSTEM CONVERT TO PHYSICAL STANDBY;

```

## BALANCE TASK

#### 描述

该语句用来清除没有正在调度的负载均衡任务。

#### 格式

```javascript
ALTER SYSTEM REMOVE BALANCE TASK opt_tenant_list opt_zone_list opt_balance_task_type;

opt_tenant_list
    TENANT [=] name,name_list

opt_zone_list
    ZONE [=] zone_name, zone_list

opt_balance_task_type
    ALL
    | MANUAL
    | AUTO

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| opt_tenant_list | 租户列表，如果不指定，就会清除所有租户的任务。 |
| opt_zone_list | Zone 的列表，可不指定。 |
| opt_balance_task_type | 待清除的任务类型： * ALL：所有的任务； * AUTO：自动生成的任务； * MANUAL：用户手动发起的任务。 |

#### 示例

- 清除所有租户所有没有在调度的任务。

```javascript
ALTER SYSTEM REMOVE BALANCE TASK;

```

## CANCEL MIGRATE UNIT

#### 描述

该语句用来取消 UNIT 的迁移。

#### 格式

```javascript
ALTER SYSTEM CANCEL MIGRATE UNIT unit_id;

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| unit_id | 指定迁移的 UNIT 的 ID。 |

#### 示例

- 取消 UNIT 1001 的迁移。

```javascript
ALTER SYSTEM CANCEL MIGRATE UNIT 1001;

```

## RESTORE

#### 描述

该语句用来恢复租户的数据。

#### 格式

```javascript
ALTER SYSTEM RESTORE [table_name_list FOR] dest_tenant FROM source_tenant AT 'url' UNTIL 'timestamp' WITH 'restore_option';

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| table_name_list | 指定恢复租户中特定表格的数据，其中表名需要包含表所属的数据库（MySQL 租户）或用户（Oracle 租户）。 |
| dest_tenant | 指恢复的新租户的名字。 |
| source_tenant | 指原集群的租户。 |
| url | 指备份的时候设置的 backup_dest。 |
| timestamp | 恢复的时间戳，需要大于等于最早备份的基线备份的 CDB_OB_BACKUP_SET_DETAILS 的START_TIME，小于等于日志备份 CDB_OB_BACKUP_ARCHIVELOG_SUMMARY 的 MAX_NEXT_TIME。 |
| restore_option | 恢复选项，支持以下几种： * backup_cluster_name：源集群的名字，必选项 * backup_cluster_id：源集群的 cluster_id，必选项 * pool_list：用户的资源池，必选项 * locality：租户的 locality 信息，可选项 * kms_encrypt：为 true 表示需要恢复的时候指定kms_encrypt_info，可选项 |

#### 示例

- 恢复租户的数据。

```javascript
ALTER SYSTEM RESTORE restored_trade FROM trade
    AT 'oss://antsys-oceanbasebackup/backup_rd/20200323?host=cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com&access_id=xxx&access_key=xxx'
  UNTIL ' 2020-03-23 08:59:45'
  WITH 'backup_cluster_name=ob20daily.backup&backup_cluster_id=1&pool_list=restore_pool';

ALTER SYSTEM RESTORE restored_trade FROM trade
  AT 'file:///data/nfs/physical_backup_test/20200520'
  UNTIL '2020-05-21 09:39:54.071670'
  WITH 'backup_cluster_name=ob20daily.backup&backup_cluster_id=1&pool_list=restore_pool';

```

- 恢复租户中指定表的数据。

```unknow
ALTER SYSTEM RESTORE `crm`.`sales`, `crm`.`products`, `hr`.`employees` FOR new_tenant1 FROM tenant1
AT 'oss://antsys-oceanbasebackup/backup_rd/?host=cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com&access_id=xxx&access_key=xxx'
UNTIL '2021-02-28 08:59:45'
WITH 'backup_cluster_name=ob20daily.backup&backup_cluster_id=1&pool_list=restore_pool';

```

## BACKUP

#### 描述

该语句用来触发备份。

#### 格式

```javascript
//设置备份的介质路径
ALTER SYSTEM SET backup_dest = <backup_uri>;
//开启 logarchive
ALTER SYSTEM ARCHIVELOG;
//关闭 logarchive
ALTER SYSTEM NOARCHIVELOG;
//触发基线备份（只支持集群级别）
ALTER SYSTEM BACKUP DATABASE;
//取消当前备份
ALTER SYSTEM CANCEL BACKUP;
//设置备份备份的介质路径
ALTER SYSTEM SET backup_backup_dest = <backup_backup_uri>;
//备份备份的日志
ALTER SYSTEM BACKUP BACKUPPIECE ALL NOT BACKED UP N TIMES [tenant_id = N] [tenant_name = name] [backup_backup_dest=uri];
ALTER SYSTEM BACKUP BACKUPPIECE [= N] [tenant_id = N] [tenant_name = name]  [backup_backup_dest=uri] [WITH ACTIVE BACKUPPIECE];
//取消正在备份的备份日志
ALTER SYSTEM CANCEL BACKUP BACKUPPIECE;
//备份备份的数据
ALTER SYSTEM BACKUP BACKUPSET ALL NOT BACKED UP N TIMES [tenant_id = N] [tenant_name = name] [backup_backup_dest=uri];
ALTER SYSTEM BACKUP BACKUPSET = N [tenant_id = N] [tenant_name = name]  [backup_backup_dest=uri];
//取消正在备份的备份数据
ALTER SYSTEM CANCEL BACKUP BACKUPSET;
//启动自动备份备份日志
ALTER SYSTEM START BACKUP ARCHIVELOG;
//停止自动备份备份日志
ALTER SYSTEM STOP BACKUP ARCHIVELOG;
//修改备份目的端的授权信息
ALTER SYSTEM CHANGE EXTERNAL_STORAGE_DEST PATH='backup_path' SET ACCESS_INFO='access_id=your_access_id&access_key=your_access_key'

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| backup_dest | 指定备份的路径，目前支持 OSS 和 FILE 两种，具体格式参考示例。 |
| backup_backup_dest | 指定备份备份的目的路径，支持 OSS 和 FILE 两种。 |
| tenant_id | 指定租户 ID。 |
| tenant_name | 指定租户名称。 |
| BACKUPPIECE ALL NOT BACKED UP N TIMES | 备份副本数不足 N 个的日志备份。 |
| BACKUPPIECE [= N] | 备份指定 BACKUPPIECE ID 的日志备份，如果指定 `WITH ACTIVE BACKUPPIECE`，会同时将 ACTIVE 的备份一起备份。 |
| BACKUPSET ALL NOT BACKED UP N TIMES | 备份副本数不足 N 个的数据备份。 |
| BACKUPSET = N | 备份指定 BACKUPSET ID 的数据备份。 |
| EXTERNAL_STORAGE_DEST | 表示外部存储目的端，用在修改备份目的端的授权信息的命令中。   **说明**  - 此命令仅适用于对象存储 OSS，不支持备份介质为 NFS。 - 此命令不用于配置备份目的端，而是修改备份目的端的参数信息，必须先通过 `SET` 命令成功设置有效的 `backup_dest` 或 `backup_backup_dest` 后，再使用此命令。 - 设置的 `backup_dest` 必须有操作权限，否则命令执行会报错。 - 此命令仅允许对当前配置项 `backup_dest` 和 `backup_backup_dest` 对应的目的端进行修改。 - 在数据备份任务正在执行时，不允许修改 `backup_dest` 的 `access_id` 或者 `access_key`。 - 在备份备份任务正在执行时，不允许修改`backup_backup_dest` 的 `access_id` 或者 `access_key`，但允许修改 backup_des t的 `access_id` 或者 `access_key`。 |
| PATH | 指用于指定唯一目的端的信息，包括备份路径和 Endpoint 信息，两者可以确定唯一目的端。    **说明**  - `PATH` 不支持 `&` 符号，如果备份路径中含有 `&` 符号，则不可使用此命令来修改目的端授权信息的 `access_id` 和 `access_key`。 - `PATH` 只支持对象存储类型的设置，标准格式的示例为 `oss://xxx?host=xxx`，如果 `PATH` 包含了其他参数将发生报错。 |
| ACCESS_INFO | 用于设置变更的 `access_id` 和 `access_key` 值，且仅允许设置 `access_id` 和 `access_key` 的值，且 `access_id` 和 `access_key` 的设置必须匹配，不允许仅设置 `access_id` 或者仅设置 `access_key`。 |

#### 示例

- 设置备份的路径。

```javascript
alter system set backup_dest='oss://antsys-oceanbasebackup/backup_dir?host=xxx&access_id=xxx&access_key=xxx';
alter system set backup_dest='file:///data/nfs/physical_backup_dir';

```

- 备份备份的日志。

```unknow
alter system backup backuppiece all not backed up 2 times backup_backup_dest= 'file:///ob_backup_backup/ob_cluster_1_backup_piece_20200125';
alter system backup backuppiece 1 tenant_name tenant_1 backup_backup_dest= 'file:///ob_backup_backup/ob_cluster_1_backup_piece_20200225';

```

- 在日志备份任务执行过程中支持修改备份目的端的授权信息 `access_id` 和 `access_key`。

  ```sql
  obclient> ALTER SYSTEM CHANGE EXTERNAL_STORAGE_DEST PATH='oss://oceanbase-test-bucket/backup/?host=xxx.aliyun-inc.com' SET ACCESS_INFO='access_id=***&access_key=***';

  ```

#### 注意事项

需以系统租户身份登陆，普通租户无法执行该命令。

## DELETE BACKUPSET

**描述**

该语句用来清理一个备份。

#### 格式

```javascript
ALTER SYSTEM DELETE BACKUPSET backup_set_id [COPY copy_id];

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| backup_set_id | 指定要清理的备份对应的 backup_set 的编号。用户发起一次备份时会有对应的 ID，在 `CDB_OB_BACKUP_SET_DETAILS` 视图中可以查到。 |
| copy_id | 如果需要清理指定备份的备份数据，必须指定 `copy_id`，即删除指定 `<backup_set_id, copy_id>` 的数据备份。其中，`copy_id` 在 `CDB_OB_BACKUP_SET_DETAILS` 视图中可以查到。 |

#### 示例

- 清理 `backup_set_id` 为 `1` 的备份数据。

```unknow
ALTER SYSTEM DELETE BACKUPSET 1;

```

## DELETE BACKUPPIECE

**描述**

该语句用来清理指定的归档数据。

**格式**

```unknow
ALTER SYSTEM DELETE BACKUPPIECE piece_id COPY copy_id;

```

**参数解释**

| 参数 | 描述 |
| --- | --- |
| piece_id | 指定要清理的归档数据的 `piece_id`，可以在 `CDB_OB_BACKUP_PIECE_FILES` 视图中查询。 |
| copy_id | 指定要清理归档数据的 `copy_id`，可以在 `CDB_OB_BACKUP_PIECE_FILES` 视图中查询。 |

**示例**

- 清理 `piece_id` 为 1，`copy_id` 为 1 的归档数据。

```unknow
ALTER SYSTEM DELETE BACKUPPIECE 1 COPY 1;

```

## DELETE OBSOLETE BACKUP

**描述**

该语句用来清理过期的备份数据。 **说明**

使用该语句清理过期的备份数据之前，需要先配置过期时间。

#### 格式

```javascript
ALTER SYSTEM SET backup_recovery_window = <过期时间>;
ALTER SYSTEM DELETE OBSOLETE BACKUP;

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| backup_recovery_window | 该配置项表示成功备份的数据可以提供恢复的时间窗口，默认值为 0，表示永久保留；建议设置为 `'7d'`，表示备份数据保留一周，一周之后备份数据会被清理掉。 |

#### 示例

- 设置备份数据的过期时间为一周，一周后备份数据被清理。

```unknow
ALTER SYSTEM SET backup_recovery_window = '7d';
ALTER SYSTEM DELETE OBSOLETE BACKUP;

```

 上一篇 下一篇 ![有帮助](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) 咨询热线
