Blog ' da Ara

Loading

27 Ağustos 2011

ORACLE DATABASE MAINTENANCE (DATABASE BAKIMI)

                        
                Oracle Veritabanı yönetmek süreklilik açısından maintanence yani bakım işlemlerini dikkatli yürütmekle olur. Çünkü hali hazırda çalışan bir veritabanının maintenance raporlarından performansını yada aldığı hataları izleyerek çözümler geliştirebilir yada önlemler alabilirsiniz.Şekil 1 i incelediğimizde bir oracle database maintenance işlemlerini sistematize olarak görmüş oluruz.
Şekil 1 : Oracle Database Maintenance (Bakım)
                Proaktif Database Maintenance şekildede görüldüğü üzere AWR raporlarından ve otomatik işlerden meydana gelir.AWR raporları her oracle db de mevcut olan repository deki bilgilerden alınmış, tüm istatistik bilgilerini, yük bilgisi gibi bilgilerin tutulduğu raporlardır.Otomatik işlerde database rutin backup, optinmizer istatistiklerinni refresh edilmesi, database health check denilen kontrollerdir.

 
                Reaktif Database Maintenance is Oracle veritabanı otomatik joblarla çözülemeyen problemler yada admin in müdahale etmesi gereken işlerde server tarafınad alert denilen hatalar üretir. Konu ile ilgili tavsiyelerde advisorlerden bulunabilir.
                Bu makalenin faydalı olması için sık kullanacağımız kısaltma ve kelimeler hakkında bilgi yazalım;
                AWR (Automatic Workload Repository):Problemlerin tespiti ve çzöümü için gerekli istatistiksel bilgilerin, proces bilgilerinin, aktif session bilgilerinin ve performans istatistiklerinin tutulduğu repository veritabanıdır.
                AWR Snapshots : Database istatistikleri ve metrik ölçümleri içerir.Ayrıca uygulama, işletim sistemi ve diğer ölçümler de AWR Snashotlarda bulabilriz.
                Metric: Kümülatif ölçümlerin değişim miktarıdır.
                Oracle Optmizer
                Optimizer oracle veritabanının bir parçasıdır ve sql querylerin execution planlarını istatistiklerden faydalanarak belirler.Yani optimizer execution plan çıkarırken hata yapmaması için schema, CPU, I/O gibi istatistiklerin güncel olması gerekir.Ayrıca Optimizer execution planını çıkarırıken where clausedeki filtreler ve sql query içine iliştirilmiş hintlerden de etkilenir.Execution plan için Enterprise Manager üzerinde EXPLAIN plan yada AUTOTRACE Alarak execution plan görebileceğiniz gibi üçüncü party toad gibi toollardada execution plan izleyebilrsiniz.
                Optimizer istatistikleri  tablolara insert, update, delete yapıldığında değişir.Bu istatistikler bir maintenance job tarafından default olarak toplanır.
                İstatistik toplama işlemini DBMS_STATS paketi ile yapabileceğiniz gibi Enterprise Manager üzerinde server tabında Query optimizer altında manage optimizer istatistik tabında yapabiliriz.
Aşğıdaki şekilde em (enterprise manager) üzerinde tablo istatistiği alınmaktadır.
Şekil 2: Tablo istatistiklerini toplama              
EM üzerinde yapılan işlemde ki tablo istatistikleri aşağıdaki query ilede elde edilebilir..
BEGIN
   DBMS_STATS.gather_table_stats (
      ownname            => 'schema_name',
      tabname            => 'table_name',
      estimate_percent   => DBMS_STATS.AUTO_SAMPLE_SIZE,
      cascade            => DBMS_STATS.AUTO_CASCADE,
      degree             => NULL,
      no_invalidate      => DBMS_STATS.AUTO_INVALIDATE,
      granularity        => 'AUTO',
      method_opt         => 'FOR ALL COLUMNS SIZE AUTO'
   );
END;
veya
BEGIN
   DBMS_STATS.gather_table_stats (
      ownname            => 'schema_name',
      tabname            => 'table_name'
   );
END;


İstatistik Hesaplama Parametreleri
                İstatistik toplarken DBMS_STATS.GATHER_*_STATS prosedürü çalıştırılır.Bu prosedür çalıştırılırken bir çok parametre değeri vardır ancak bazen sadece şema ismi bile giresk o şem için istatistikleri toplyacaktır.Diğer parametreler de default değerlerini alacaktır.İşte bu parametrelerin default değerlerini set etmek için de DBMS_STATS.SET_*_PREFS prosedürü kullanılabilir.Burada set edebileceğimiz parametreler nedir şimdi bunları inceleyelim;
·         cascade : Index istatistikleri tablo istatistiklerinin bir parçası olarak toplanacak mı?
·         degree : Istatistik Toplanırken paralellik belirlemdir. Bu cpu sayısına göre değişir ve daha yükse paralellikte daha hızlı istatistik toplanır.
·         publish : İstatistikler data dictionary gibi gerekli yerlerde kullanılacak şekilde güncellensin mi?
·         stale_percent :Stale stats olan objelerin istatistiğini toplarken bir threshold set edilebilir.
·         increamental :Partition yapısındaki tablolarda global istatistiklerin toplanmasını sağlar.
·         method_opt :kolon istatistiklerini toplarken kolon ve histogram parametrelerinin set eder.
·         granularity :ALL set ederek tüm tablo partition ve subpartitionları düzeyinde istatistik toplanmış olur. Bu ayar sadece partition yapısındaki objeler için geçerlidir.
·         no_invalidate : Cursorlerin valide edilip edilmemesi için set edilir.
·         estimate_percent : Tablodaki rowların yüzdesidir.Bu parametre ile % nekadarlık veri istatistik oluşturulurken örnek olarak kullanılacak set edilir.
Bu parametreleri default şekillerine set etmek için DBMS_STATS.RESET_PARAM_DEFAULTS prosedürü çalıştırılabilir.
STATISTICS_LEVEL initialization Parametresi
                Statistics_level parametresi pfile yada spfile içinde düzenelenen init parametrelerinen biridir.Bu parametre maintance taskleri kapsyana hatta bazı advisor (Sql tuning Advisor) ları dahi etkileyen istatistiklerin toplanma düzeyini belirler.Statistics_level parametresi için aşağıdaki değerler kullanılabilir.
·         BASIC: AWR istatisklerinin ve metriklerinin hesaplanması engellenmiş olur.Bununla birlikte otomatik optimizer istatistikleri de iptal edilmiş ve aynı zamanda advisor toollar ve alertler tarafından çalıştırılan rutin görevler de iptal edilmiş olur.
·         TYPICAL :Database yönetimi için gerekli olan tüm bozul yada invalid istatistiklerin yeniden hesaplanmasını sağlar.
·         ALL:Tüm istatistikleri yeniden toplanmasını sağlar.
                Statistics_level parametresi için default value TYPICAL dir, zaten oracle bu değerde tutması tavsiye eder.
Automatica Workload Repository (AWR)
                Awr performasn bilgilerinin tutulduğu, her 60 dk. da bir alınıp 8 gün boyunca korunan db snapshotlarına sahip bir çeşit veri gurubudur.Şekil 3 de awr şekil sel olarak gösterilmiştir.
Şekil3: Autormatic Workload Repository              
                Oracle awr bilgilerinden yararlanarak problem lerin tespit edilmesini ve çözüm yöntemlerinin geliştirilmesini sağlar.Dba 'ler için awr veriatabanının monitor edileceği ve problemlerin henuz başlangıç düzeyde iken tespit edilip çözülebileceği bir tool dur.Her 60 dk da bir SGA dan alınan database snapshut ları awr içerisine depolanır.Awr bilgileri MMON (Memory Monitor bir background process dir) tarafından diske yazılır.Awr bilgileri SYSAUX tablespace de ve SYSMAN şemasında tutulan tablolardan meydan gelir.
                Bu tablolara direk erişim mümkün değildir.AWR ile çalışmak için Enterprise manager kullanılmalı yada DBMS_WORKLOAD_REPOSITORY paketinden yaralanılmalıdır.
                AWR yapısal olarak iki kısımdan olurşur.Memroy de tutulan performans viewlar (v$ viewlar) ve 60 dk da bir alınan metric istatistiklerdir.
                AWR raporları belli bir period arsında gözlemlenebilir.Bunun için aşağıdaki prosedür kullanılabilir.
                dbms_workload_repository.create_baseline (
start_snap_id in number,
end_snap_id in number,
baseline_name varchar2
);
                Burada snap_id uniq bir değerdir ve snopshot data setlerin herbirinin bir snap_id si vardır.Snap_id leri enterprise managerda bulabileceğimiz gibi DBA_HIST_SNAPSHOT tablosundanda edinebiliriz.
                Aşağıdakine benzer bir sql ihtiyacımız olan snap_id değerlerini bize verecektir.
                  SELECT   snap_id, begin_interval_time, end_interval_time
    FROM   dba_hist_snapshot snp
  ORDER BY   SNP.BEGIN_INTERVAL_TIME DESC
               
                Enterprise managerda ise server tabında statistic management bölümünde Automatica Workload Repository sekmesinde awr raporları alabilir, awr baselinelar oluşturabilirsiniz. Şekil 4 de awr baseline simgelenmiştir.
Şekil 4: awr baseline   
                 Yine aynı sekmede awr ayarlarını değiştirebilirsiniz.Bu ayarlar arasında
·         Retention period :Awr snapshotların tutulduğu geçmişe dönük gün sayısıdır.DEfault değer 8 gündür.
·         Collection interval: Snapshut için gerekli istatistiklerin toplandığı zaman aralığıdır.DEfault 60 dk. dir.
·         Collection level : İstatistik level bölümünde anlatmıştık.Burada typical default değerdir ve oracle bu şekilde kalmasını tavsiye eder.Zaten sıradışı durumlar dışında değiştirmeyi düşünmeyiz.
Şekil 5 örnek bir awr rapordur.
Şekil 5: awr rapor örneği
                Automatic Database Diagnostic Monitor (ADDM)
Şekil 6 : Automatic Database Diagnostic Monitor (ADDM)
            Addm her awr snapshot alındıktan sonra çalışır, instance monitor eder ve bir çok önemli problemi yada performance bottlenack olabilecek sorunları önceden tespit edebilememizi sağlar.Şekil 6 da görüldüğü üzere awr snapshotları yorumlayan addm kestirimlerini yine awr içine depolar.Aşağıda addm ile tespit edilebilen problemler listelenmiştir.
·         Cpu da meydana gelen anormal yoğunluk,
·         Zayıf oracle ağ bağlantısı,
·         Lock Karmaşaları,
·         Input output capcitesi,
·         Instance memory yetersizlikleri,
·         Maliyeti yüksek sql, pl/sql, java programlar,
·         Maliyetli checkpointler ve sebepleri , (small log files)
                Ayrıca enterprise manager üzerinde addm tarafından tespit edilen çzöümlere yine addm tarfından tavsiyeler sunulmaktadır.EM üzerinde addm ile çalışmak için performans ekranında view addm şeklinde yada anlık rund ADDM butonu ile de devam edebilirsiniz.Aşağıdaki şekilde görsel olarak bulnmanıza yardımcı olması için printscreen eklenmiştir.
 Şekil7 : View addm
                Addm tavsiyeleri kategoriler halinde sunulmaktadır.Bunlar;
·         Hardware changes: Cpu eklemeli yada i/o hardware configurasyonu değiştirilmelidir.
·         Database Configuration:İnit parametrelerinde ayarlama gerekmektedir.
·         Schema Changes:Yapısal tablo yada index değişimleri yada Automatic segment space management (ASSM).
·         Application Changes:Sequenceler için cache opsiyonu kullanılmalı yada , sql iafadeler bind değer içermelidir.
·         Using other Advisors:Maliyeti yüksek sqller için Sql tuning advisor çalıştırma yada güncel objeler için segment advisor çalıştırma gibi....
                Advisory Framwork
                Aşağıdaki şekilde kullanılabilecek advisor tool lar mevcuttur.Bu tool'lar bize otomatik analiz yaparak ; kaynak kullanımında, performans darboğazlarında, yada karşımıza çıkabilecek diğer konularda, sorunun tespitinde yada çözümünde yardımcı olmaktadır.
                
Şekil 8 : Advisory Framework                   
                Advisor tool'lar workload repositoryden beslenirler.Şekilde belirtilenler haricinde Data Recovery advisor ve sql repair advisor 'da  vardır.Enterprise Manager üzerinde related link bölümünde advisor central linkine tıkladığımızda yoğun olarak kullanılan advisor ları görebiliriz.Şimdi advisor toolar hakkında bilgi verelim;
                ADDM:Yukarıda addm hakkında detaylıca açıklama daha önce yapmıştık ancak bilinmesi gerekirki addm 'de bir advisory tool'dur.
                Memory Advisor:Memory advisor ile database instance tarafından ihityaç duyulan ve öte yandan shaip olduğumuz memory hakkında bilgileri görebilir, tavsiyeler alabilir ayrıca sga ve pga tablarında kullanım bilgilerine ulaşabiliriz.şekil 9 da memory advisor ile ilgili bir print screen görebilirsiniz.
Şekil 9 : Memory Advisor  
                Mean Time To Recover Advisor: MTTR kullanarak herhangi bir instance crash sonrası  recover için gereken zmaanı set edebiliriz.Ayrıca instance recovery ve flash recovery ile ilgili bilgilerede erişebiliriz.
 Şekil 10 : Mean Time To Recover Advisor   
                Segment Advisor:Segemnt advisor obje düzeyinde yada tablespace düzeyinde çalıştırılabilir ve objelerin kapladığı alanı analiz ederek etkili segment kullanımı için tavsiye sunarlar.Şekil 11 segment advisor ile ilgilidir.
Şekil 11 : Segment Advisor
                Sql Advisors:Bu grupdaki toollar ;Sql access advisor, Sql tuning advisor ve sql repair advisor olmak üzere üç adettir. Acces advisor ile sql ifadenin objelere erişim modelinde analiz ler yapılarak, index, partition , materialized view gibi tavsiyeler sunulur sunulur sql acces path ler tune edilmeye çalışılır.Tuning Advisor ile sql query ler analiz edilerek performans artırıcı tavsiyeler elde edilebilir.Repair Advisor ile de eğer bir query nin çalışması fail olmuşsa, query repair edilerek fail olma sebebi araştırılır ve bir sonraki çalışmasında farklı bir plan kullanması sağlanabilr.
Şekil 12 : Sql Advisors
                Undo Management Advisor: Undo advisor ve undo data yönetimi ile ilgili geniş biligiyi oracle undo data yönetimi yazımızda bulabilirsiniz.
                Data Recovery Advisor:Recover advisor data crashlerini tespit etip çözüm tavsiyeleri sunar.Ayrıca otomatik data repiar ve mean time to recover süreside azaltılabilirnir.
Şekil 13: Data Recovery Advisors
                Eğer Advisor paketlerini komut satırından yada toad gibi 3. party bir tool içerisinde komut ile çağırmak istiyorsak DBMS_ADVISOR paketini kullanabiliriz.Bu paket tüm advisor tooları için kullanılabilir.Bu pakete ait prosedürler aşağıdaki tabloada verilmiştir.
DBMS_ADVISOR.
Açıklama
CREATE_TASK
Repository deki advisor tasklarından birinden oluşturur
DELETE_TASK
Daha önce oluşturulmuş task'ı siler
EXECUTE_TASK
Oluşturulmuş bir taskı çalıştırır.
INTERRUPT_TASK
Çalışmakta olan taskı durdurmak için kullanılır.
GET_TASK_REPORT
Belirtilen task için rapor oluşturur.
RESUME_TASK
İnterrupt edilen taskı çalıştırmaya devam etmek için kulalnılır.
UPDATE_TASK_ATTRIBUTES
Task bilgilerini günceller.
SET_TASK_PARAMETER
Task paramtereleri ayarlamak için kullanılır.
MARK_RECOMMENDATION
Sunulan Tavsiyeleri accepted, rejected yada ignored etiket uygular.
GET_TASK_SCRIPT
Accept edilen tavsiyelerin scriptlerini oluşturur.

                Bu arada genel olarak kullanılabilecek prosedürleri yazıp açıkladık.Daha detaylı bilgi almak ve kullanım örneklerini incelemek için dbms_advisor oracle documentation linkini ziyaret edebilirsiniz.
                Automated Maintenance Task
                Otomatik olarak database instance tarafından çalıştırıklan tasklar vardır.Bunları server tabı altında oracle Scheduler listesinde ki automated maintenance task linkine tıklayarak görebilir, hatta bu taskları configure edebilirsiniz.
                
Şekil 14 :Automated Maintenance Tasks   
                Server-Generated Alerts
                Alertler database tarafında beklenmeyen bir hata yada durum sözkonusu olduğunda oracle tarafından üretilir ve opsiyonel olarak dba' ya mail de atılır.Alertler 60 civarındaki metric ölçümleri takip eder ve takip ederken bir daha önceden belirlenmiş yada default olarak atanan bir threshold değeri eğer aşılmışsa üretilirler.
                Alertlerin üretildiği metrik ölçümleri ve threshold değerlerini EM üzerinde related links bölümünde Metrics and Policy settings kısmında ulaşabilirsiniz.
                Alertlerle birlikte uyarı almak istiyorsak eğer Yine EM üzerinde preferences tabında Notification sekmesinde ayarlama yapabiliriz.Ayrıca oluşturduğumuz yeni alert için mail atmasını istiyorsak aynı sekmede email opsiyonunu enable edebilriiz.Uyarı emaillerinin gönderileceği kişileri yada gurupları da yine preferences tabında general sekmesinde belirleyebilriz.
                
 Şekil 15:Enterprise MAnager Preferences Tab
                Ayrıca alertler ile ilgili bilgileri DBA_OUTSTANDING_ALERTS view dana öğrenebiliriz eğer bir alert clear edildi ise  DBA_ALERT_HISTORY view'ına taşınır.
                                                                     Özcan YILDIRIM

1 yorum:

  1. Makale yazması zor yorum yapması kolay ama çok karmaşık geldi.

    YanıtlaSil

"Sorularınız ve Eleştirileriniz Değerlidir"