">

TKPROF

TKPROF

Merhaba Arkadaşlar,

Bu yazımda size tkprof'u anlatmaya ve örneklendirmeye çalışacağım.

tkprof oracle DBAler için çok öemli bir araç olabiliyor, çünkü var olan sessionada veya başka bir sessionda yapılan bir işin istatistiklerini, ora hatalarını, hangi bind veriableların kullanıldığı,sql planları ... gibi bir çaok özelliği göstermektedir.

İlk olarak aynı sessionda trace dosyası nasıl oluşturuur ve tkprof ile okunabilir hale nasıl getiriliri yaplım.

  •    Sql trace'i açmak için aşağıdaki sql çalıştırılır ve .trc uzantılı dosya hangi isim ile olacak ise onu belirtiriz.

     ALTER SESSION SET sql_trace = true;
     ALTER SESSION SET tracefile_identifier = engin;

  •    Trace edilecek script veya kod bulunduğunuz sessionda çalıştırılır. (burdaki scrip sizin çalıştıracağınız script olmalı yani neyi trace etmek istiyorsanız.)


     EXEC hr.populate_sql_trace_test(p_loops => 5);

  •    Daha sonra trace kapatılır.


     ALTER SESSION SET sql_trace = false;

  •    Aşağıdaki sql'in sonucundaki dizine gidilir ve trace dosyamız bulunur ismi 5.maddedeki kırmızı ile belirtilen yere yazılır.


     select t.VALUE from v$parameter t where t.NAME like '%user_dump%';

  •    Daha sonra aşağıdaki komut ile trc dosyası okunabilir bir txt dosyası haline getirilir.explane kısmına şemanızın kullanıcı adı ve şifresini yazarız.


     tkprof orcl_ora_25287_ENGİN.trc engintrace.txt explain=hr/hr table=sys.plan_table sys=no waits=yes

  •    Engintrace.txt isimli dosyayı açarak incelemelerimize başlarız.

     vi engintrace.txt

Peki farklı bir şemanın sessionu trace etmek için ne yaparız?

  •    Hangi userdaki hangi sessionu trace edeceksek onu aşağıdaki sql ile belirleriz.burda HR şemasındaki bir sessionu izleyeceğimiz için username HR oldu.


     select t.sid, t.serial#,t.USERNAME,t.* from sys.v_$session t where t.USERNAME = 'HR';

  •    Time istatistiklerini açarız ve trace edeceğimiz sesionun trace'ini başlatırız.


     ALTER SYSTEM SET timed_statistics = true;
     execute dbms_system.set_sql_trace_in_session(sid, serial#, true); 

  •    Yapılacak işleri, script veya kodumuzu çalıştırır ve trace'i kapatırız.


     execute dbms_system.set_sql_trace_in_session(sid,serial#, false);

  •    Aşağıdaki sql in sonucundaki dizine gidilir.


     select t.VALUE from v$parameter t where t.NAME like '%user_dump%';

  •    Dizinde yukarda tracefile_identifier ismini set ettiğimiz isimde bir .trc uzantılı dosya göreceksiniz. bu dosyayı aşağıdaki komut ile txt dosyasına çevirip incelemelerimizi yapabiliriz.

     tkprof orcl_ora_24748_ENGYLMZ.trc engoracle.txt explain=hr/hr table=sys.plan_table sys=no waits=yes

tkprof ile ilgili anlatacaklarım bukadar bir sonraki yazımda görüşmek üzere.

Umarım faydalı olmuştur...

Yorumlar

  1. Teşekkürler, daha dikkatli olacağım, önerin için çok teşekkür ederim abi.

  2. Rıdvan Çiçek

    Siten hayırlı uğurlu olsun, yalnız yazım hataları, kelime hataları çok fazla, bunlara da dikkat edebilir misin? teşekkürler.

Yorum Yapın