DMS刷新同步字典(同步元数据)常见问题

更新时间:
复制 MD 格式

本文汇总DMS刷新/同步字典(同步元数据)场景下的常见问题及排查方法,涵盖通用问题、Redis专题和Oracle专题。

通用问题

为什么数据库中已经存在库或表,DMS中却看不到?

DMS展示的库表信息不一定是实时从数据库读取的。

  • 安全托管实例:DMS会采集并存储实例元数据。首次录入时触发全量采集,并默认每天18:00定时全量采集。

  • 非安全托管实例:DMS仅持久化库级信息,其他元数据在登录后实时加载。

  • 通过DMS执行的DDL变更会触发增量采集。一般在操作完成后约5秒内,可在DMS中刷新对象列表后查看最新的库表结构;实际生效时间可能受数据库负载和采集任务状态影响。

  • 通过数据库控制台或其他客户端执行的变更,可能需要手动刷新或同步字典。

更多信息,请参见数据库元数据采集展示检索

如何手动刷新数据库和表信息?

可通过以下任意方式操作:

  • 方式一:在DMS首页左侧实例列表中右键单击目标实例,选择刷新/同步字典,确认后等待采集完成。

  • 方式二:在顶部导航栏选择数据资产 > 实例管理,在实例列表中找到目标实例,选择更多 > 刷新/同步字典

如果变更是在其他客户端执行的,也可以尝试重新登录实例,重新加载元数据。

更多信息,请参见同步数据库实例的数据字典重新加载DMS库表元数据的时机与原因

刷新或同步字典后,仍然看不到数据库怎么办?

建议按以下顺序排查:

1. 检查DMS使用的数据库账号权限

DMS只能采集当前数据库账号有权访问的数据库。该问题可能出现在RDS MySQL、RDS PostgreSQL、RDS SQL Server、PolarDB MySQL、PolarDB PostgreSQL等阿里云数据库,以及他云或自建数据库中。

请确认:

  • DMS中配置的数据库账号和密码有效。

  • 账号具有目标数据库的访问权限。

  • 新建数据库后,已将该数据库授权给DMS使用的账号。

  • 如需展示实例下全部数据库,应为账号授予全部目标数据库的访问权限。

  • PostgreSQL系列还需要检查目标Database、Schema及相关对象权限。

说明

RDS MySQL、RDS PostgreSQL、RDS SQL Server、PolarDB MySQL、PolarDB PostgreSQL新建数据库后,均可能不会将新库自动授权给DMS使用的账号。此时即使刷新字典,DMS仍无法展示该数据库,需要先为DMS使用的数据库账号授予新库访问权限,再重新执行刷新/同步字典。

不同数据库引擎的账号授权方式有所不同,具体操作请参见:

2. 检查实例连接状态

请确认:

  • 数据库实例处于正常运行状态。

  • 数据库地址、端口、账号和密码正确。

  • DMS IP已加入数据库白名单。

  • 安全组、防火墙和网络链路允许DMS访问。

  • 数据库启用SSL/TLS后,DMS中也配置了对应的SSL连接方式。

更多信息,请参见数据库登录连接问题排查FAQ添加DMS IP至实例白名单

3. 检查是否被系统库过滤规则屏蔽

安全协同模式默认会屏蔽部分系统库。安全规则还可以自定义过滤数据库或Schema。被过滤后,DMS不会采集相应元数据,也无法搜索或展示这些数据库。

更多信息,请参见DMS默认屏蔽的实例系统库自定义屏蔽系统库

4. 检查当前DMS用户的元数据访问权限

数据库账号具有访问权限,不代表当前登录DMS的用户一定具有查看权限。开启元数据访问控制后,没有实例或数据库权限的用户无法查看对应资源。

如果管理员能够看到,但普通用户看不到,应优先检查:

  • 是否开启用户、数据库或实例级元数据访问控制。

  • 用户是否拥有目标数据库的查询、导出或变更权限。

  • DBA或管理员是否已为用户分配相应权限。

更多信息,请参见设置元数据访问控制

为什么同步字典长时间没有完成?

元数据同步耗时与实例中的库表数量有关。库表较多时,同步任务可能需要数分钟甚至更长时间。

当前系统采集字典所执行SQL的超时时间最大为120秒。如果单个数据库下的表数量过多(例如达到10万张以上量级),采集SQL可能因超过120秒而超时,导致元数据同步无法完成,DMS无法正常展示该库的表列表。这属于当前系统的能力限制,10万张表是参考量级而非严格阈值,实际是否超时还会受到数据库性能、负载和网络状况等因素影响。

建议:

  1. 避免短时间内重复触发同步。

  2. 等待当前同步任务完成后重新查看。

  3. 确认数据库连接稳定。

  4. 确认数据库账号权限未发生变化。

  5. 如果是非托管实例,尝试重新登录实例后查看。

更多信息,请参见同步数据库实例的数据字典

为什么只有部分用户看不到数据库?

通常属于DMS用户权限问题,而不是元数据采集问题。

请检查:

  • 是否开启用户、数据库或实例级元数据访问控制。

  • 用户是否拥有目标数据库的查询、导出或变更权限。

  • DBA或管理员是否已为用户分配实例或数据库权限。

如果管理员能够看到而普通用户看不到,应优先排查此项。

为什么系统库或某些Schema看不到?

安全协同模式会默认屏蔽部分系统库,例如:

  • MySQLmysqlinformation_schemaperformance_schema等。

  • SQL Servermastermodelmsdbtempdb等。

  • PostgreSQL:主要过滤information_schemapg_catalog等系统Schema。

此外,安全协同模式的实例可以通过安全规则 > 其他 > 元数据同步 > 过滤系统库,按完整名称或正则表达式自定义过滤系统库、高敏感业务库;PostgreSQL系列过滤的是Schema。修改过滤规则后,需要再次执行"刷新/同步字典",也可以等待每天18:00的自动元数据同步使配置生效。

更多信息,请参见DMS针对各数据库类型默认屏蔽的系统库列表如何在DMS中自定义屏蔽系统库

为什么数据库被锁或状态异常后,DMS中看不到Schema?

DMS刷新/同步字典时需要连接目标数据库并执行元数据采集SQL。如果RDS实例或目标数据库处于被锁定、不可用等异常状态,DMS将无法正常获取Schema等元数据信息,此时重复刷新/同步字典通常无法解决。

建议按以下步骤处理:

  1. 在对应的云数据库控制台检查实例及目标数据库的运行状态。

  2. 如果数据库被锁定,先根据云数据库控制台提示完成解锁,使数据库恢复正常可访问状态。

  3. DMS中测试连接,确认数据库可以正常访问。

  4. 重新执行"刷新/同步字典",等待采集完成后刷新对象列表。

更多信息,请参见数据库登录连接问题排查FAQ

Redis专题

通过公网录入Redis集群后,为什么只能看到DB0?

DMS官方文档说明:他云或自建Redis集群架构录入DMS后,目前仅支持展示DB0。

这属于当前产品支持范围限制,重复刷新或同步字典通常无法解决。

建议:

  • 阿里云Tair/Redis实例优先通过阿里云数据库来源录入。

  • 他云或自建Redis集群应提前确认DMS的展示能力。

更多信息,请参见连接他云或自建数据库

DMS如何识别Redis集群模式?

Redis集群架构的识别能力与实例来源和接入方式有关。

  • 阿里云Tair/Redis集群实例建议通过阿里云数据库来源录入。

  • 通过公网、他云或自建方式录入的Redis集群存在能力限制。

  • 官方文档已明确,他云和自建Redis集群目前仅支持展示DB0。

Oracle专题

为什么Oracle实例刷新/同步字典后,仍看不到Schema、表或字段?

DMS采集Oracle元数据时,需要使用录入实例时配置的数据库账号查询Oracle系统表或系统视图。如果该账号缺少相关对象的查询权限,可能导致Schema、表、字段、索引、约束或注释等元数据采集不完整,刷新/同步字典后仍无法正常展示。

请确保DMS使用的数据库账号至少具备以下系统表或系统视图的查询权限:

  • V$INSTANCE

  • SYS.DBA_USERS

  • SYS.DBA_TABLES

  • SYS.DBA_SEGMENTS

  • SYS.DBA_TAB_COMMENTS

  • SYS.DBA_TAB_COLUMNS

  • SYS.DBA_COL_COMMENTS

  • SYS.DBA_SYNONYMS

  • SYS.DBA_OBJECTS

  • SYS.DBA_INDEXES

  • SYS.DBA_CONSTRAINTS

  • SYS.DBA_IND_COLUMNS

说明

其中,V$INSTANCE通常是动态性能视图的同义词,实际授权时可能需要由Oracle DBA对底层对象SYS.V_$INSTANCE授予查询权限,具体以目标Oracle版本和权限配置为准。

完成授权后,请重新执行"刷新/同步字典"。