sql >> Database teknologi >  >> RDS >> Oracle

Indsaml skemastatistik ved hjælp af FND_STATS i EBS 11i og R12

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


  1. Sådan omnummereres primært indeks

  2. Sådan får du alder i år, måneder og dage ved at bruge Oracle

  3. Pearsons korrelationskoefficientformel i SQL

  4. Sådan håndterer du springsekunder i Oracle