从 vCenter Server 使用的数据库中清除旧数据 (2075138)(转)
Document Id
2075138
Symptoms
免责声明: 本文为 Purging old data from the database used by VMware vCenter Server (1025914) 的翻译版本。 尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。 有关最新内容,请参见英文版本。
Purpose
如果您的 vCenter Server 无法启动,请确认VPX_EVENT和VPX_TASK表是否已满并根据需要手动清空数据库。
vCenter Server 数据库已满时:
- 无法登录 vCenter Server。
- VMware VirtualCenter Server 服务可能会在启动后立即停止。
- Microsoft SQL 事件日志报告以下错误:
无法为数据库 'VCDB' 中的对象 'dbo.VPX_EVENT'.'VPXI_EVENT_USERNAME' 分配空间,因为 'PRIMARY' 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间。(Could not allocate space for object 'dbo.VPX_EVENT'.'VPXI_EVENT_USERNAME' in database 'VCDB' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.)
Resolution
要解决此问题,请手动清除或截断 vCenter Server 数据库。
注意:VMware 建议您先停止 VMware VirtualCenter Server 服务并为您的数据库创建完整、可靠的备份,再尝试执行此过程。
注意:
- 如果使用的是 SQL 2005 Express,则可能需要下载并安装 Microsoft SQL Server Management Studio Express。
- SQL Express 2005/2008(vCenter Server 5.x 与 SQL Express 2008 打包在一起)支持最多 5 个主机和 50 个虚拟机。如果您的环境超出这些阈值,必须将数据库升级到 SQL Standard 版本。
- 如果可用磁盘空间不足,在此过程中数据库事务日志可能会被填满。对于 SQL Server,如果无法提供所需的磁盘空间,一种可选方案是在此操作执行期间对数据库采用“简单”恢复模式。
清除任务和事件表
注意:如果清除数据库需要较长时间,请截断事件和任务表来清理数据库。
要清除
VPX_EVENT
表中的数据,请执行以下操作:- 连接到
Servername\SQL Database
并使用相应凭据登录。 - 单击数据库展开,然后依次选择 VIM_VCDB >表。
注意:默认情况下,vCenter Server 数据库的名称为VIM_VCDB
,除非在一开始创建时进行了重命名。 - 右键单击 dbo.VPX_PARAMETER 表,再单击打开。
注意:如果使用的是 SQL Server 2008,则右键单击 dbo.VPX_PARAMETER 表,并单击编辑前 200 行。 - 将 event.maxAge 修改为30,并将 event.maxAgeEnabled 值修改为 true。
- 将 task.maxAge 修改为30,并将 task.maxAgeEnabled 值修改为 true。
注意:为缩短数据清除时间,请在多个时间间隔内运行上述步骤:- 确保留用 event.maxAge 的默认值 task.maxAge.
- 执行步骤 6 来运行清理任务。
- 将 event.maxAge 和 task.maxAge 值减少 60,然后运行清理任务。
- 重复步骤 a 到 c,直到值达到 30 并执行最终清除过程。
- 运行内置的存储过程:
- 导航到 VIM_VCDB>可编程性>存储过程。
- 右键单击 dbo.cleanup_events_tasks_proc,然后选择执行存储过程。
这将根据为 maxAge 指定的日期从 vpx_event, vpx_event_arg 和 vpx_task 表中清除数据。 - 成功完成清理操作后,关闭 SQL Management Studio,然后启动 VMware Virtual Center Server 服务。
- 确保默认统计级别设置为 1:
- 使用 vSphere Client 以管理员身份登录 vCenter Server。
- 转到管理>vCenter Server 设置>统计。
- 在“统计间隔”下,确保“统计级别”列设置为1。
- 要更改该值,可选择间隔时间,单击编辑,然后从列表中选择1 级。
注意:
- 执行
dbo.cleanup_events_tasks_proc
可能会花费较长时间,具体视数据库大小而定。 - 由于事务日志将基于要清除的数据以多个间隔来填充,因此操作可能失败。在需要时您必须缩小 Transaction 日志,然后重新运行
dbo.cleanup_events_tasks_proc
。
截断事件和任务表
要截断事件和任务表,请运行以下脚本:
alter table VPX_EVENT_ARG drop constraint FK_VPX_EVENT_ARG_REF_EVENT, FK_VPX_EVENT_ARG_REF_ENTITY
alter table VPX_ENTITY_LAST_EVENT drop constraint FK_VPX_LAST_EVENT_EVENT
truncate table VPX_TASK
truncate table VPX_ENTITY_LAST_EVENT
truncate table VPX_EVENT
truncate table VPX_EVENT_ARG
alter table VPX_EVENT_ARG add constraint FK_VPX_EVENT_ARG_REF_EVENT foreign key(EVENT_ID) references VPX_EVENT (EVENT_ID) on delete cascade,
constraint FK_VPX_EVENT_ARG_REF_ENTITY foreign key (OBJ_TYPE) references VPX_OBJECT_TYPE (ID)
alter table VPX_ENTITY_LAST_EVENT add constraint FK_VPX_LAST_EVENT_EVENT foreign key(LAST_EVENT_ID)
references VPX_EVENT (EVENT_ID) on delete cascade
alter table VPX_EVENT_ARG drop constraint FK_VPX_EVENT_ARG_REF_EVENT, FK_VPX_EVENT_ARG_REF_ENTITY
alter table VPX_ENTITY_LAST_EVENT drop constraint FK_VPX_LAST_EVENT_EVENT
truncate table VPX_TASK
truncate table VPX_ENTITY_LAST_EVENT
truncate table VPX_EVENT
truncate table VPX_EVENT_ARG
alter table VPX_EVENT_ARG add constraint FK_VPX_EVENT_ARG_REF_EVENT foreign key(EVENT_ID) references VPX_EVENT (EVENT_ID) on delete cascade,
constraint FK_VPX_EVENT_ARG_REF_ENTITY foreign key (OBJ_TYPE) references VPX_OBJECT_TYPE (ID)
alter table VPX_ENTITY_LAST_EVENT add constraint FK_VPX_LAST_EVENT_EVENT foreign key(LAST_EVENT_ID)
references VPX_EVENT (EVENT_ID) on delete cascade
免责声明:VMware 对第三方网站上数据、观点、建议或声明的可靠性不承担任何责任。包含此类链接不代表 VMware 认可、推荐此类站点的内容或接受相应的责任。
Related Information
使用以下 Microsoft SQL Studio 选项无助于清除 VPX_EVENT 和 VPX_TASK 表:
- 清除旧数据
- 截断表
- 收缩日志和数据库
- 重新创建汇总作业
明天的你会感谢今天拼命奋斗的自己