SQLT ve SQLHC Araçlarının Kullanımı

Report
SQL Tuning Uygulamaları:
SQLT ve SQLHC Araçlarının
Kullanımı
Bora YÜRET
Oracle Veritabanı Yöneticisi
T.C. Çalışma ve Sosyal
Güvenlik Bakanlığı
Sunum Konuları
• SQLT ile tanışma
• SQLXTRACT ve SQLTXECUTE metodları ile SQL
incelenmesi
• Test Ortamı Oluşturulması ve Test Senaryolarının
Çalıştırılması
• XPLORE metodu ile bir iyileştirme çalışması
• SQLHC Kullanımı
SQLTXPLAIN (SQLT) Nedir?
• SQLTXPLAIN (SQLT), Carlos Sierra tarafından
kodlanmış, problemli çalışan SQL’leri inceleme
aracıdır.
• Add-on (Metalink Doc ID 215187.1)
• Oracle 10g/11g/12c versiyonlarında çalışıyor.
• Linux / Unix / Windows ortamlarında çalışıyor.
• Single Instance, RAC, Exadata ortamlarında çalışıyor.
• Kurulumu ve kullanımı kolay
• Ücretsiz
SQLT Kullanım Faydaları
• Tek bir SQL için SQL Tuning teşhisi yapıyor.
• SQL için 100’ün üzerinde HC(Health Check)
gerçekleştiriyor ve sonuçlarını Observation olarak
raporluyor.
• Otomatik Test Case oluşturma.
• Ana faydası, SQL Tuning için gereken bilgi
toplama işlemlerini hızlandırması.
SQLT Nasıl Çalışır?
• SQL’i incelemek için 3 + 4 ana metod sağlıyor.
• Input olarak bir SQL sorgusu giriyor, output olarak
bir zip dosyası çıkıyor.
• Zip dosyasında bir HTML dosyası ve diğer dosyalar
var: AWR, ADDM, ASH, 10053, 10046, TKPROF, vb.
• SQL Tuning TC(Test Case)’leri otomatik oluşturup zip
dosyasına ekliyor.
• SQLT kendi şemalarına (2 adet) kuruluyor ve diğer
kullanıcılara kullanım hakkı rol üzerinden veriliyor.
SQLT Kurulumu
• My Oracle Support’da 215187.1 no’lu dökümana
gidiyoruz.
• sqlt.zip dosyasını indiriyoruz.
• Unzip ettikten sonra SYS olarak
sqlt/install/sqcreate.sql scriptini çalıştırıyoruz.
• Gerekli kurulum parametrelerini sağlıyoruz.
SQLT Kurulum Parametreleri
•
•
•
•
•
•
Opsiyonel Connect Identifier (Örn, @PROD)
SQLTXPLAIN kullanıcısı için şifre
Default Tablespace
Temporary Tablespace
SQLT için ana uygulama kullanıcısı
Oracle lisanslama bilgisi [ Tuning | Diagnostics |
None ]
SQLT Uninstall Etmek
• SYS olarak bağlanıp sqlt/install/sqdrop.sql
scriptini çalıştırıyoruz.
Demo
• SQLT kurulumunu gerçekleştirelim.
SQLT Ana Metodları
• Ana metodlardan istediğimizi seçip
kullanabiliriz. Input olarak SQL_ID ya da direk olarak SQL’i
sağlıyoruz.
• SQLT kullanmak isteyen kullanıcıya SQLT_USER_ROLE rolü verilmelidir.
- SQLT XTRACT
- SQLT XECUTE
- SQLT XTRXEC
- SQLT XPLAIN
- SQLT XTRSBY
- SQLT XPREXT
- SQLT XPREXC
SQLT Ana Metodları
Method
Script
Features
SQLT XTRACT
sqlt/run/sqltxtract.sql
Most common method
Inputs SQL_ID
SQL statement is not executed
SQLT XECUTE
sqlt/run/sqltxecute.sql
Inputs a script name which contains
ALTER SESSION commands (if applicable)
Binds declaration and assignment (if applicable)
SQL statement
Executes the SQL statement
SQLT XTRXEC
sqlt/run/sqltxtrxecsql
Combines XTRACT and XECUTE
Inputs SQL_ID
SQLT XPLAIN
sqlt/run/sqltxplain.sql
Inputs a file name which contains a SQL statement
What if SQL contains binds?
Leave them in place, OR Replace with literals of same data type
SQLT XTRSBY
sqlt/run/sqltxtrsby.sql
For read-only databases
Executes in Primary and connects into stand-by
Works like XTRACT
Inputs SQL_ID and DBLINK
Ana HTML Raporu İçerikleri (1/3)
•
•
•
•
•
•
Observations
SQL text
Parametreler
Cursor sharing
SQL Tuning Advisor (STA) report
Execution plans
Ana HTML Raporu İçerikleri(2/3)
•
•
•
•
•
•
Plan stability
Active Session History (ASH)
SQL performans metrikleri
SQL Monitor
Segment ve session istatistikleri
Tablolar
Ana HTML Raporu İçerikleri(3/3)
•
•
•
•
•
İndeksler
CBO istatistikleri
Objeler ve bağımlılıkları
Policy’ler
Metadata
HTML Raporu İncelenmesi
Demo
• SQLT XTRACT ve SQLT XECUTE metodlarını aşağıdaki
sorguyla çalıştırarak oluşan çıktıyı inceleyelim.
select country_name, sum(AMOUNT_SOLD)
from sh.sales s, sh.customers c, sh.countries co
where s.cust_id=c.cust_id
and co.country_id=c.country_id
and country_name in (
'Ireland','Denmark','Poland','United Kingdom',
'Germany','France','Spain','The Netherlands','Italy')
group by country_name order by sum(AMOUNT_SOLD);
Test Ortamı Oluşturulması
• Genellikle problemli SQL ile ilgili iyileştirme
çalışmalarımızı çalışan diğer SQL’leri etkilememek
için production veritabanı üzerinde yapmak
istemeyiz.
• Optimizer parametrelerini değiştirme, SQL
hintleri, indeks ekleme/çıkarma gibi çalışmaları
bu kapsamda sayabiliriz.
Test Ortamı Oluşturulması
• Bu durumda production veritabanıyla aynı
objelere, aynı obje istatistiklerine, hatta aynı
sistem istatistiklerine sahip bir test veritabanına
ihtiyacımız olacak.
• Bu objeleri taşıma, obje istatistiklerini taşıma,
sistem istatistiklerini taşıma ve gerekirse veriyi
taşıma işlemlerini SQLT otomatik olarak yapıyor.
Test Ortamı Oluşturulması
• Test Case oluşturmak için SQLT XTRACT ya da
XECUTE metodlarını çalıştırmamız sonucu oluşan
sqlt_sNNNNN_tc.zip dosyasını kullanabiliriz.
• Bu dizindeki xpress.sql dosyasını çalıştırarak test
case oluşturmaya başlayabiliriz.
Demo
• Production veritabanımızdaki bir SQL’in Test
Case’ini test veritabanında oluşturalım ve çeşitli
parametre değişikliklerinin sorgu üzerindeki
etkilerini test edelim.
XPLORE Metodu
• Her CBO parametresinin ya da bug fix
değişikliğinin execution plan üzerindeki etkisini
araştırır.
• Tüm CBO (275 civarı) parametre değişikliklerinin
sorgumuza etkisini test eden bir brute-force
saldırısına benzetebiliriz.
• Exadata’ya özgü parametreleri de, ortamımız
Exadata ise teste katabiliriz.
XPLORE Metodu
• XPLORE metodunun çalıştırılabilmesi için daha
önceden bir test case oluşturmuş olmamız gerekir.
• Sqlt/utl/xplore dizinindeki install.sql scripti ile
başlatıyoruz.
• Input olarak test case kullanıcımızı vereceğiz, output
olarak biz zip dosyası verecek.
• Zip dosyasındaki HTML dosyasında CBO parametre
değişikliklerinin sonuçlarını görebileceğiz.
Demo
• XPLORE metodu ile SQL’imizde iyileştirme yapıp
yapamayacağımızı test edelim.
SQLHC Nedir?
• SQLHC (SQL Health Check) stand-alone bir sql
scriptidir.
• SQLT’nin light versiyonu diyebiliriz.
• SQLT kurma imkanımızın olmadığı durumlarda,
kurulum gerektirmeyen ama çıktıları daha sınırlı
bu scripti kullanabiliriz.
• SQLT gibi tek bir SQL üzerinde çalışmaktadır.
SQLHC Kullanımı
• Metalink 1366133.1 nolu dökümandan indirebiliriz.
• SYS olarak bağlanıp sqlhc.sql scriptini
çalıştırıyoruz.
• Input olarak SQL ID giriyoruz.
• SQLT gibi tek bir SQL üzerinde çalışmaktadır.
Demo
• SQLHC aracını bir SQL için çalıştırarak oluşan çıktıları
inceleyelim.
Kaynak
• Blog: http://carlos-sierra.net/
• Kitap: Oracle SQL Tuning with Oracle SQLTXPLAIN
Stelios Charalambides
20 Mart 2013
Apress
Teşekkürler
Katılımınız için
TEŞEKKÜRLER
İletişim: borayuret@gmail.com

similar documents