|
Hieronder
geen echte tip of truc, maar gewoon een handig commando
om in een bestandje te bewaren.
Script
dat een explain plan doet van het sql-statement dat
op dat moment in de buffer staat. (De tabel plan_table
moet wel bestaan en bij voorkeur iedere user zijn eigen
versie. Om deze aan te maken kun je <ORAHOME\RDBMSnn\UTLXPLAN.SQL
uitvoeren)
SET
ECHO OFF
SET FEEDBACK OFF
SET TIMING ON
-- Afiedt.buf opslaan
SAVE "AFIEDT.BUF" REPLACE
-- PLAN TABLE leegmaken. Let op:
TRUNCATE doet een impliciete COMMIT
TRUNCATE TABLE PLAN_TABLE;
-- zet statement weer in buffer
GET "AFIEDT.BUF" NOLIST
-- Zet "EXPLAIN PLAN FOR" voor het
statement
0 EXPLAIN PLAN FOR <statement>
-- voer de EXPLAIN uit
RUN
-- Lees het resultaat
SELECT LPAD ( ' ' , 2* (LEVEL-1) ) | |
OPERATION | | ' ' | | OPTIONS | | ' '
| | OBJECT_NAME | | '
' | | OBJECT_TYPE | | ' ' | | OPTIMIZER
| | DECODE (ID, 0, ' Cost=' | |
POSITION) ACCESS_PATH
FROM PLAN_TABLE
START WITH ID = 0 CONNECT BY PRIOR ID =
PARENT_ID;
-- Herstel het originele statement
GET "AFIEDT.BUF" NOLIST
SET FEEDBACK 1
SET ECHO ON
SET TIMING OFF

|