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