SQL Performance Analyzer - Talip Hakan Öztürk`s ORACLE BLOG
Download
Report
Transcript SQL Performance Analyzer - Talip Hakan Öztürk`s ORACLE BLOG
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.
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
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';
grant read,write on directory talipdir to talip;
--as sysdba
--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
[email protected]
http://taliphakanozturk.wordpress.com
http://forum.ceturk.com/oracle