首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库 V4.x 版本中为备租户设置日志恢复源时遇到 ERROR 1210 错误
更新时间:2026-05-18 06:56
本文主要介绍 OceanBase 数据库 V4.x 版本中使用 alter system set log_restore_source ... 为备租户设置日志恢复源时遇到 ERROR 1210 (HY000): Incorrect arguments to get primary connection 错误的问题排查方法和处理方法。
问题现象
在 OceanBase 数据库 V4.x 版本中使用 alter system set log_restore_source ... 为备租户设置日志恢复源时,遇到报错,信息如下:

问题的风险及影响
为备租户设置恢复源失败,导致当前备租户无法开启日志的持续同步。
适用版本
OceanBase 数据库 V4.1 及之后的版本。
问题原因
由于备租户在连接主租户或源端的备租户时,需要访问主租户或源端的备租户的部分系统视图,因此需要有一个访问视图专用用户具备这部分系统视图的查询权限。
根据错误信息可知,主租户中当前用于数据同步的用户缺少一些基本的权限。
详细信息参见:设置日志恢复源 。
备租户需要访问的系统视图如下:
GV$OB_LOG_STAT:用于获取主租户的机器列表、副本服务的日志流 LSN 范围、角色(是否是 Leader)等信息。
GV$OB_UNITS:查询主租户的所有 Unit 信息,获取副本状态、Zone 以及 Region 等信息,用于过滤、获取和维护租户机器连接等。
GV$OB_PARAMETERS: 用于查询主租户的 cluster_id、tenant_id 等服务必须的元信息。
DBA_OB_ACCESS_POINT: 用于获取访问入口信息。在主租户迁移复制、容灾等场景下,若访问入口发生变化,备租户可以自动感知,不需要用户手动修改。
DBA_OB_TENANTS:获取主租户的兼容模式。
DBA_OB_LS: 获取主租户的日志流列表以及日志流状态。
DBA_OB_LS_HISTORY: 获取主租户历史上存在过的日志流列表以及日志流状态。
解决方法及规避方式
解决方法:
MySQL 模式。
通过数据库管理员 root 用户连接到该 MySQL 主租户,为该用户赋予权限。
MySQL [(none)]> create user $user_name identified by $password; GRANT SELECT on oceanbase.DBA_OB_TENANTS to $user_name; GRANT SELECT on oceanbase.GV$OB_PARAMETERS to $user_name; GRANT SELECT on oceanbase.DBA_OB_ACCESS_POINT to $user_name; GRANT SELECT on oceanbase.GV$OB_LOG_STAT to $user_name; GRANT SELECT on oceanbase.GV$OB_UNITS to $user_name; GRANT SELECT on oceanbase.DBA_OB_LS to $user_name; GRANT SELECT on oceanbase.DBA_OB_LS_HISTORY to $user_name;或者直接将 OceanBase 数据库下所有表的 SELECT 权限授予该用户:
MySQL [(none)]> GRANT SELECT ON oceanbase.* TO $user_name;Oracle 模式。
通过数据库管理员 SYS 用户连接到该 Oracle 主租户,为该用户赋予权限:
obclient [SYS]> create user $user_name identified by $password; GRANT CONNECT to $user_name; GRANT SELECT on SYS.DBA_OB_TENANTS to $user_name; GRANT SELECT on SYS.GV$OB_PARAMETERS to $user_name; GRANT SELECT on SYS.DBA_OB_ACCESS_POINT to $user_name; GRANT SELECT on SYS.GV$OB_LOG_STAT to $user_name; GRANT SELECT on SYS.GV$OB_UNITS to $user_name; GRANT SELECT on SYS.DBA_OB_LS to $user_name; GRANT SELECT on SYS.DBA_OB_LS_HISTORY to $user_name;
OceanBase 数据库从 V4.2.2 版本开始新支持系统默认角 STANDBY_REPLICATION,该角色默认包含 CREATE SESSION 系统权限以及对以下视图的查询权限:
GV$OB_LOG_STAT
GV$OB_UNITS
GV$OB_PARAMETERS
DBA_OB_ACCESS_POINT
DBA_OB_TENANTS
DBA_OB_LS
DBA_OB_LS_HISTORY
因此,也可以直接给该用户赋予 STANDBY_REPLICATION 角色即可:
obclient [SYS]> GRANT STANDBY_REPLICATION TO $user_name;
规避方式:
无 。