Perşembe, 24 Haziran 2010 00:00

Data Dictionary İstatistiğinin Alınması

Yazan&Gönderen  Yusuf Arslan
Bu Öğeyi Derecelendir
(4 Oylar)
Bu yazımda Oracle Database 10g ‘yle birlikte kullanıma sununlan cost-based optimizer (COB) hakkında işinize yarayacak bazı bilgiler vermek istiyorum. Cost-based optimizer uygulamasının asli görevi SYS ve SYSTEM şemasında yer alan bilgilerin (Data Dictionary) istatistiğinin tutulmasını sağlamaktır. Data dictionary (aynı zamanda metadata  repository olarakta isimlendirilir) ‘nin içeriğini bilmeyenler için kısaca açıklamak gerekirse, bu alan sadece okunabilir (read-only) tablolardan oluşan ve veritabanınız hakkındaki tüm “tanım” bilgilerin tutulduğu bölümdür. Veritabanınızdaki kullanıcıların oluşturduğu tabloların kayıtları, kullanıcı izinleri, sinonimler, viewlar vs tüm tanımla burada tutulur. Çoğunuzunda tahmin edebileceği gibi data dictionary datası SYSTEM tablespace ‘nde saklanır. O nedenle SYSTEM tablespace ‘nin zarar görmesi durumunda veritabanı işlevselliğinin yitirir. Bu konuda hakkında daha detaylı bilgiyi buradanalabilirsiniz.
Data dictionary ‘nin istatistiğinin alınması konusuna geri dönersek eğer, bu alanda yapılacak olan sorgulamaların hızlı olması en az kullanıcı tablolarının istatistiğinin alınması kadar önemlidir. Örnek olarak, veritabanınızda kullanmakta olduğunuz bir tabloda yüzlerce partition olduğunu varsayalım. Bu tabloya bir select sorgusu gönderildiğinde sonucunu almak istediğiniz datanın bulunduğu partition ‘ın hangisi olduğu ve bu partition ‘ın ne kadar kısa sürede yerinin tespit edilmesi data dictionary istatistiğinin güncel olmasına bağlıdır.
Data dictionary ‘nin istatistiğini iki farklı metodla alabiliriz. Aşağıdaki PL/SQL kodlarını kullanarak veya direkt Sqlplus  ‘dan begin/end satırlarını silip başına “exec” ibaresini ekleyerek çalıştırabilirsiniz. İstatistik alırken dikkat etmeniz gereken konu istatistik sonucunda bir histogram oluşturulmasıdır. Bu histogram ‘ın oluşturulması için komut içersinde mutlaka “Gather Auto” opsiyonu verilmelidir.
begin
dbms_stats.gather_dictionary_stats(options=> 'GATHER AUTO');
end;
veya
begin
dbms_stats.gather_schema_stats (ownname=> 'SYS' ,options=> 'GATHER AUTO');
end;
Konuyu sonuca bağlarsak, data dictionary ve user tablolarına ait datanın haftatada en az bir defa istatistiğinin alınması siz hiç müdahele etmenseniz dahi otomatik olarak çalışan Oracle advisor (Memory Advisors, SQL Advisors, Segment Advisor) uygulamalarının  daha akıllıca kararlar vermesini sağlayacaktır.
Son Düzenleme Çarşamba, 27 Ekim 2010 09:57
Yusuf Arslan

Yusuf Arslan

Oracle Open Source

1985 Tokat/Reşadiye doğumluyum.İlk-orta-lise hayatını Amasya/Suluova ilçesinde geçirdim.Sakarya Üniversitesi Bilgisayar Mühendisliği bölümünü bitirdikten sonra kariyerime Oracle,SAP alanlarında danışmanlık vermek üzere devam etmekteyim. Kullandığım,bildiğim teknolojiler ve diller; SAP BO Oracle BI Applications Oracle Data Mining Oracle BI Reports(http://www.iski.gov.tr/web/statik.aspx?KID=1000717) Oracle Data Integrator Oracle BI Publisher(XML Publisher) Oracle Database 10g Oracle Mapviewer PL/SQL,Java,Oracle JDeveloper,Oracle Forms-Reports,C# Data warehouse process optimization Database system implementation Using encoding for security systems Software development, test and deployment Presentation and communication skills Bu adreslerden de bana ulaşabilirsiniz, [email protected] https://datawarehouse.gen.tr/ http://www.arslanyusuf.blogspot.com/ http://yusufarslaneng.blogspot.com/ http://twitter.com/yusars http://tr.linkedin.com/pub/yusuf-arslan/27/35b/57b

Website: arslanyusuf.blogspot.com/ E-posta: Bu e-Posta adresi istek dışı postalardan korunmaktadır, görüntülüyebilmek için JavaScript etkinleştirilmelidir

En Son Yusuf Arslan

Başa Dön