如果您有权访问 ePO 控制台,强烈建议您清除 ePO 数据库中的数据。
有关详细信息,请参阅相关文章
KB79561 - 如何使用 ePO 控制台清除 ePO 数据库中的数据.
只有在无法使用 ePO 控制台中提供的数据库维护清除数据时,才必须要执行本文。
如果您的 ePO 数据库很大且您需要减小大小,请确定需要清除的表。
有关以下步骤的帮助,请参阅
KB67591 - 如何根据系统技术支持提供的 SQL ePolicy Orchestrator 数据库.
查询 ePO 数据库
您可以按照以下步骤直接查询 ePO 数据库以确定最大的表:
- 使用SQL Server Management Studio打开查询窗口,并选择 ePO 数据库。
- 运行以下脚本并分析结果。 此脚本会返回以下内容:
- ePO 中的表。
- 每个表中有多少行。
- 每个表占用的空间(以 MB 为单位)。 该脚本按大小顺序列出了表:
注意:如果您使用的是 ePO5.10,您必须要针对两个 ePO 数据库运行此脚本。
select t.[Name] AS TableName, p.[rows],
CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) as numeric(36, 2))
as TotalSpaceMB,
CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2)
as numeric (36, 2)) as UnusedSpaceMB
from sys.tables t inner join sys.indexes i on t.OBJECT_ID = i.object_id
inner join sys.partitions p on i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
inner join sys.allocation_units a on p.partition_id = a.container_id
left outer join sys.schemas s on t.schema_id = s.schema_id
where t.[Name] not like 'dt%' AND t.is_ms_shipped = 0 AND i.OBJECT_ID > 255
group by t.[Name], s.[Name], p.[rows]
order by TotalSpaceMB desc, t.[Name];
- 根据脚本的结果,您可以使用以下适当的解决方案之一清除数据。
清除相关表中的数据后,数据库将具有更多的可用空间。 但是,此操作实际上不会减少存储解决方案中的数据库文件的大小。 要减小数据库大小,您需要缩减数据库。 但您通常无需缩减数据库。
正在清除威胁事件日志
如果您需要从以下表格中删除数据,此解决方案将适用:
- ATD_Events
- DC_OSS_Events
- EPCertEventMT
- EPExtendedEventMT
- EPOEvents
- EPStoryGraphInfoMT
- HIP8_EventInfo
- HIP8_IPSEventParameter
- JTIClientEventInfo
- MVEDRCustomEventMT
- MVIS_EP_ExtendedEventMT
- SCOR_Events
- VSECustomEvent
- WP_EventInfoMT
以下文章提供有关如何使用直接 SQL 威胁事件清除数据的详细说明:
清除服务器任务日志
如果您需要从以下表格中删除数据,此解决方案将适用:
- OrionSchedulerTaskLog
- OrionSchedulerTaskLogDetail
- EPOCoreLogMessage
- EPORepositoryLogMessage
清除服务器任务日志指定规则前的所有时间范围:
- 打开 SQL Server Management Studio。
- 打开查询窗口,然后选择 ePO 数据库。
- 将该查询粘贴到查询窗口:
exec SP_Task_PurgeTaskLogOlderThan 'mm-dd-yyyyy';
以单引号更新查询的部分。 将其替换为您清除这些条目服务器任务日志的日期。
示例: 如果您要清除 2020 年 5 服务器任务日志 5 月 1 日之后的所有事件记录,查询将如下所示:
exec SP_Task_PurgeTaskLogOlderThan '05-01-2020';
- 要运行查询,请单击 执行 或按 F5。
注意:如果要清除大量数据,完成此查询需要几个小时的时间。
清除审核日志
此解决方案适用于以下情况:
OrionAuditLog 表。
要清除服务器任务日志指定数据库的条目,时间范围:
- 打开 SQL Server Management Studio。
- 打开查询窗口,然后选择 ePO 数据库。
- 将该查询粘贴到查询窗口:
declare @PurgeOlderThanDays int = ##;
--*****Do not edit below this line*****
declare @BatchSize int = 4900, @BatchDelaySeconds int = 3, @RowCount int;
set @RowCount = @BatchSize;
while (@RowCount = @BatchSize) begin
begin transaction;
delete top(@BatchSize) from OrionAuditLog
where EndTime < GetDate() - @PurgeOlderThanDays;
set @RowCount = @@ROWCOUNT;
commit transaction;
if (@RowCount = @BatchSize) waitfor delay @BatchDelaySeconds;
end
go
- 取代##在脚本的第一行中,保留这些审核日志天数。
例如,如果您要清除所有超过 90 审核日志的所有系统条目,则第一行如下所示:
declare @PurgeOlderThanDays int = 90;
- 要运行查询,请单击 执行 或按 F5。
注意:如果要清除大量数据,完成此查询需要几个小时的时间。
清除产品事件
如果您需要从以下表格中删除数据,此解决方案将适用:
- EPOProductEventsMT
- EPEEventParameters
要清除超过指定规则的产品事件,时间范围:
- 打开 SQL Server Management Studio。
- 打开查询窗口,然后选择 ePO 数据库。
- 将该查询粘贴到查询窗口:
declare @PurgeOlderThanDays int = ##;
-- DO NOT EDIT BELOW THIS LINE
declare @BatchSize int = 4900, @BatchDelaySeconds int = 3, @rowcount int = 1;
while (@rowcount > 0)
begin
begin transaction;
delete top(@BatchSize) from EPOProductEventsMT
where ReceivedUTC < GetDate() - @PurgeOlderThanDays;
set @rowcount = @@ROWCOUNT;
commit transaction;
If @rowcount > 0 waitfor delay @BatchDelaySeconds;
end go
- 要表示要保留产品事件的天数,请替代##在脚本的第一行中。
例如,如果要清除超过 90 天的新产品事件,则第一行如下所示:
declare @PurgeOlderThanDays int = 90;
- 要运行查询,请单击执行或按F5.
注意:如果要清除大量数据,完成此查询需要几个小时的时间。
缩减数据库
重要:清除数据时,实际上不会减少磁盘上的数据库大小。 要减小大小,您需要针对数据库运行 shrink 命令。 通常,无需在 ePO 数据库上运行缩减操作。 在继续操作之前,请考虑以下事项:
- 建议不要或需要缩减 ePO 数据库,ePO 才能运行。
- 缩减数据库文件(.MDF)和 (.NDF)可以增加索引碎片,使查询运行缓慢。
- 在您缩减数据库文件之后,如果需要扩展数据库以容纳新数据,则系统SQL Server锁定文件。 如果应用程序在插入新数据时使用了数据库,则会导致性能问题。
如果:
- 您的数据库增长异常严重,原因自纠正之后已更正。
以及
- 您需要执行一次缩减操作,将数据库恢复为正常大小。
- 使用 SQLServer Management Studio打开查询窗口,然后选择要缩减的数据库。
注意:大多数表都位于主要 ePO 数据库中。 但在 ePO 中5.10, ePOEvents 表(仅)包含在事件数据库中。
- 将以下 SQL 语句粘贴到查询窗口:
警告: 运行命令时,SQL 事务日志 (.ldf) 文件可以增长至数据库大小的 5 倍。 请确保有足够的可用磁盘空间,然后再使用此命令。
dbcc shrinkdatabase ('ePO_DatabaseName')
go
- 点击执行或按F5.