book
Article ID: 301333
calendar_today
Updated On:
Environment
VMware vCenter Server 6.0.x
VMware vCenter Server Appliance 6.0.x
Cause
出现此问题的原因是 vCenter Server 数据库中的表之间存在不匹配。
Resolution
此问题在 vCenter Server 6.0 Update 3 中已解决,请访问
VMware Downloads 下载。
要临时解决此问题,请使用以下任一选项:
- 手动重命名受影响的虚拟机名称。
- 迁移受影响的虚拟机将还原该名称。
- 如果受影响的虚拟机数量较多,则执行以下步骤。
在较大的环境中,可能很难识别所有受影响的虚拟机。可以使用下列方法比较提及的两个表:
- 在数据库上,使用以下任一 SQL 查询。这两个查询都不会对数据库进行任何更改。
注意:您可以使用两个查询进行验证
select ENTITY.NAME, CONFIGINFO.NAME FROM
VPX_ENTITY AS entity
INNER JOIN VPX_VM_CONFIG_INFO AS configinfo
ON entity.id = configinfo.id
此查询返回 VPX_VM_CONFIG_INFO 表中的所有虚拟机名称以及在 VPX_ENTITY 表中找到的关联虚拟机名称。
所有虚拟机名称应在各列之间匹配。每列包含相应表中的名称字段。如果一行包含不匹配的列,您可能需要使用以下 SQL 查询。
select ENTITY.NAME, CONFIGINFO.NAME FROM
VPX_ENTITY AS entity
INNER JOIN VPX_VM_CONFIG_INFO AS configinfo
ON entity.id = configinfo.id
WHERE ENTITY.NAME != CONFIGINFO.NAME
此查询返回 VPX_VM_CONFIG_INFO与VPX_ENTITY 表之间存在不匹配的所有虚拟机名称。如果没有不匹配,则查询不会返回任何行。
- 如果存在不匹配且您未手动进行修复,请停止 vCenter Server 服务并运行这些 SQL 更新语句,使这两个表重新匹配:
UPDATE
VPX_ENTITY
SET
name = configinfo.name
FROM
VPX_ENTITY AS entity
INNER JOIN VPX_VM_CONFIG_INFO AS configinfo
ON entity.id = configinfo.id
WHERE configinfo.name != entity.name
-
启动 vCenter Server 服务,虚拟机名称将显示在 vCenter 清单列表上。
注意:如果嵌入式 Postgres 数据库出现此问题(具有嵌入式 Postgres 数据库的 vCenter Server Appliance 和适用于 Windows 的 vCenter Server),则向 VMware 技术支持提出支持请求,然后在问题描述中记录此知识库文章 ID (2146168)。有关详细信息,请参见 How to File a Support Request.
Additional Information
注意:截至 2016 年 8 月 26 日,上述链接正确无误。如果您发现某个链接已损坏,请提供反馈,VMware 员工会更新该链接。
Virtual machines names appear as ds:///vmfs/volumes/datastore/vm_nameImpact/Risks:
- 在执行此过程前,请确保对数据库进行完全备份。
- 此过程的风险较低,但是可以通过还原备份进行恢复。