A lekérdezések végrehajtási tervét az Oracle egy PLAN_TABLE nevű vagy ezzel azonos szerkezetű táblába teszi. 1. PLAN_TABLE létrehozása -> a szerver gépen található script futtatásával /opt/oracle/product/10.2/db_1/rdbms/admin/utlxplan.sql 2. Végrehajtási terv létrehozása a PLAN_TABLE nevű táblába: EXPLAIN PLAN SET statement_id='ut1' -- ut1 -> az utasításnak egyedi nevet adunk FOR SELECT avg(fizetes) FROM dolgozo; 3. Majd a végrehajtási terv fa struktúrájának kiíratása egy hierarchikus lekérdezéssel: SELECT LPAD(' ', 2*(level-1))||operation||' + '||options||' + '||object_name terv FROM plan_table START WITH id = 0 AND statement_id = 'ut1' -- az utasítás neve szerepel itt CONNECT BY PRIOR id = parent_id AND statement_id = 'ut1' -- meg itt ORDER SIBLINGS BY position; A fenti lekérdezéssel a PLAN_TABLE további hasznos oszlopai is kiírathatók. Az alábbi lekérdezésben még az első eredményoszlop (terv) hosszát is korlátoztuk 50 karakterre, hogy könnyebben lehessen szöveges fájlba menteni. SELECT SUBSTR(LPAD(' ', 2*(LEVEL-1))||operation||' + '||options||' + '||object_name, 1, 50) terv, cost, cardinality, bytes, io_cost, cpu_cost FROM plan_table START WITH ID = 0 AND STATEMENT_ID = 'ut1' -- az utasítás neve szerepel itt CONNECT BY PRIOR id = parent_id AND statement_id = 'ut1' -- meg itt ORDER SIBLINGS BY position; Vagy egy package (dbms_xplan) segítségével íratjuk ki a tervet ezek használatához is van két előre adott script (utlxpls.sql, utlxplp.sql) utlxpls.sql tartalma: select plan_table_output from table(dbms_xplan.display('plan_table','ut1','all')); paraméterek: tábla_név, statement_id, részletesség (basic, typical, all, serial) utlxplp.sql tartalma: select plan_table_output from table(dbms_xplan.display());