Ham
formattaki izleme dosyalarını okunabilir formata dönüştürmek için kullanılan en
yaygın araç olan TKPROF ne yazıkki bind değişkenlerini rapora ekleyememektedir.
Ayrıca TKPROF içinde aynı anda birden
fazla işlem tarafından kullanılan bloklar listelenmemektedir. Bu gibi
kısıtlamalar sebebiyle, TKPROF aracına alternatif olarak Oracle’ın ücretsiz bir aracı
olan “Trace Analyzer” aracı Oracle Metalink’ten indirilip kullanılabilir. Böylece,
aynı anda birden fazla işlem tarafından kullanılan ve kilite sebebiyet veren
segmentler ve ilgili sıcak bloklarda raporlandığı gibi, ilgili SQL komutlarının hash değerleri ve kullanılan farklı bind değerlerinin yaptığı
bekleme istatsitikleri ve yürütme planı bilgilerinide görme imkanına sahibiz.
“Trace
Analyzer” aracı ile tek bir ham izleme dosyası analiz edilebildiği gibi,
istenirse birden fazla ham izleme dosyasıda tek bir rapor gövdesinde
alınabilmektedir. Analiz işlemi sonunda elde edilen zip dosyada TKPROF raporu
yer aldığı gibi, çok kapsamlı bir HTML formatta raporda yer almaktadır.
Trace
Analyzer aracı ile izleme analizinin raporlanması işleminden önce aşağıdaki
adımların sırasıyla uygulanması gerekmektedir.
1. İlk aşamada; Trace
Analyzer aracının Oracle Metalink’ten indirilmesinden sonra SQL*Plus komut
satırından SYS ile oturum açıp TRCA aracı aşağıdaki gibi kurulmalıdır. Benim
trca dosyalarım C:\trca altında yer almaktadır.
SQL> @C:\trca\install\tacreate.sql
Kurulum esnasında bazı sorulara cevap
verilmelidir:
· Optional Connect
Identifier:
Bazı kısıtlamalı sistemlerde @<instance_adı> şeklinde belirtilir.
Opsiyoneldir. Eğer gerekli değilse boş bırakıp
enter tuşuna basın.
· TRCANLZR password: Trace Analyzer
aracını çalıştırmak için şifre. Opsiyoneldir.
· TRCANLZR default
tablespace:
Trace Analyzer kurulumunda gerekli olan tablo ve görünümlerin kurulacağı
varsayılan tablespace ismi. USERS tablespace varsayılandır.
· TRCANLZR Temporary
Tablespace:
Trace Analyzer çalışırken bilgilerin tutulacağı geçici tablespace. Varsayılan
olarak TEMP dir.
· Type of large objects
in TRCA repository:
TRCA ambarında büyük objelerin geçici veya kalıcı olarak tutulma seçeneği. T
olarak geçici olması tavsiye edilir.
2. Oturum bazlı
izlemenin etkinleştirilmesi gerekmektedir. İzleme dosyaları varsayılan olarak
udump dizini altında yer almaktadır ve izleme açıldığında çok sayıda izleme
dosyası oluşturulacağından, hangi dosyanın bizim izlemek istediğimiz kullanıcının
SQL işlemlerini içeren izleme dosyası olduğunun belirlenmesinde sıkıntı
olacağından, başlayacak olan izleme dosyasına bir IZLEME1 önekli bir “isim
tanımlayıcı” ekliyorum.
SQL> ALTER SESSION SET
tracefile_identifier='IZLEME1';
3. Ardından izlenmesini
istediğimiz oturumun SID ve SERIAL# değerleriyle birlikte bekleme ve bind
değişkenlerininde izleme dosyasında tutulmasını istediğimizden aşağıdaki izleme
komutunu devreye sokuyoruz. Örneğimde 10 numaralı SID ve serial numarası ise
115.
SQL>exec dbms_support.start_trace(sid=> 10,
serial#=>115, waits=>true,binds=>false);
NOT: İlgili kullanıcının hangi SID ve SERIAL#
değerine sahip olduğunu bulmak için aşağıdaki sorgu kullanılabilir.Aşağıda TEST
domainindeki UGUR adlı aktif durumdaki windows kullanıcısının SID ve SERIAL#
değerini buluyorum.
SQL>
SELECT OSUSER, SID, SERIAL#, USERNAME, STATUS
FROM v$SESSION where
UPPER(OSUSER) = 'TEST\UGUR’
AND status = 'ACTIVE';
4. SQL*Plus ekranından
SYS kullanıcısı ile oturum açıp aşağıdaki gibi Trace Analyzer aracı ile “nunicist_ora_656_IZLEME1.trc” adlı izleme
dosyasının analizini yapıyorum. Sonuç olarak zip uzantılı bir dosya
oluşturulacaktır.
SQL> @C:\trca\run\trcanlzr.sql nunicist_ora_656_IZLEME1.trc
Eğer birden fazla izleme dosyasının
analizinitek raporda yapmak istersek, bu durumda udump dizininde control_file.txt
adında bir text dosya oluşturup, analizinin yapılmasını istediğimiz tüm izleme
dosyalarının adlarını bu text dosya içine alta alta yazıyoruz. Bu durumda
aşağıdaki gibi çalıştırıldığında control_file.txt dosyası içindeki izleme
dosyaları TRCA tarafından okunur, analiz edilir ve tek bir rapor formatında
listelenir.
SQL> @C:\trca\run\trcanlzr.sql control_file.txt
Aşağıda Oracle 10.2.0.5 sürümü üzerinde “Trace Analyzer” aracı ile sekiz adet ham izleme dosyasının birleştirilip analiz edilerek elde edilen raporda yer alan kısımları ele alacağım.
Hem
recursive(özyinelemeli) hemde non-recursive işlemlerin genel anlamda
çözümleme(parse), çalıştırma(execute), satır alıp getirme(fetch)
istatistikleriyle birlikte genel bekleme istatistiki bilgileri yer almaktadır.
Aşağıda non-recursive ile ilgili bilgilerin olduğu snapshot yer almaktadır.
Bu
kısımların altında rapor kapsamında yer alan izleme dosyalarının(veya
dosyasının) içinde, %10 eşik değerini toplam cevap süresinde, işlem süresinde
ve CPU süresinde aşan SQL komutları sırasıyla
yer almaktadır. SQL Text kısmında ilgili SQL cümlesinin üzerine mouse
ile geldiğinize o SQL cümlesinin bütününü görebilmektesiniz.
“SQL Genealogy” kısmında rapor
kapsamındaki tüm SQL komutlarını çalıştırılma sayısı, recursive cevap süresi ve
bireysel cevap süresi gibi kriterlerde görebiliriz.
“SQL Self – Time,
Totals, Waits, Binds and Row Source Plan” bölümü altından hash değerlerine göre
SQL komutlarının bireysel olarak bekleme istatistikleri, aldıkları bind
değerleri ile ilgili bilgiler, satır kaynak planları yer almaktadır.
Aşağıdaki
gibi çalıştırılan SQL komutunun yürütme planı ve bekleme istatistikleri yer
alacaktır. Burada her bir WHERE şartında geçen kıyaslamaların hangi satır
kaynak işlemini yaptığı, indeks kullanıp kullanmadığı, Full Table Scan yapıp
yapmadığı görülebildiği gibi her bir satırın ne kadar kaynak tükettiği ve ne tür bekleme olayına sebebiyet verdiği
gözlemlenebilmektedir.
Bunun
ardından yer alan “Relevant Executions”
kısmında ise bu SQL komutunun benzer şekilde çalıştırıldığı farklı bind
değerleri ile ilgili genel liste yer almaktadır. Burada hangi bind değerinin ne
kadar SQL cevap süresine sahip olduğu, ne kadar sürede işlmein tamamlandığı ve
işlem süresince ne kadar CPU tükettiği gibi istatistiksel bilgiler yer
almaktadır.
“Rank” kolonundan hangi
bind değerinin ne kadar yanıt süresi verdiği yüzdesel görülmektedir. “Rank” kolonundaki değerlere
tıklandığında ise ilgili bind değerinin execute-fetch istatistiği, bekleme
bilgileri ve bind değişkenin veri tipleri, veri uzunluğu ve aldığı değerler
listelenmektedir.
Daha
sonraki kısımda ise izleme dosyasındaki işlemler tarafından kullanılan
segmentlerin I/O istatistik bilgileri yer almaktadır. Buradan hangi objenin
hangi I/O bekleme olayına sebebiyet verdiği görülebilmektedir. Tablo ve indekslerin hem obje bazımda hemde bağlı oldukları blok sayısı olarak
hangi bekleme olayına sebebiyet verdiği, ne kadar süre bekleme yaptığı gerek
toplam, gerekse ortalama bazda listelenmektedir.
Bunun
ardından ise en fazla dokunulan “sıcak bloklar" dosya numarası,segment ismi ve blok id leri ile birlikte ne kadar bekleme yaptığı ayrı ayrı listelenir.
Ardından
SQL işlemlerinde varsa alınan ORA hataları kodu, meydana gelme zamanı ve ilgili
SQL Text ile birlikte raporlanır, ayrıca birden fazla izleme dosyası trace
analyzer ile tek raporda alındıysa her bir izleme dosyasının işlem özet
bilgiside “Transaction Summary”
kısmında yer alır.
Trace Analzer aracı özet olarak; performans sorunu yaşanan uygulamalarda, gerek oturum bazlı, gerekse veritabanı bazlı yapılan izlemeler sonucu tüm SQL işlemlerinin hem bekleme istatistiklerini, hem çalıştırma planı bilgilerini ve hemde farklı bind değişkenlerinin performans değişimlerini ham izleme dosyaları içinden kolayca, profesyonelce ve detaylı analiz ederek oldukça geniş bakış açıları sunmakta ve oluşturulan zengin içerikli HTML raporu ile gerçek darboğazların tespitinde tüm Oracle DBA’lere oldukça faydalı olmaktadır. Diğer bir önemli özelliği ise Oracle tarafından müşterilerine ücretsiz olarak sunulmasıdır.
0 yorum:
Yorum Gönder