首批通过分布式安全可靠测评,为关键业务系统打造
管理 WR
更新时间:2026-04-15 17:16:59
OceanBase 数据库提供了 DBMS 包,您可以使用该包来管理 WR 相关的集群快照,包括手动创建快照、删除特定的快照,以及通过修改定时器线程的时间间隔来调整集群快照的采集频率。
注意
该功能仅支持在 SYS 租户下使用,并且在升级过程中不可用。
创建快照
WR 会自动创建快照,若需要调整快照的收集时间点,则可以通过手动创建一个新的集群快照,手动创建后,定时器将会按照新设定的时间间隔进行收集数据,命令如下:
DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(
flush_level VARCHAR(64) DEFAULT 'TYPICAL'
);
其中 flush_level 的取值目前仅支持定期快照 (TYPICAL)。这意味着只有在定期快照模式下,才会收集大部分统计数据,示例如下:
obclient [(none)]> CALL DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(flush_level => 'TYPICAL');
Query OK, 0 rows affected, 3 warnings (1.112 sec)
注意
在手动创建快照后,定时器将会重新计时。例如在默认的间隔为 1 小时的情况下开启定期快照:
- 12:21 定时器触发创建快照
- 13:21 定时器触发创建下一个快照
- 13:45 用户手动创建快照
- 14:45 定时器触发创建下一个快照
设置快照策略
设置快照间隔和保留时间
通过修改快照间隔和保留时间来调整集群快照的采集频率,命令如下:
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention INT DEFAULT NULL,
interval INT DEFAULT NULL
);
相关字段的说明如下:
| 字段 | 说明 |
|---|---|
| retention | 一个快照的保留时间,超过这个时间的快照将会被自动删除,单位为分钟。取值范围为 [1440 分钟(1 天),52560000 分钟(100 年)]。
|
| interval | 每个快照之间的间隔设置,单位为分钟。取值范围为 [10 分钟,525600 分钟(1 年)]。
|
例如设置每个快照的保留时间为 2265 分钟(约 1 天 12 小时),并将每个快照之间的间隔设置为 16 分钟,示例如下:
obclient [(none)]> CALL DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS('2265','16');
Query OK, 0 rows affected (0.006 sec)
查看快照配置信息
通过
oceanbase.CDB_WR_CONTROL视图查看所有租户下 WR 相关的配置信息。obclient [oceanbase]> SELECT * FROM oceanbase.CDB_WR_CONTROL;返回结果如下:
+-----------+---------------+-------------+---------+ | TENANT_ID | SNAP_INTERVAL | RETENTION | TOPNSQL | +-----------+---------------+-------------+---------+ | 1 | +0 00:16:00 | +1 13:45:00 | 30 | +-----------+---------------+-------------+---------+ 1 row in set (0.018 sec)各字段的解释如下:
字段 描述 TENANT_ID - 租户ID
- 其他值:用户租户或者 Meta 租户 ID
SNAP_INTERVAL 每个快照之间的间隔设置,格式为 DD HH:mm:SS方便阅读RETENTION 每个快照之间的保留时间,格式为 DD HH:mm:SS方便阅读TOPNSQL 存储的 topN 的 SQL 有关 oceanbase.CDB_WR_CONTROL 视图的更多信息,请参见 oceanbase.CDB_WR_CONTROL。
通过
oceanbase.DBA_WR_CONTROL视图查看本租户下 WR 相关的配置信息。obclient [oceanbase]> SELECT * FROM oceanbase.DBA_WR_CONTROL;返回结果如下:
+-----------+---------------+-------------+---------+ | TENANT_ID | SNAP_INTERVAL | RETENTION | TOPNSQL | +-----------+---------------+-------------+---------+ | 1 | +0 00:16:00 | +1 13:45:00 | 30 | +-----------+---------------+-------------+---------+ 1 row in set (0.003 sec)各字段的解释如下:
字段 描述 TENANT_ID - 租户ID
- 其他值:用户租户或者 Meta 租户 ID
SNAP_INTERVAL 每个快照之间的间隔设置,格式为 DD HH:mm:SS方便阅读RETENTION 每个快照之间的保留时间,格式为 DD HH:mm:SS方便阅读TOPNSQL 存储的 topN 的 SQL 有关 DBA_WR_CONTROL 视图的更多信息,请参见 oceanbase.DBA_WR_CONTROL和 DBA_WR_CONTROL。
通过
oceanbase.CDB_WR_SNAPSHOT视图查看所有租户的快照信息。obclient [oceanbase]> SELECT * FROM oceanbase.CDB_WR_SNAPSHOT limit 1;返回结果如下:
+------------+-----------+---------+----------------+----------+----------------------------+----------------------------+-----------+----------------------------+ | CLUSTER_ID | TENANT_ID | SNAP_ID | SVR_IP | SVR_PORT | BEGIN_INTERVAL_TIME | END_INTERVAL_TIME | SNAP_FLAG | STARTUP_TIME | +------------+-----------+---------+----------------+----------+----------------------------+----------------------------+-----------+----------------------------+ | 4000 | 1 | 114 | xx.xx.xx.xx | 2882 | 2023-09-22 01:20:58.332785 | 2023-09-22 02:20:58.333136 | 0 | 2023-09-21 16:21:41.723234 | +------------+-----------+---------+----------------+----------+----------------------------+----------------------------+-----------+----------------------------+ 1 row in set (0.004 sec)各字段的解释如下:
字段 描述 CLUSTER_ID 集群 ID TENANT_ID 租户 ID SNAP_ID 快照 ID SVR_IP 节点 IP SVR_PORT 节点 PORT BEGIN_INTERVAL_TIME 快照开始时间,时间戳精确到毫秒 END_INTERVAL_TIME 快照结束时间,时间戳精确到毫秒 SNAP_FLAG 快照触发原因 STARTUP_TIME 进程启动时间,时间戳精确到毫秒 有关 oceanbase.CDB_WR_SNAPSHOT 视图的更多信息,请参见 oceanbase.CDB_WR_SNAPSHOT。
通过
oceanbase.DBA_WR_SNAPSHOT视图查看本租户的快照信息。obclient [oceanbase]> SELECT * FROM oceanbase.DBA_WR_SNAPSHOT limit 1;返回结果如下:
+------------+-----------+---------+----------------+----------+----------------------------+----------------------------+-----------+----------------------------+ | CLUSTER_ID | TENANT_ID | SNAP_ID | SVR_IP | SVR_PORT | BEGIN_INTERVAL_TIME | END_INTERVAL_TIME | SNAP_FLAG | STARTUP_TIME | +------------+-----------+---------+----------------+----------+----------------------------+----------------------------+-----------+----------------------------+ | 4000 | 1 | 114 | xx.xx.xx.xx | 2882 | 2023-09-22 01:20:58.332785 | 2023-09-22 02:20:58.333136 | 0 | 2023-09-21 16:21:41.723234 | +------------+-----------+---------+----------------+----------+----------------------------+----------------------------+-----------+----------------------------+ 1 row in set (0.004 sec)各字段的解释如下:
字段 描述 CLUSTER_ID 集群 ID TENANT_ID 租户 ID SNAP_ID 快照 ID SVR_IP 节点 IP SVR_PORT 节点 PORT BEGIN_INTERVAL_TIME 快照开始时间,时间戳精确到毫秒 END_INTERVAL_TIME 快照结束时间,时间戳精确到毫秒 SNAP_FLAG 快照触发原因 STARTUP_TIME 进程启动时间,时间戳精确到毫秒 有关 DBA_WR_SNAPSHOT 视图的更多信息,请参见 oceanbase.DBA_WR_SNAPSHOT 和 DBA_WR_SNAPSHOT。
删除快照
注意
- 请确保删除的快照 ID 是有效的存在于系统中的快照 ID。
- 执行删除操作后,指定范围内的快照数据将被永久删除,请谨慎操作。
通过指定要删除的快照范围的起始和结束快照 ID,删除指定范围内的快照数据,命令如下:
DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(
low_snap_id INT,
high_snap_id INT
);
相关字段的说明如下:
| 字段 | 说明 |
|---|---|
| low_snap_id | 要删除的快照的起始快照 ID |
| high_snap_id | 要删除的快照的结束快照 ID |
删除快照的过程如下:
首先要查询租户下所有的 SNAP_ID。
obclient [oceanbase]> select count(1),min(snap_id), max(snap_id) from oceanbase.DBA_WR_SNAPSHOT;返回结果如下:
+-----------+--------------+--------------+ | count(1) | min(snap_id) | max(snap_id) | +-----------+--------------+--------------+ | 1 | 2 | 2 | +-----------+--------------+--------------+ 1 row in set (0.039 sec)删除 SNAP_ID 范围内的快照数据。
obclient [oceanbase]> CALL DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE('2','2'); Query OK, 0 rows affected (1.018 sec)查看 SNAP_ID 是否删除成功。
obclient [oceanbase]> select count(1),min(snap_id), max(snap_id) from oceanbase.DBA_WR_SNAPSHOT;