sql >> Databáze >  >> RDS >> Oracle

Shromážděte statistiku schématu pomocí FND_STATS v EBS 11i a R12

Jak shromažďovat statistiky v EBS

  • Aby bylo možné efektivně používat Optimalizátor nákladů, musí být statistiky schématu aktuální. Naštěstí Oracle EBS poskytl některé skripty a souběžné programy (Gather Schema Statistics a Gather Table Statistics), aby tento administrativní úkol usnadnil. FND_STATS je balíček PL/SQL pro aplikace, který má mnoho funkcí, které vám pomohou při této administrativní úloze. Tento balíček lze vyvolat buď z nasazeného souběžného programu, nebo přímo z SQL*Plus.
  • Nedoporučuje se používat DBMS_STATS s databází aplikací Oracle.
  • Při použití souběžného programu „Gather Schema Statistics“ se doporučuje předat pouze parametr názvu schématu a nechat ostatní parametry jako výchozí na výchozí hodnoty. Předaný název schématu může být konkrétní název schématu (např. GL) nebo „ALL“, pokud dáváte přednost shromažďování statistik CBO pro moduly Apps. Tato volba používá metodu „odhad“ s velikostí vzorku 10 % (výchozí).
  • Při použití souběžného programu „Gather Table Statistics“ předejte pouze vlastníka tabulky (název schématu) a název tabulky. Všechny ostatní parametry nechejte automaticky výchozí, kromě případů, kdy je tabulka rozdělená.

Chcete-li ručně spustit FND_STATS z SQL*Plus za účelem shromáždění statistik CBO pro jedno nebo všechna schémata nebo pro konkrétní tabulku, použijte následující syntaxi:

Shromažďování statistik pro konkrétní schéma

exec fnd_stats.gather_schema_statistics('AP');

Shromažďování statistik pro VŠECHNA  schéma v databázi

exec fnd_stats.gather_schema_statistics('ALL');

Shromažďování statistik  pro konkrétní tabulku

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

Další příkaz 

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

Shromažďování statistik na 10 %

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

Shromažďování statistik na 30 %

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

Shromažďování statistik na 25 % se 4 paralelními pracovníky

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

Shromažďování statistik pomocí auto_sample_size

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

Podobné příkazy

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);

U databáze 11g a 12c se doporučuje začít používat GATHER AUTO a AUTO SAMPLE SIZE pro shromažďování statistik

To lze provést také prostřednictvím souběžného požadavku nebo prostřednictvím sql

Shromáždit pro schéma APPLSYS:

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

Shromáždit pro VŠECHNA schémata:(může nebo nemusí chtít)

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

To běží mnohem rychleji než ostatní výše uvedené a je to také velmi přesné. Je rychlejší, protože generuje statistiky pouze pro zastaralé objekty a také s automatickou velikostí vzorku

Pokud chcete vědět, jaké statistiky shromažďování načasování zabralo schéma, můžeme použít níže uvedený dotaz

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 ;

Shromažďování statistik systému pomocí 11i a R12

Pro E-Business Suite, pro jiné databáze než Exadata, se doporučuje shromažďovat systémové statistiky pomocí možnosti NOWORKLOAD, jako v:

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

Ale pro databázi Exadata použijte místo toho následující příkaz:

execute DBMS_STATS.GATHER_SYSTEM_STATS ('EXADATA');

Obvykle je to potřeba provést pouze jednou po jakýchkoli větších architektonických změnách provedených v DB.

Shromažďování statistických údajů ze slovníku pomocí 11i a R12

  • Abyste mohli tento postup provést, musíte mít systémové oprávnění SYSDBA (nebo obojí ANALYZE ANY DICTIONARY a ANALYZE ANY).
execute dbms_stats.gather_schema_stats(''SYS'', method_opt=>''for all columns size 1'', degree=>30,estimate_percent=>100,cascade=>true);
  • Pokud používáte databázi verze 10g/11g, můžete místo toho použít následující syntaxi
execute dbms_stats.gather_dictionary_stats ();
  • Tento postup shromáždí statistiky pro všechna systémová schémata, včetně SYS a SYSTEM, a další volitelná schémata, jako jsou CTXSYS a DRSYS.
  • Toto je obvykle potřeba provést pouze jednou po jakýchkoli větších architektonických změnách provedených v DB.

Tím jsou uzavřeny kroky pro shromažďování statistik optimalizátoru v prostředí Oracle EBS. Doufám, že se vám bude líbit příspěvek na Gather Schema Statistics pomocí FND_STATS v EBS 11i a R12

Také čte
Oracle concurrent Manager
Rady pro optimalizátor
https://docs.oracle.com/cd/E18727_01/doc.121/e12893/T174296T174306.htm


  1. PostgreSQL:role nemá oprávnění se přihlásit

  2. Jak zálohovat databázi postgresql z psql?

  3. Problém s porovnáním řetězců Oracle PL/SQL

  4. Připravené příkazy MySQL