Symptoms:
VMware vCenter Server 8.x
VMware vCenter Server 7.x
VMware vCenter Server 6.x
A virtual machine was directly removed from the ESXi when the VC was down.
Important: Ensure that a fresh backup or offline snapshot of the vCenter Server Appliance has been created. If the vCenter Server is part of a Linked Mode replication group, backups/offline snapshots need to be created for every member of the Linked Mode group. Do not skip this step.
To manually remove a virtual machine from the vCenter Server database:
service-control --stop vmware-vpxd
/opt/vmware/vpostgres/current/bin/psql -d VCDB -U postgres
select * from vpx_entity where id = '<id_from_url>';
VCDB=# select * from vpx_entity where id = '0000';
id | name | type_id | parent_id
------+----------+---------+-----------
#### | vm-name | 0 | ####
VCDB=# select * from vpx_entity where name like '%cp-templ%';
id | name | type_id | parent_id
--------+--------------------------------------------------+---------+-----------
###254 | cp-template-###d6682 | 0 | 2038
###563 | cp-template-###fb911fd | 0 | 2038
###274 | cp-template-###f4d1 | 0 | 2038
delete from VPX_COMPUTE_RESOURCE_DAS_VM where VM_ID=####;
delete from VPX_COMPUTE_RESOURCE_DRS_VM where VM_ID=####;
delete from VPX_GUEST_DISK where VM_ID=####;
delete from VPX_VIRTUAL_DEVICE where ID=####;
delete from VPX_VM_CONFIG_INFO where ID=####;
delete from VPX_VM_DS_SPACE where VM_ID=####;
delete from VPX_VM_FILE_LAYOUT_EX where VM_ID=####;
delete from VPX_VM_FLE_DISK_LAYOUT where VM_ID=####;
delete from VPX_VM_FLE_FILE_INFO where VM_ID=####;
delete from VPX_VM_FLE_SNAPSHOT_LAYOUT where VM_ID=####;
delete from VPX_VM_STATIC_OVERHEAD_MAP where VM_ID=####;
delete from VPX_VM where ID=####;
delete from VPX_ENTITY where ID=####;
delete from VPX_GUEST_DISK where VM_ID=####;
delete from VPX_VM_VIRTUAL_DEVICE where ID=####;
delete from VPX_VM_CONFIG_INFO where ID=####;
delete from VPX_VM_DS_SPACE where VM_ID=####;
delete from VPX_VM_FILE_LAYOUT_EX where VM_ID=####;
delete from VPX_VM_FLE_DISK_LAYOUT where VM_ID=####;
delete from VPX_VM_FLE_FILE_INFO where VM_ID=####;
delete from VPX_VM_FLE_SNAPSHOT_LAYOUT where VM_ID=####;
delete from VPX_VM where ID=####;
delete from VPX_ENTITY where ID=####;
delete from VPX_COMPUTE_RESOURCE_DAS_VM where VM_ID=####;
delete from VPX_COMPUTE_RESOURCE_DRS_VM where VM_ID=####;
delete from VPX_COMPUTE_RESOURCE_ORC_VM where VM_ID=####;
delete from VPX_GUEST_DISK where VM_ID=####;
delete from VPX_VM_VIRTUAL_DEVICE where ID=####;
delete from VPX_VM_DS_SPACE where VM_ID=####;
delete from VPX_NON_ORM_VM_CONFIG_INFO where ID=####;
delete from VPX_NORM_VM_FLE_FILE_INFO where VM_ID=####;
delete from VPX_VDEVICE_BACKING_REL where VM_ID=####;
delete from VPX_VIRTUAL_DISK_IOFILTERS where VM_ID=####;
delete from VPX_VM_STATIC_OVERHEAD_MAP where VM_ID=####;
delete from VPX_VM_TEXT where VM_ID=####;
delete from VPX_VM where ID=####;
delete from VPX_ENTITY where ID=####;
delete from VPX_COMPUTE_RESOURCE_DAS_VM where VM_ID=####;
delete from VPX_COMPUTE_RESOURCE_DRS_VM where VM_ID=####;
delete from VPX_COMPUTE_RESOURCE_ORC_VM where VM_ID=####;
delete from VPX_VM_SGXINFO where VM_ID=####;
delete from VPX_GUEST_DISK where VM_ID=####;
delete from VPX_VM_VIRTUAL_DEVICE where ID=####;
delete from VPX_VM_DS_SPACE where VM_ID=####;
delete from VPX_NON_ORM_VM_CONFIG_INFO where ID=####;
delete from VPX_NORM_VM_FLE_FILE_INFO where VM_ID=####;
delete from VPX_VDEVICE_BACKING_REL where VM_ID=####;
delete from VPX_VIRTUAL_DISK_IOFILTERS where VM_ID=####;
delete from VPX_VM_STATIC_OVERHEAD_MAP where VM_ID=####;
delete from VPX_VM_TEXT where VM_ID=####;
delete from VPX_VM where ID=####;
delete from VPX_ENTITY where ID=####;
delete from VPX_DVPORT where connectee='vm-name';
delete from VPX_COMPUTE_RESOURCE_DAS_VM where VM_ID=####;
delete from VPX_COMPUTE_RESOURCE_DRS_VM where VM_ID=####;
delete from VPX_COMPUTE_RESOURCE_ORC_VM where VM_ID=####;
delete from VPX_VM_SGXINFO where VM_ID=####;
delete from VPX_GUEST_DISK where VM_ID=####;
delete from VPX_VM_VIRTUAL_DEVICE where ID=####;
delete from VPX_VM_DS_SPACE where VM_ID=####;
delete from VPX_NON_ORM_VM_CONFIG_INFO where ID=####;
delete from VPX_NORM_VM_FLE_FILE_INFO where VM_ID=####;
delete from VPX_VDEVICE_BACKING_REL where VM_ID=####;
delete from VPX_VIRTUAL_DISK_IOFILTERS where VM_ID=####;
delete from VPX_VM_STATIC_OVERHEAD_MAP where VM_ID=####;
delete from VPX_VM_TEXT where VM_ID=####;
delete from VPX_VM where ID=####;
delete from VPX_ENTITY where ID=####;
delete from VPX_DVPORT where connectee='vm-name';
Removing multiple VMs
a) Create a file with the delete statements, covering the IDs to be removed:
vi delete.sh
Enter the below queries in it, replace the IDs with the ones you want to delete:
#!/bin/bash
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_COMPUTE_RESOURCE_DAS_VM WHERE VM_ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_COMPUTE_RESOURCE_DRS_VM WHERE VM_ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_COMPUTE_RESOURCE_ORC_VM WHERE VM_ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_VM_SGXINFO WHERE VM_ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_GUEST_DISK WHERE VM_ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_VM_VIRTUAL_DEVICE WHERE ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_VM_DS_SPACE WHERE VM_ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_NON_ORM_VM_CONFIG_INFO WHERE ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_NORM_VM_FLE_FILE_INFO WHERE VM_ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_VDEVICE_BACKING_REL WHERE VM_ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_VIRTUAL_DISK_IOFILTERS WHERE VM_ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_VM_STATIC_OVERHEAD_MAP WHERE VM_ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_VM_TEXT WHERE VM_ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_VM WHERE ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_ENTITY WHERE ID IN (x, y, z);"
/opt/vmware/vpostgres/current/bin/psql -U postgres VCDB -c "DELETE FROM VPX_DVPORT where connectee='vm-name';"
b) Save the file, and set permissions, and run the file with output piped to /tmp/delete.txt for confirmation.
:wq!
chmod 755 delete.sh
./delete.sh >> /tmp/delete.txt
service-control --start vmware-vpxd