=====Oracle 11g - Einen Trace File vom Optimizer beim Erzeugen eines Plan anlegen====== Kann die Entscheidung des Optimizers für einen SQL Ausführungsplan gar nicht mehr nachvollzogen werden, zum Beispiel wann Parallel verwendet wird und wann nicht, kann ein Trace viele Rätselraten ersparen. Ablauf: * Trace Event setzen * SQL absetzen bzw. Ausführungsplan ermitteln lassen * Trace Event zurücksetzen * Trace File auf dem DB Server finden und analysieren #set the event alter session set events 'trace[SQL_Compiler.*] disk=highest'; #create a execution Plan explain plan for select /*+ PARALLEL(4) */ count(*) from gpi.big_tables; #unset the event alter session set events 'trace[SQL_Compiler.*] off'; # get the tracefile location SELECT value as full_trace_file_loc FROM v$diag_info WHERE name = 'Default Trace File' / In Tracefile kann auch gut erkannt werden wie die System Statistiken, Workload und i/o calibrate, in die Berechnung einfließt. ==== Anmerkung Parallel Hint auf einer IOT ==== Bei der Umstellung von einer 11.2.0.3 auf die 11.2.0.4 Version fiehl auf, das der Parallel Hint im Statement mit einer IOT (Index Organised Table) nicht mehr "funktioniert", das immer ein besserer normaler Plan gefunden wurde. **Lösung:** Eine expliziete Anfrage eines Full Tablescans auf die IOT erhöht die Kosten so, das nun der Parallel Pfad als optimal vom optimizer befunden und verwendet wird. select /*+ PARALLEL (data 4) FULL(data) */ .... from bi.journalzeilen data where ....;