您可以通过以下几种方法来判断备集群在创建租户时是否卡住:

  • 查询 表,对比主备集群的租户列表。

    如果备集群中缺少部分租户,则表示备集群可能正在创建租户,或者创建租户失败出现了卡住的现象。

  • 在主集群上,查询 V$OB_STANDBY_STATUS 视图的 SYNCHRONIZATION_STATUS 列。

    如果该列的值为 SYS SCHEMA NOT SYNC,则表示系统租户的 Schema 不同步,可能出现了备集群创建租户时卡住的现象。

  • 在主集群和备集群上,分别执行以下命令查询 V$OB_CLUSTER_STATS 视图,比较系统租户的 Schema 版本。

    如果备集群的系统租户的 Schema 版本比主集群的系统租户的 Schema 版本小,则表示可能出现了备集群创建租户时卡住的现象。

  • 在主集群下,查询一个即将同步到备集群的系统租户的 DDL 变更。

    查看同步情况的 SQL 语句如下:

    1. FROM __ALL_DDL_OPERATION
    2. LIMIT 10;

备集群创建租户时卡住的常见原因是租户资源池创建失败。本节以目标租户的 tenant_id1001 为例,确认备集群中是否出现了租户资源池创建失败的方法如下:

  1. 查询资源配置,检查是否存在名称为 __unit_config_1001 的资源配置。

    如果查询结果中不存在对应的资源配置,则说明还没有开始创建租户,当前问题不是资源池创建失败导致。否则,需要执行下一步。

  2. 查询资源池,检查是否存在名称为 __resource_pool_1001 的资源池。

    1. obclient> SELECT * FROM __ALL_RESOURCE_POOL WHERE NAME LIKE '__resource_pool_1001';

    如果查询结果中存在对应的资源池,则说明资源池创建成功,当前问题不是资源池创建失败导致。否则,说明资源池还未创建成功,需要执行下一步检查。

  • 备集群上的 Server 宕机

  • 备集群上在线的 Server 的可用资源不足

  1. 排查备集群上是否有机器故障,机器故障可能导致 Zone 内没有机器分配 Unit,创建资源池时报 -4656 的错误。

    如果确认是机器故障,则需要尽快恢复机器,保证有足够的 Server 在线。

  2. 如果确认有足够的 Server 在线,则需要计算 Server 的剩余资源,包括 CPU、内存等,人工调小备集群的租户资源配置,保证 Zone 内有机器分配 Unit。备集群会自动重试创建租户资源池,直到成功。

    调整备集群租户资源配置的命令如下:

    1. obclient> ALTER RESOURCE UNIT __unit_config_1001 MIN_MEMORY='xx', MAX_MEMORY='xx';

    其中,__unit_config_1001 表示 tenant_id1001 的租户的资源配置。

    说明