Posts

Posts mit dem Label "Oracle-Statistiken" werden angezeigt.

Incremental Statistics on Partitioned Objects

Ab Oracle 12.2 können die Statistiken z.B. partitionierter Tabellen "inkrementel" erstellt werden. Dadurch entfällt z.B. in DWH-Umgebungen der sehr aufwändige Full-Table-Scan nachdem nur eine Partition geladen wurde. Um incremental statistics nutzen zu können, muss dieses für die Tabelle eingeschaltet werden: Einstellungen prüfen: select     DBMS_STATS.GET_PREFS('ESTIMATE_PERCENT', 'HM19_STAGE', 'I_OKV_FALL_FZ') ESTIMATE_PERCENT   , DBMS_STATS.GET_PREFS('GRANULARITY', 'HM19_STAGE', 'I_OKV_FALL_FZ') GRANULARITY   , DBMS_STATS.GET_PREFS('INCREMENTAL', 'HM19_STAGE', 'I_OKV_FALL_FZ') INCREMENTAL   , DBMS_STATS.GET_PREFS('INCREMENTAL_LEVEL', 'HM19_STAGE', 'I_OKV_FALL_FZ') INCREMENTAL_LEVEL   , DBMS_STATS.GET_PREFS('PUBLISH', 'HM19_STAGE', 'I_OKV_FALL_FZ') PUBLISH   , DBMS_STATS.GET_PREFS('APPROXIMATE_NDV_ALGORITHM', 'HM19_STAGE', 'I_OKV_...

SQL Plan Directives - Oracle 12.1 / Oracle 12.2

ein interessanter Artikel zu SQL Plan Directives findet sich hier: http://dbaparadise.com/2018/03/what-are-sql-plan-directives/ und http://dbaparadise.com/2018/03/what-should-you-do-with-sql-plan-directive-changes-in-12-1/ In Kürze: "SQL Plan Directives are objects that contain additional information and instructions for the optimizer, to generate a “better” execution plan." ... Abzufragen ggfs. über DBA_SQL_PLAN_DIRECTIVES bzw. DBA_SQL_PLAN_DIR_OBJECTS

Statistiken nur für eine Partition erzeugen

Um Statistiken nur für eine Partition zu erzeugen: exec DBMS_STATS.GATHER_TABLE_STATS (ownname => 'MySchema',tabname => 'MyTab',partname => 'P_5',granularity => 'PARTITION'); Hinweis: Dabei werden ggfs. KEINE globalen Statistiken aktualisier.

HYBRID TSM/HWMB in Explain plan

Ab 12c stellt Oracle im Plan mehr Infos zum internen Space-Management bereit. -------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | TQ |IN-OUT| PQ Distrib | -------------------------------------------------------------------------------------------- | 0 | INSERT STATEMENT | | 39 | | | | | 1 | PX COORDINATOR | | | | | | | 2 | PX SEND QC (RANDOM) | :TQ10000 | 39 | Q1,00 | P->S | QC (RAND) | | 3 | LOAD AS SELECT (HYBRID TSM/HWMB)| T1 | | Q1,00 | PCWP | | | 4 | OPTIMIZER STATISTICS GATHERING | | 39 | Q1,00 | PCWP | | | 5 | PX BLOCK ITERATOR | | 39 | Q1,00 | PCWC | | | 6 | TABLE ACCESS FULL | T | 39 | Q1,00 | PCWP ...

Oracle Statistiken dbms_stats.AUTO_SAMPLE_SIZE

Gute Erklärung von Tom Kyte: https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:9523909800346378277 und eine Präse von Jonathan Lewis: https://jonathanlewis.files.wordpress.com/2011/12/one-pass-distinct-sampling-presentation.pdf

Beginning Performance Tuning By Arup Nanda

Im Oracle Magazin gibt es eine Artikelreihe von Arup Nanda zum Thema Performance Tuning: Beginning Performance Tuning bit.ly/SEzR6t bzw. http://www.oracle.com/technetwork/issue-archive/2012/12-jul/o42dba-1566567.html Diagnose the Past bit.ly/U7U5IJ bzw. http://www.oracle.com/technetwork/issue-archive/2012/12-nov/o62dba-1741123.html Active Session History http://www.oracle.com/technetwork/issue-archive/2013/13-jan/o13dba-1871177.html

Oracle und seine Statistiken

Zum Aktualisieren von Tabellenstatistiken: begin     SYS.dbms_stats.delete_table_stats(user, myTbl );     SYS.DBMS_STATS.gather_table_stats (       ownname        => 'LABP'      ,tabname        => 'myTbl'     ,estimate_percent  => 25     ,block_sample      => TRUE -- besser weglassen!   ,method_opt        => 'FOR ALL INDEXED COLUMNS SIZE 254 '     ,degree            => 4     ,cascade           => TRUE     ,no_invalidate     => FALSE); end; / Zum Prüfen, welche Ergebnisse ermittelt wurden: SELECT column_name, num_distinct   ...