SQL Plan Execution / DBMS_XPLAN / SQL Monitor
Zur Analyse von Ausführungsplänen gibt es verschiedenste Möglichkeiten.
Gerade bei langlaufenden Statements kann es hilfreich sein zu sehen, was in welcher Reihenfolge ausgeführt wird.
Hint: GATHER_PLAN_STATISTICS -> zum Sammeln von Laufzeitinformationen bei der Ausführung
Um nur den Plan zu sehen:
set linesize 250 pagesize 0 trims on tab off long 1000000
explain plan for
INSERT /*+ APPEND PARALLEL GATHER_PLAN_STATISTICS */
INTO myTab_Ziel (
C1,
C2,
C3
)
SELECT /*+ PARALLEL */
'A',
2,
sysdate
FROM myTab_Quelle
WHERE (1 = 1);
SELECT *
FROM table(DBMS_XPLAN.DISPLAY (FORMAT=>'ALLSTATS LAST ALL +OUTLINE'));
Um aktuelle Session zu sehen:
set linesize 250 pagesize 0 trims on tab off long 1000000
SELECT *
FROM table(DBMS_XPLAN.DISPLAY_CURSOR(
SQL_ID=>'dx1zj8p29p27t',
CURSOR_CHILD_NO=>1,
FORMAT=>'ALL +OUTLINE'))
;
Wenn die Lizenz dafür vorhanden ist:
select
DBMS_SQL_MONITOR.REPORT_SQL_MONITOR
(sql_id=>'dx1zj8p29p27t',report_level=>'ALL') report
from dual;
-> zeigt den aktuellen Fortschritt, wenn GATHER_PLAN_STATISTICS eingeschaltet
Quellen hierzu:
How to Generate a Useful SQL Execution Plan
https://blogs.oracle.com/optimizer/how-to-generate-a-useful-sql-execution-plan
zu DBMS_XPLAN:
Using DBMS_XPLAN.DISPLAY_CURSOR to examine Execution Plans
https://sqlmaria.com/2017/08/08/using-dbms_xplan-display_cursor-to-examine-execution-plans/
zu SQL Monitor (Lizenzpflichtig!)
Getting the most out of Oracle SQL Monitor
https://sqlmaria.com/2017/08/01/getting-the-most-out-of-oracle-sql-monitor/
Gerade bei langlaufenden Statements kann es hilfreich sein zu sehen, was in welcher Reihenfolge ausgeführt wird.
Hint: GATHER_PLAN_STATISTICS -> zum Sammeln von Laufzeitinformationen bei der Ausführung
Um nur den Plan zu sehen:
set linesize 250 pagesize 0 trims on tab off long 1000000
explain plan for
INSERT /*+ APPEND PARALLEL GATHER_PLAN_STATISTICS */
INTO myTab_Ziel (
C1,
C2,
C3
)
SELECT /*+ PARALLEL */
'A',
2,
sysdate
FROM myTab_Quelle
WHERE (1 = 1);
SELECT *
FROM table(DBMS_XPLAN.DISPLAY (FORMAT=>'ALLSTATS LAST ALL +OUTLINE'));
Um aktuelle Session zu sehen:
set linesize 250 pagesize 0 trims on tab off long 1000000
SELECT *
FROM table(DBMS_XPLAN.DISPLAY_CURSOR(
SQL_ID=>'dx1zj8p29p27t',
CURSOR_CHILD_NO=>1,
FORMAT=>'ALL +OUTLINE'))
;
Wenn die Lizenz dafür vorhanden ist:
select
DBMS_SQL_MONITOR.REPORT_SQL_MONITOR
(sql_id=>'dx1zj8p29p27t',report_level=>'ALL') report
from dual;
-> zeigt den aktuellen Fortschritt, wenn GATHER_PLAN_STATISTICS eingeschaltet
Quellen hierzu:
How to Generate a Useful SQL Execution Plan
https://blogs.oracle.com/optimizer/how-to-generate-a-useful-sql-execution-plan
zu DBMS_XPLAN:
Using DBMS_XPLAN.DISPLAY_CURSOR to examine Execution Plans
https://sqlmaria.com/2017/08/08/using-dbms_xplan-display_cursor-to-examine-execution-plans/
zu SQL Monitor (Lizenzpflichtig!)
Getting the most out of Oracle SQL Monitor
https://sqlmaria.com/2017/08/01/getting-the-most-out-of-oracle-sql-monitor/
Kommentare
Kommentar veröffentlichen