SQL PERFORMANCE ANALYZER
Gündem: SQL Performance Analyzer (SPA) Nedir? SPA Neden gereklidir? SPA çalışma mantığı DEMO Script ile Enterprise Manager ile
SQL Performance Analyzer Nedir? 11g ile gelen bir özelliktir. Donanım değişikliği, işletim sistemine veya DB ye uygulanan upgrade,patch gibi işlemler, SQL Tuning, DB Parametre değişiklikleri v.s işlemlerde sql sorgu performansının test edildiği bir üründür. 1
SPA Neden Gereklidir? Execution planı değişen sqlleri tespit etmek, Performans istatistikleri değişen sqlleri tespit etmek, Son kullanıcı etkilenmeden gerekli önlemleri almak.
SPA Çalışma Mantığı
Senaryo: 9i den 10g ye Upgrade
Real Application Testing Now Available for Earlier Releases BUGS Real Application Testing Now Available for Earlier Releases [ID 560977.1]
1- SQL trace dosyaları oluşturulur. ALTER SESSION SET tracefile_identifier=taliptrace; ALTER SESSION SET SQL_TRACE=TRUE; ALTER SESSION SET EVENTS '10046 trace name context forever, level 12'; ALTER SESSION SET SQL_TRACE=FALSE;
2- Trace dosyaları sadece object id leri tuttuğundan dolayı mapping_table oluşturulur. create table mapping_table as select object_id id, owner, substr(object_name, 1, 30) name from dba_objects where object_type NOT IN ('CONSUMER GROUP', 'EVALUATION CONTEXT', 'FUNCTION', 'INDEXTYPE', 'JAVA CLASS', 'JAVA DATA', 'JAVA RESOURCE', 'LIBRARY', 'LOB', 'OPERATOR', 'PACKAGE', 'PACKAGE BODY', 'PROCEDURE', 'QUEUE', 'RESOURCE PLAN', 'SYNONYM', 'TRIGGER', 'TYPE', 'TYPE BODY') union all select user_id id, username owner, null name from dba_users;
3- Trace dosyaları ve mapping _table 11g ye import edilir
4- Trace dosyalarının kopyalanacağı DIRECTORY oluşturulur create or replace directory talipdir as 'C:\trace'; --as sysdba grant read,write on directory talipdir to talip; --as sysdba 5- 10g ye bağlanacağımız DBLINK oluşturulur CREATE PUBLIC DATABASE LINK taliplink CONNECT TO talip IDENTIFIED BY "talip" USING 'ORA10G' ;
6- Trace dosyalarından SQL Tuning Set oluşturulur declare mycur dbms_sqltune.sqlset_cursor; begin dbms_sqltune.create_sqlset(‘STS'); open mycur for select value(p) from table(dbms_sqltune.select_sql_trace( directory => ‘TALIPDIR', file_name => '%taliptrace', mapping_table_name => 'MAPPING_TABLE', select_mode => dbms_sqltune.SINGLE_EXECUTION)) p; dbms_sqltune.load_sqlset( sqlset_name => ‘STS', populate_cursor => mycur, commit_rows => 1000); close mycur; end; /
Enterprise Manager üzerinde SPA
7- SPA Task oluşturulur dbms_sqlpa.create_analysis_task( task_name => ‘SPA_TASK’, description => ‘Experiment for 9i to 10gR2 upgrade’, sqlset_name => ‘STS’);
8- 9i deki istatistik bilgileri STS den elde edilir dbms_sqlpa.execute_analysis_task( task_name => ‘SPA_TASK’, execution_name => ‘version1’, execution_type => ‘CONVERT SQLSET’, execution_desc => ‘9i sql trial generated from STS’);
9- 10g deki istatistik bilgileri DBLINK kullanılarak elde edilir dbms_sqlpa.execute_analysis_task( task_name => ‘SPA_TASK’, execution_name => ‘version2’, execution_type => ‘TEST EXECUTE’, execution_desc => ‘remote test-execute trial on 10g db’, execution_params => dbms_advisor.arglist( ‘DATABASE_LINK’, ‘TALIPLINK’));
10- 9i ve 10g den elde edilen değerler karşılaştırılır dbms_sqlpa.execute_analysis_task( task_name => ‘SPA_TASK', execution_name => ‘version3', execution_type => ‘COMPARE PERFORMANCE’, execution_params => dbms_advisor.arglist( 'COMPARISON_METRIC', 'CPU_TIME', 'EXECUTION_NAME1', ‘version1', 'EXECUTION_NAME2', ‘version2'), execution_desc => 'Compare 9i SQL Trace Performance ' || 'to 10g Test-Execute for CPU_TIME');
11- HTML rapor elde edilir -- spool reports to files set heading off long 1000000000 longchunksize 10000 echo off; set linesize 1000 trimspool on; -- summary report for CPU_TIME metric spool cpu_summary.html select xmltype(dbms_sqlpa.report_analysis_task( ‘SPA_TASK', /* task_name */ 'html', /* type */ 'typical', /* level */ 'summary', /* section */ null, /* object_id */ 100, /* top_sql */ ‘version3') /* execution_name */ ).getclobval(0,0) from dual; spool off
TEŞEKKÜRLER Talip Hakan ÖZTÜRK Bilgisayar Mühendisi Oracle Certified Professional 10g Oracle Certified Associate 10g Oracle Certified SQL Expert talip_hakan_ozturk@hotmail.com http://taliphakanozturk.wordpress.com http://forum.ceturk.com/oracle