2026-03-12 20:23:15
This commit is contained in:
45
tpt/tools/optimizer/descxx_install.sql
Normal file
45
tpt/tools/optimizer/descxx_install.sql
Normal file
@@ -0,0 +1,45 @@
|
||||
-- descxx.sql requires the display_raw function which is included in the comment section below.
|
||||
-- the display_raw function is taken from Greg Rahn's blog as I'm too lazy to write one myself
|
||||
-- http://structureddata.org/2007/10/16/how-to-display-high_valuelow_value-columns-from-user_tab_col_statistics/
|
||||
--
|
||||
|
||||
PROMPT Install DISPLAY_RAW helper function into the current schema?
|
||||
PAUSE Press ENTER to install, CTRL+C to cancel...
|
||||
|
||||
create or replace function display_raw (rawval raw, type varchar2)
|
||||
return varchar2
|
||||
is
|
||||
cn number;
|
||||
cv varchar2(128);
|
||||
cd date;
|
||||
cnv nvarchar2(128);
|
||||
cr rowid;
|
||||
cc char(128);
|
||||
begin
|
||||
if (type = 'NUMBER') then
|
||||
dbms_stats.convert_raw_value(rawval, cn);
|
||||
return to_char(cn);
|
||||
elsif (type = 'VARCHAR2') then
|
||||
dbms_stats.convert_raw_value(rawval, cv);
|
||||
return to_char(cv);
|
||||
elsif (type = 'DATE') then
|
||||
dbms_stats.convert_raw_value(rawval, cd);
|
||||
return to_char(cd);
|
||||
elsif (type = 'NVARCHAR2') then
|
||||
dbms_stats.convert_raw_value(rawval, cnv);
|
||||
return to_char(cnv);
|
||||
elsif (type = 'ROWID') then
|
||||
dbms_stats.convert_raw_value(rawval, cr);
|
||||
return to_char(cnv);
|
||||
elsif (type = 'CHAR') then
|
||||
dbms_stats.convert_raw_value(rawval, cc);
|
||||
return to_char(cc);
|
||||
else
|
||||
return 'UNKNOWN DATATYPE';
|
||||
end if;
|
||||
end;
|
||||
/
|
||||
|
||||
grant execute on display_raw to public;
|
||||
create public synonym display_raw for display_raw;
|
||||
|
||||
37
tpt/tools/optimizer/optimizer_features_matrix.sql
Normal file
37
tpt/tools/optimizer/optimizer_features_matrix.sql
Normal file
@@ -0,0 +1,37 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
PROMPT display a matrix of optimizer parameters which change when changing optimizer_features_enabled...
|
||||
|
||||
CREATE TABLE opt_param_matrix(
|
||||
opt_features_enabled VARCHAR2(20) NOT NULL
|
||||
, parameter VARCHAR2(75) NOT NULL
|
||||
, value VARCHAR2(1000)
|
||||
)
|
||||
/
|
||||
|
||||
CREATE TABLE opt_fix_matrix (
|
||||
opt_features_enabled VARCHAR2(20) NOT NULL
|
||||
, bugno NUMBER
|
||||
, value NUMBER
|
||||
, sql_feature VARCHAR2(100)
|
||||
, description VARCHAR2(100)
|
||||
, optimizer_feature_enable VARCHAR2(25)
|
||||
, event NUMBER
|
||||
, is_default NUMBER
|
||||
)
|
||||
/
|
||||
|
||||
BEGIN
|
||||
FOR i IN (select value from v$parameter_valid_values where name = 'optimizer_features_enable' order by ordinal) LOOP
|
||||
EXECUTE IMMEDIATE 'alter session set optimizer_features_enable='''||i.value||'''';
|
||||
EXECUTE IMMEDIATE 'insert into opt_param_matrix select :opt_features_enable, n.ksppinm, c.ksppstvl from sys.x$ksppi n, sys.x$ksppcv c where n.indx=c.indx' using i.value;
|
||||
EXECUTE IMMEDIATE 'insert into opt_fix_matrix select :opt_features_enable, bugno, value, sql_feature, description, optimizer_feature_enable, event, is_default FROM v$session_fix_control WHERE session_id=USERENV(''sid'')' using i.value;
|
||||
END LOOP;
|
||||
END;
|
||||
/
|
||||
|
||||
COMMIT;
|
||||
|
||||
PROMPT To test, run: @cofep.sql 10.2.0.1 10.2.0.4
|
||||
|
||||
25
tpt/tools/optimizer/sqlflame_stacks.txt
Normal file
25
tpt/tools/optimizer/sqlflame_stacks.txt
Normal file
@@ -0,0 +1,25 @@
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY 1
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY 45
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER 20
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS 19
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS 66
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN 635
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN;7 - TABLE ACCESS FULL [TPCDS.DATE_DIM] 3
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN;8 - HASH JOIN 935
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN;8 - HASH JOIN;9 - TABLE ACCESS FULL [TPCDS.HOUSEHOLD_DEMOGRAPHICS] 4
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN;8 - HASH JOIN;10 - HASH JOIN 146490
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN;8 - HASH JOIN;10 - HASH JOIN;11 - HASH JOIN 11104
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN;8 - HASH JOIN;10 - HASH JOIN;11 - HASH JOIN;12 - TABLE ACCESS FULL [TPCDS.WAREHOUSE] 5
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN;8 - HASH JOIN;10 - HASH JOIN;11 - HASH JOIN;13 - HASH JOIN 20788
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN;8 - HASH JOIN;10 - HASH JOIN;11 - HASH JOIN;13 - HASH JOIN;14 - HASH JOIN 3
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN;8 - HASH JOIN;10 - HASH JOIN;11 - HASH JOIN;13 - HASH JOIN;14 - HASH JOIN;15 - TABLE ACCESS FULL [TPCDS.DATE_DIM] 3
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN;8 - HASH JOIN;10 - HASH JOIN;11 - HASH JOIN;13 - HASH JOIN;14 - HASH JOIN;16 - TABLE ACCESS FULL [TPCDS.DATE_DIM] 3
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN;8 - HASH JOIN;10 - HASH JOIN;11 - HASH JOIN;13 - HASH JOIN;17 - PARTITION RANGE ALL 113
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN;8 - HASH JOIN;10 - HASH JOIN;11 - HASH JOIN;13 - HASH JOIN;17 - PARTITION RANGE ALL;18 - TABLE ACCESS FULL [TPCDS.INVENTORY] 5683
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN;8 - HASH JOIN;10 - HASH JOIN;19 - PARTITION RANGE ALL 4635
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;6 - HASH JOIN;8 - HASH JOIN;10 - HASH JOIN;19 - PARTITION RANGE ALL;20 - TABLE ACCESS FULL [TPCDS.CATALOG_SALES] 13397
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;21 - TABLE ACCESS BY INDEX ROWID [TPCDS.CUSTOMER_DEMOGRAPHICS] 2552
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;5 - NESTED LOOPS;21 - TABLE ACCESS BY INDEX ROWID [TPCDS.CUSTOMER_DEMOGRAPHICS];22 - INDEX UNIQUE SCAN [TPCDS.CD_DEMO_PK_IDX] 475
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;23 - TABLE ACCESS BY INDEX ROWID [TPCDS.ITEM] 50
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;4 - NESTED LOOPS;23 - TABLE ACCESS BY INDEX ROWID [TPCDS.ITEM];24 - INDEX UNIQUE SCAN [TPCDS.ITEM_PK_IDX] 167
|
||||
0 - SELECT STATEMENT;1 - SORT ORDER BY;2 - HASH GROUP BY;3 - NESTED LOOPS OUTER;25 - INDEX UNIQUE SCAN [TPCDS.PROMOTION_PK_IDX] 32
|
||||
Reference in New Issue
Block a user