290 likes | 603 Views
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
E N D
SQL Tuning Uygulamaları: SQLT ve SQLHC Araçlarının Kullanımı Bora YÜRET OracleVeritabanı 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 (MetalinkDoc ID 215187.1) • Oracle 10g/11g/12c versiyonlarında çalışıyor. • Linux / Unix / Windows ortamlarında çalışıyor. • SingleInstance, 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(HealthCheck) 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 OracleSupport’da 215187.1 no’ludökümana gidiyoruz. • sqlt.zip dosyasını indiriyoruz. • Unzip ettikten sonra SYS olarak sqlt/install/sqcreate.sqlscriptini çalıştırıyoruz. • Gerekli kurulum parametrelerini sağlıyoruz.
SQLT Kurulum Parametreleri • OpsiyonelConnect 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.sqlscriptini ç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
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 performansmetrikleri • SQL Monitor • Segment vesession istatistikleri • Tablolar
Ana HTML Raporu İçerikleri(3/3) • İndeksler • CBO istatistikleri • Objeler ve bağımlılıkları • Policy’ler • Metadata
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 wheres.cust_id=c.cust_id and co.country_id=c.country_id and country_namein ( 'Ireland','Denmark','Poland','United Kingdom', 'Germany','France','Spain','TheNetherlands','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 productionveritabanı ü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 productionveritabanı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 • Productionveritabanı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 • HerCBO parametresinin ya da bugfix 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.sqlscripti 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 HealthCheck) stand-alone bir sqlscriptidir. • SQLT’ninlight 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ı • Metalink1366133.1noludökümandanindirebiliriz. • SYS olarak bağlanıp sqlhc.sqlscriptini ç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