Sådan indsamler du statistik i EBS
- For at kunne bruge Cost Based Optimizer effektivt, skal skemastatistikkerne være aktuelle. Heldigvis har Oracle EBS leveret nogle scripts og samtidige programmer (Gather Schema Statistics og Gather Table-statistik) for at gøre denne administrative opgave lettere. FND_STATS er en PL/SQL-pakke til applikationerne, der har adskillige funktioner, der vil hjælpe med denne administrative opgave. Denne pakke kan startes enten fra et seedet Concurrent Program eller direkte fra SQL*Plus.
- Det anbefales ikke at bruge DBMS_STATS med Oracle apps Database.
- Når du bruger det samtidige program 'Gather Schema Statistics', anbefales det, at du kun sender parameteren skemanavn og lader de andre parametre som standard til deres standardværdier. Det skemanavn, der sendes, kan være et specifikt skemanavn (f.eks. GL) eller 'ALLE', hvis du foretrækker at indsamle CBO-statistik for Apps-moduler. Dette valg bruger metoden "estimat" med en stikprøvestørrelse på 10 % (standard).
- Når du bruger programmet "Gather Table Statistics" samtidig, skal du kun videregive ejeren af tabellen (skemanavnet) og tabelnavnet. Lad alle andre parametre være standard automatisk, undtagen når tabellen er en opdelt tabel.
For manuelt at udføre FND_STATS fra SQL*Plus for at indsamle CBO-statistik for et eller alle skemaer eller for en bestemt tabel, skal du bruge følgende syntaks:
For at indsamle statistik for et bestemt skema
exec fnd_stats.gather_schema_statistics('AP');
For at indsamle statistik for ALLE skemaer i databasen
exec fnd_stats.gather_schema_statistics('ALL');
For at indsamle statistik for en bestemt tabel
exec fnd_stats.gather_table_stats('GL','GL_JE_LINES');
Nogle flere kommandoer
exec apps.fnd_stats.GATHER_TABLE_STATS('GL','GL_POSTING');
At indsamle statistik på 10 %
exec apps.fnd_stats.GATHER_TABLE_STATS('QP','QP_LIST_HEADERS_TL',10);
At indsamle statistik på 30 %
exec apps.fnd_stats.GATHER_TABLE_STATS('CSM','CSM_MTL_SYSTEM_ITEMS_ACC',35);
At samle statistik på 25 % med 4 parallelle arbejdere
exec apps.fnd_stats.GATHER_TABLE_STATS('ONT','OE_TRANSACTION_TYPES_ALL',25,4);
At indsamle statistik med auto_sample_size
exec apps.fnd_stats.GATHER_TABLE_STATS('HR','PAY_RUN_BALANCES',dbms_stats.auto_sample_size);
Lignende kommandoer
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);
Med 11g og 12c database anbefales det at begynde at bruge GATHER AUTO og AUTO SAMPLE SIZE til at indsamle statistik
Dette kan også gøres gennem samtidig anmodning eller gennem sql
Saml til APPLSYS-skemaet:
exec apps.fnd_stats.gather_schema_statistics(schemaname=> 'APPLSYS',estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE ,options => 'GATHER AUTO');
Saml for ALLE skemaer:(kan eller ikke ønsker at gøre dette)
exec apps.fnd_stats.gather_schema_statistics(schemaname=> 'ALL',estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE ,options => 'GATHER AUTO');
Dette kører ret hurtigere til andre ovenstående, og det er også meget nøjagtigt. Det er hurtigere, da det kun genererer statistik for forældede objekter, og det også med automatisk prøvestørrelse
Hvis du vil vide, hvornår tidsindsamlingsstatistikken tog på skemaet, kan vi bruge nedenstående forespørgsel
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 ;
Indsamling af systemstatistik med 11i og R12
For E-Business Suite, for ikke-Exadata-databaser, anbefales det at indsamle systemstatistik med NOWORKLOAD-indstillingen, som i:
execute DBMS_STATS.GATHER_SYSTEM_STATS (gathering_mode => 'NOWORKLOAD');
Men til Exadata-databasen skal du bruge følgende kommando i stedet:
execute DBMS_STATS.GATHER_SYSTEM_STATS ('EXADATA');
Dette skal typisk kun gøres én gang efter større arkitektoniske ændringer i DB.
Indsamling af ordbogsstatistik med 11i og R12
- Du skal have systemprivilegiet SYSDBA (eller både ANALYSER ENHVER ORDBOG og ANALYSER ENHVER) systemprivilegium for at udføre denne procedure.
execute dbms_stats.gather_schema_stats(''SYS'', method_opt=>''for all columns size 1'', degree=>30,estimate_percent=>100,cascade=>true);
- Hvis du bruger databaseversion 10g/11g, kan du bruge følgende syntaks i stedet
execute dbms_stats.gather_dictionary_stats ();
- Denne procedure samler statistik for alle systemskemaer, inklusive SYS og SYSTEM, og andre valgfrie skemaer, såsom CTXSYS og DRSYS.
- Det skal typisk kun gøres én gang efter større arkitektoniske ændringer i DB.
Dette afslutter trinene til Indsamling af optimeringsstatistikker i Oracle EBS-miljø. Håber du kan lide indlæg om Indsaml skemastatistik ved hjælp af FND_STATS i EBS 11i og R12
Læser også
Oracle concurrent Manager
Optimeringstip
https://docs.oracle.com/cd/E18727_01/doc.121/e12893/T174296T174306.htm