DW Grooming Issues
I have been noticing that my DW has been growing in size, more and more.
Today I took a look:
Dataset name Aggregation name Max Age Current Size, Kb
------------------------------ -------------------- ------- --------------------
Alert data set Raw data 365 117,344
( 0%)
Client Monitoring data set Raw data 30 0 ( 0%)
Client Monitoring data set Daily aggregations 365 32 ( 0%)
Configuration dataset Raw data 400 1,045,048 ( 2%)
Event data set Raw data 100 2,669,736 (
6%)
Performance data set Raw data 180 1,246,000 ( 3%)
Performance data set Hourly aggregations 60 20,403,184 ( 46%)
Performance data set Daily aggregations 180 1,152,096 ( 3%)
State data set Raw data 180 706,896
( 2%)
State data set Hourly aggregations 60 15,765,728 ( 35%)
State data set Daily aggregations 365 1,381,128 ( 3%)
Then, I noticed that I have really old perf.Hourly history in my DB (over 400 days) via one of the queries I found online. Then I tried running the stored procedure people mention: Exec standarddatasetgroom" with all the DataSetIDs I got from the StandardDatasetAggregation
table in the OperationsManagerDW DB. They all ran in under a second, and my database is still enormous.
I don't think grooming is happening at all, manually or automatically. What should I do?
Thanks,
Reuv
November 18th, 2010 5:38am
You can use dwdatarp.exe to change the grooming of the datawarehouse.It is available for download
HERE .
Kevin Holman also made a blog article about it, where he explains how to use this tool:
Understanding and modifying Data Warehouse retention and grooming
Certifications: MCSA 2003|MCSE 2003|MCTS(4*)| MCTIP:SA
Free Windows Admin Tool Kit Click here and download it now
November 18th, 2010 8:27am
The output generated above was using that tool, and I did change the threshholds. My point was that in spite of the configuration change, which before hand was already set to 360 and I lowered it to 180, it is still not deleting stale data.
November 18th, 2010 9:03am
The data warehouse DB is fully self maintaining. By the way how big is your datawarehouse and how many agents you have in total?
What does this query gives you:
select ds.datasetDefaultName AS 'Dataset Name', sda.AggregationTypeId AS 'Agg Type 0=raw, 20=Hourly, 30=Daily', sda.MaxDataAgeDays AS 'Retention Time in Days'
from dataset ds, StandardDatasetAggregation sda
WHERE ds.datasetid = sda.datasetid
ORDER by ds.datasetDefaultName
Certifications: MCSA 2003|MCSE 2003|MCTS(4*)| MCTIP:SA
Free Windows Admin Tool Kit Click here and download it now
November 18th, 2010 9:31am
This explains why you might find older data than your grooming settings, ESPECIALLY in very small databases like yours:
http://nocentdocent.wordpress.com/2009/02/18/scom-data-warehouse-grooming/
Kevin Holman
November 18th, 2010 6:42pm
Hi, I really apreciate your help. in my case mi operationsmanagerdw now has 100GB, but it usually was 35 +- 5GB. from a month it shows a farter growing. I follow all your post and procedures but i think that in this case i have a seriously problem with the
grooming procedures. this is te actual output from the dwdatarp.
Dataset name Aggregation name
Max Age Current Size, Kb
------------------------------ --------------------
------- --------------------
Alert data set Raw data
400 721,976 ( 1%)
Client Monitoring data set Raw data
30 0 ( 0%)
Client Monitoring data set Daily aggregations
400 32 ( 0%)
Configuration dataset Raw data
30 11,385,016 ( 18%)
Event data set Raw data
10 32,837,544 ( 51%)
Performance data set Raw data
15 1,378,816 ( 2%)
Performance data set Hourly aggregations
240 9,497,072 ( 15%)
Performance data set Daily aggregations
400 1,207,744 ( 2%)
State data set Raw data
180 285,952 ( 0%)
State data set Hourly aggregations
180 5,811,776 ( 9%)
State data set Daily aggregations
400 733,384 ( 1%)
And this one is how it was in last April 2012. This shows its normal behavior
D:\Tools\dwdatarp\x86>dwdatarp.exe -s Apolo03\SCOM -d OperationsManagerDW
Dataset name
Aggregation name Max Age
Current Size, Kb
------------------------------ --------------------
-------
--------------------
Alert data set
Raw data
400 507,504 ( 2%)
Client Monitoring data set Raw data
30
0 ( 0%)
Client Monitoring data set Daily aggregations
400
32 ( 0%)
Configuration dataset
Raw data
30 10,825,272 ( 34%)
Event data set
Raw data
7 3,918,184 ( 12%)
Performance data set
Raw data
30 2,468,592 ( 8%)
Performance data set
Hourly aggregations
100 7,677,768 ( 24%)
Performance data set
Daily aggregations 400
1,188,368 ( 4%)
State data set
Raw data
180 265,760 ( 1%)
State data set
Hourly aggregations
180 4,889,408 ( 15%)
State data set
Daily aggregations 400
563,352 ( 2%)
I tried to force the grooming by changing the max age, and also the frequency: using this sql:
USE OperationsManagerDW
UPDATE StandardDatasetAggregation
SET GroomingIntervalMinutes = 30
WHERE GroomStoredProcedureName = 'EventGroom'
USE OperationsManagerDW
UPDATE StandardDatasetAggregation
SET MaxRowsToGroom = 20000
WHERE GroomStoredProcedureName = 'EventGroom'
I'ven tried it for a week but still don't have any result.
Please HELP....
Thx in advance
Free Windows Admin Tool Kit Click here and download it now
July 18th, 2012 11:04am
Another important situation: the event data set shows data recorded "from the future", it shows its odest event date on 2010-07-22 23:43:53.000, and the newest event date on 2013-03-07 19:40:17.000, I also check how many records have from future
dates and it shows me 237204 recordds.
Im using this sql sentences:
USE OperationsManagerDW
select min(DateTime) AS [Oldest Event Date] from Event.vEvent
select max(DateTime) AS [Newest Event Date] from Event.vEvent
select min(DateTime) AS [Oldest Perf Date]from Perf.vPerfRaw
select max(DateTime) AS [Newest Perf Date]from Perf.vPerfRaw
select min(DWCreatedDateTime) AS [Oldest Alert Date] from Alert.vAlert
select max(DWCreatedDateTime) AS [Newest Alert Date] from Alert.vAlert
select count (*) from Event.vEvent
select count (*) from Event.vEvent where datetime > '2012-07-18'
select count (*) from Event.vEvent where datetime < '2012-06-18'
select count (*) from Event.vEvent where datetime < '2012-07-18' and datetime > '2012-06-18'
select count (*) from Event.vEvent where datetime > '2012-07-18'
select count (*) from Event.vEvent where datetime > '2013-01-01'
July 18th, 2012 11:14am