---
title: 黑屏解耦 &amp; 无损 FAILOVER-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 黑屏解耦 &amp; 无损 FAILOVER相关的常见问题和使用技巧，帮助您快速解决 黑屏解耦 &amp; 无损 FAILOVER的难题。
---
切换语言

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

划线反馈

# 黑屏解耦 & 无损 FAILOVER

更新时间：2026-05-09 07:56

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

## 适用场景

OCP 白屏解耦备集群效率及准确性不符合预期，备集群 `MIN(SYS_TABLE_SCN,USER_TABLE_SCN)` 已推过主集群业务停写位点，FAILOVER 阶段仍存在大量 FLASHBACK 及 CUTDATA 过程，耗时较久。

## 操作步骤

1. 终止业务请求，锁定业务用户，杀连接，并记录业务停写时间位点。
 2. 在 OceanBase 数据库后台，确认无活动 SESSION、事务均已提交。

      1. 查询是否存在活跃的 SESSION。

        ```shell
        SELECT COUNT(*) FROM OceanBase.__ALL_VIRTUAL_PROCESSLIST WHERE STATE='ACTIVE' AND TENANT<>'SYS';

        ```
      2. 查询事务是否均已提交。

        ```shell
        SELECT COUNT(*) FROM OceanBase.__ALL_VIRTUAL_TRANS_STAT WHERE TENANT_ID>1000  AND IS_EXITING <> 1;

        ```

        确认以上两查询结果均为空。
 3. 确认备集群同步位点已过业务停写时间。

      1. 确认 `STANDBY_SYNC_TIMESTAMP` 备集群同步位点与 `NOW()` 当前时间基本持平，且大于记录的业务停写时间位点。

        ```shell
        SELECT NOW(),USEC_TO_TIME(CURRENT_SCN) STANDBY_SYNC_TIMESTAMP FROM OceanBase.V$OB_CLUSTER;

        ```
      2. 确认 SYS 及业务租户 `USEC_TO_TIME(MIN_SYS_TABLE_SCN)`,`USEC_TO_TIME(MIN_USER_TABLE_SCN)`与 `NOW()` 当前时间基本持平，且大于记录的业务停写时间位点。

        ```shell
        SELECT NOW(),TENANT_ID,DDL_LAG,USEC_TO_TIME(MIN_SYS_TABLE_SCN),USEC_TO_TIME(MIN_USER_TABLE_SCN) FROM OceanBase.V$OB_CLUSTER_STATS;

        ```
 4. 发起解耦。

      1. 获取备集群名、集群 ID (备集群 SYS 租户)。

        ```shell
        SELECT CLUSTER_NAME,CLUSTER_ID FROM OceanBase.V$OB_CLUSTER;

        ```
      2. 备集群 SYS 租户中 DISCONNECT 校验，带入集群 CLUSTER_NAME、备集群CLUSTER_ID、解耦后新集群名。

        ```shell
        ALTER SYSTEM DISCONNECT STANDBY CLUSTER '$CLUSTER_NAME' CLUSTER_ID $STANDBY_CLUSTER_ID SET CLUSTER_NAME '$NEW_CLUSTER_NAME' VERIFY;

        ```
      3. 备集群 SYS 租户中发起 DISCONNECT，带入集群 CLUSTER_NAME、备集群CLUSTER_ID、解耦后新集群名。

        ```shell
        ALTER SYSTEM DISCONNECT STANDBY CLUSTER '$CLUSTER_NAME' CLUSTER_ID $STANDBY_CLUSTER_ID SET CLUSTER_NAME '$NEW_CLUSTER_NAME';

        ```
 5. 主集群移除主备关系。

   主集群 SYS 租户中带入原备集群名(即主集群名)、备集群 ID。

   ```shell
   ALTER SYSTEM REMOVE CLUSTER '$CLUSTER_NAME' CLUSTER_ID = $备集群 ID;

   ```
 6. 无损 FAILOVER。

      1. 获取备集群名、集群 ID。

        ```
      2. 确认备集群无创建中的副本，确认查询结果为空。

        ```shell
        SELECT * FROM OceanBase.__ALL_VIRTUAL_META_TABLE WHERE IS_RESTORE = 100;

        ```
      3. 备集群 SYS 租户中带入 1 中查询到的集群名、集群 ID。

        ```shell
        ALTER SYSTEM FAILOVER TO '$CLUSTER_NAME' CLUSTER_ID=$CLUSTER_ID FORCE;

        ```
      4. 确认 FAILOVER 进展，获取 TRACE_ID。

        ```shell
        SELECT FACILITY, TIMESTAMP, MESSAGE FROM OceanBase.V$OB_CLUSTER_EVENT_HISTORY WHERE FACILITY LIKE '%failover to primary%';

        ```

        带入 TRACE_ID，查看 FAILOVER 所处的阶段。

        ```shell
        SELECT FACILITY, TIMESTAMP FROM OceanBase.V$OB_CLUSTER_EVENT_HISTORY WHERE FACILITY LIKE '%trace_id:Y39B7644564D0-0005CD0AF66D9CBA%';

        ```

   5.FAILOVER 结束后，发起合并。

   ```shell
   ALTER SYSTEM MAJOR FREEZE;

   ```

## 适用版本

OceanBase 数据库 V3.x 版本。

上一篇

[主备 switchover 前，主集群显示：不能访问集群](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000322502)

下一篇

[主备库断网后弱读备库报错误代码 -4121](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000208207) ![有帮助](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) 咨询热线
