Operations Manager Data Warehouse için Retention zamanlarının ayarlanması

Merhaba,

Bugün en çok sorulan sorulardan birine çevap vermeye çalışacağım. Operations Manager 2007 Data Warehouse yada raporlama için olan bilgilerin sürelerini veya diğer adı ile retention zamanlarını nasıl değiştirebiliriz.

Önce neden böyle bir gereklilik var ona bir açıklık getirelim.Operations Manager 2007 yapısı itibari ile çok veri toplayan bir yapıya sahip. Performance, event ve state dataları çok fazla yük oluşturmakta. Özellikle Data Warehouse 400 günlük default olarak bilgi tuttuğunu düşünürsek sürekli büyüyen bir yapıya sahip. Geçmişe dönük raporlama için iyi bir özellik olduğunu düşünürsek diğer taraftan yer açısında ve raporların üretilmesi açısından sıkıntı yaratabilir. Böyle bir durumda öncelikle ne kadarlık bir bilgi işimize yarar diye karar vermek lazım. Fazla data=çok disk alanı+performans+zaman diye düşünebiliriz. DW retention zamanlarını, Operations Manager DB grooming ve aggregation değerlerinde olduğu gibi konsoldan değiştiremiyoruz. Konu ile ilgili toolar mevcut, mesela dwdatarp.exe gibi https://blogs.technet.com/b/momteam/archive/2008/05/14/data-warehouse-data-retention-policy-dwdatarp-exe.aspx , ben ise size bu ayarları kaynağında nasıl yapabileceğimiz göstereceğim.

Lütfen Operations Manager Data Warehouse ‘un tutulduğu servera logon olalım ve Microsoft SQL Server Management Studio ‘yu açalım ve “New Query” kısmına tıklayıp bir yeni sorgu penceresi açalım.

image

Aşağıda sizler için hazırladığım sorguyu lütfen sorgu penceresicne kopyalayıp çalıştıralım.

USE OperationsManagerDW
SELECT ds.[DatasetId]
      ,ds.DatasetDefaultName
      ,AggregationType= CASE [AggregationTypeId]
                WHEN 0 THEN 'RAW'
                WHEN 10 THEN 'SUB HOURLY'
                WHEN 20 THEN 'HOURLY'
                WHEN 30 THEN 'DAILY'
        END
        ,[AggregationTypeId]
      ,[MaxDataAgeDays]
      ,[GroomingIntervalMinutes]
      ,[AggregationIntervalDurationMinutes]
      ,[AggregationStartDelayMinutes]
      ,[BuildAggregationStoredProcedureName]
      ,[DeleteAggregationStoredProcedureName]
      ,[GroomStoredProcedureName]
      ,[IndexOptimizationIntervalMinutes]
      ,[MaxRowsToGroom]
      ,[LastGroomingDateTime]
      ,[DataFileGroupName]
      ,[IndexFileGroupName]
      ,[StatisticsMaxAgeHours]
      ,[StatisticsUpdateSamplePercentage]
  FROM [OperationsManagerDW].[dbo].[StandardDatasetAggregation]sda
  INNER JOIN dbo.Dataset ds ON
  sda.DatasetId=ds.DatasetId

Bu sorgu size düzgün bir şekilde dataların tutulduğu gün sayısını verecektir. MaxDataAgeDays kolonunu dikkate almanız gerekmekte.

Dikkat ettiyseniz Aggregation tipine bağlı olarak datanın tutulduğu gün miktarı değişiklik göstermektedir. Kurumun ihtiyaçlarını göz önünde bulundurarak dikket ile karar vermeniz gerekmekte.

Sorgu bize gayet güzel bilgileri verdi ama şimdi ne olacak? Değişiklik yapabilmemiz için AggregationType, AggregationID ve MaxDataAgeDays kolonlarını dikkate almamız gerekmektedir.

image

Aşağıdaki sorgu bize bu değişikliği nasıl yapacağımız göstermekte.

UPDATE [OperationsManagerDW].[dbo].[StandardDatasetAggregation]

SET [MaxDataAgeDays] = <gün sayısı>

WHERE DatasetId='<GUID>' AND AggregationTypeId=<Type_id>

Bu durumu bir örnek ile pekiştirelim. Örneğin Performance datalarının günlerini Hourly ve Daily için yarı yarıya düşürmek isteyelim, bu durumda sorgularımız:

UPDATE [OperationsManagerDW].[dbo].[StandardDatasetAggregation]
   SET [MaxDataAgeDays] = '200'
WHERE DatasetId='6FACD154-6157-49F5-B050-5463ADB6D91A' AND AggregationTypeId='20'

UPDATE [OperationsManagerDW].[dbo].[StandardDatasetAggregation]
   SET [MaxDataAgeDays] = '200'
WHERE DatasetId='6FACD154-6157-49F5-B050-5463ADB6D91A' AND AggregationTypeId='30'

Şimdi oluşan sonuca bakalım,

image

Sonuç da da gördüğümüz gibi değerlerimiz 200 güne düştü.

Veritabanına yapılan müdahalelerde çok dikkatli olmamız gerektiği söylememe gerek yok :). Database konusunda bir tecrübeniz yok ise bilen biri ile yapmakta fayda var.

Gültekin