Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Sammeln Sie Schemastatistiken mit FND_STATS in EBS 11i und R12

Erfassen von Statistiken in EBS

  • Um Cost Based Optimizer effektiv nutzen zu können, müssen die Schemastatistiken aktuell sein. Glücklicherweise hat Oracle EBS einige Skripte und gleichzeitige Programme (Sammeln von Schemastatistiken und Sammeln von Tabellenstatistiken) bereitgestellt, um diese Verwaltungsaufgabe zu vereinfachen. FND_STATS ist ein PL/SQL-Paket für die Anwendungen mit zahlreichen Funktionen, die diese Verwaltungsaufgabe unterstützen. Dieses Paket kann entweder von einem Seed Concurrent Program oder direkt von SQL*Plus aufgerufen werden.
  • Es wird nicht empfohlen, DBMS_STATS mit Oracle Apps Database zu verwenden.
  • Wenn Sie das gleichzeitige Programm „Schemastatistik sammeln“ verwenden, wird empfohlen, dass Sie nur den Schemanamenparameter übergeben und die anderen Parameter standardmäßig auf ihre Standardwerte setzen. Der übergebene Schemaname kann ein bestimmter Schemaname (z. B. GL) oder „ALL“ sein, wenn Sie es vorziehen, CBO-Statistiken für Apps-Module zu sammeln. Bei dieser Auswahl wird die Methode „Schätzung“ mit einer Stichprobengröße von 10 % (Standard) verwendet.
  • Übergeben Sie bei Verwendung des gleichzeitigen Programms „Gather Table Statistics“ nur den Eigentümer der Tabelle (Schemaname) und den Tabellennamen. Lassen Sie alle anderen Parameter automatisch voreingestellt, außer wenn die Tabelle eine partitionierte Tabelle ist.

Um FND_STATS manuell von SQL*Plus auszuführen, um CBO-Statistiken für ein oder alle Schemas oder für eine bestimmte Tabelle zu sammeln, verwenden Sie die folgende Syntax:

Um Statistiken für ein bestimmtes Schema zu sammeln

exec fnd_stats.gather_schema_statistics('AP');

Um Statistiken für ALLE  Schemas in der Datenbank zu sammeln

exec fnd_stats.gather_schema_statistics('ALL');

Um Statistiken für eine bestimmte Tabelle zu sammeln 

exec fnd_stats.gather_table_stats('GL','GL_JE_LINES');

Noch ein Befehl 

exec apps.fnd_stats.GATHER_TABLE_STATS('GL','GL_POSTING');

Um Statistiken bei 10 % zu sammeln

exec apps.fnd_stats.GATHER_TABLE_STATS('QP','QP_LIST_HEADERS_TL',10);

Um Statistiken bei 30 % zu sammeln

exec apps.fnd_stats.GATHER_TABLE_STATS('CSM','CSM_MTL_SYSTEM_ITEMS_ACC',35);

Statistiken bei 25 % mit 4 parallelen Arbeitern sammeln

exec apps.fnd_stats.GATHER_TABLE_STATS('ONT','OE_TRANSACTION_TYPES_ALL',25,4);

Um Statistiken mit auto_sample_size zu sammeln

exec apps.fnd_stats.GATHER_TABLE_STATS('HR','PAY_RUN_BALANCES',dbms_stats.auto_sample_size);

Ähnliche Befehle

exec apps.fnd_stats.GATHER_TABLE_STATS('HR','PAY_PAYROLL_ACTIONS',10,4);
exec apps.fnd_stats.GATHER_TABLE_STATS('HR',HR_CODES',35);
exec apps.fnd_stats.GATHER_TABLE_STATS('CS','CS_INCIDENT_TYPE_TL');
exec apps.fnd_stats.GATHER_SCHEMA_STATS('GL',25);

Bei 11g- und 12c-Datenbanken wird empfohlen, mit der Verwendung von GATHER AUTO und AUTO SAMPLE SIZE zum Sammeln von Statistiken zu beginnen

Dies kann auch durch gleichzeitige Anfrage oder über SQL erfolgen

Sammeln Sie für das APPLSYS-Schema:

exec apps.fnd_stats.gather_schema_statistics(schemaname=> 'APPLSYS',estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE ,options => 'GATHER AUTO');

Sammeln Sie für ALLE Schemata:(kann dies tun oder nicht)

exec apps.fnd_stats.gather_schema_statistics(schemaname=> 'ALL',estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE ,options => 'GATHER AUTO');

Dies läuft ziemlich schneller als andere oben und es ist auch sehr genau. Es ist schneller, da es nur Statistiken für veraltete Objekte generiert, und das auch noch mit automatischer Stichprobengröße

Wenn Sie wissen möchten, welches Timing die Erfassungsstatistiken für das Schema übernommen haben, können wir die folgende Abfrage verwenden

select owner, min(last_analyzed) , max(last_analyzed) ,( max(last_analyzed) - min(last_analyzed))*24 hours_took
from dba_tables
where last_analyzed is not null
and trunc (last_analyzed) = '&enter_date_DD-MON-YY' -- Example : '01-APR-19'
group by owner
order by hours_took ;

Erfassen von Systemstatistiken mit 11i und R12

Für die E-Business Suite wird für Nicht-Exadata-Datenbanken empfohlen, Systemstatistiken mit der Option NOWORKLOAD zu sammeln, wie in:

execute DBMS_STATS.GATHER_SYSTEM_STATS (gathering_mode => 'NOWORKLOAD');

Verwenden Sie für die Exadata-Datenbank stattdessen den folgenden Befehl:

execute DBMS_STATS.GATHER_SYSTEM_STATS ('EXADATA');

In der Regel muss dies nur einmal nach größeren architektonischen Änderungen an der DB durchgeführt werden.

Sammeln von Wörterbuchstatistiken mit 11i und R12

  • Sie müssen über das Systemprivileg SYSDBA (oder sowohl ANALYZE ANY DICTIONARY als auch ANALYZE ANY) verfügen, um diese Prozedur auszuführen.
execute dbms_stats.gather_schema_stats(''SYS'', method_opt=>''for all columns size 1'', degree=>30,estimate_percent=>100,cascade=>true);
  • Wenn Sie die Datenbankversion 10g/11g verwenden, können Sie stattdessen die folgende Syntax verwenden
execute dbms_stats.gather_dictionary_stats ();
aus
  • Dieses Verfahren sammelt Statistiken für alle Systemschemas, einschließlich SYS und SYSTEM, und andere optionale Schemas, wie CTXSYS und DRSYS.
  • Normalerweise muss dies nur einmal nach größeren architektonischen Änderungen an der Datenbank durchgeführt werden.

Damit sind die Schritte zum Sammeln von Optimierungsstatistiken in der Oracle EBS-Umgebung abgeschlossen. Ich hoffe, Ihnen gefällt der Beitrag zum Sammeln von Schemastatistiken mit FND_STATS in EBS 11i und R12

Liest auch
Oracle Concurrent Manager
Optimierungshinweise
https://docs.oracle.com/cd/E18727_01/doc.121/e12893/T174296T174306.htm