Jak zbierać statystyki w EBS
- Aby efektywnie korzystać z narzędzia Cost Based Optimizer, statystyki schematu muszą być aktualne. Na szczęście firma Oracle EBS udostępniła kilka skryptów i programów współbieżnych (Gather Schema Statistics i Gather Table Statistics), aby ułatwić to zadanie administracyjne. FND_STATS to pakiet PL/SQL dla Aplikacji, który ma wiele funkcji, które pomogą w tym zadaniu administracyjnym. Ten pakiet może być wywoływany z zaszczepionego programu współbieżnego lub bezpośrednio z SQL*Plus.
- Nie zaleca się używania DBMS_STATS z bazą danych aplikacji Oracle.
- W przypadku korzystania z programu współbieżnego „Gather Schema Statistics” zaleca się przekazywanie tylko parametru nazwy schematu, a pozostałym parametrom ustawianie domyślnych wartości. Przekazywana nazwa schematu może być konkretną nazwą schematu (np. GL) lub „WSZYSTKO”, jeśli wolisz zbierać statystyki CBO dla modułów Apps. Ten wybór wykorzystuje metodę „oszacowania” z próbką o wielkości 10% (domyślnie).
- W przypadku korzystania z programu równoległego „Gather Table Statistics” należy przekazać tylko właściciela tabeli (nazwę schematu) i nazwę tabeli. Pozwól, aby wszystkie inne parametry były domyślne automatycznie, z wyjątkiem sytuacji, gdy tabela jest tabelą partycjonowaną.
Aby ręcznie wykonać FND_STATS z SQL*Plus w celu zebrania statystyk CBO dla jednego lub wszystkich schematów lub dla określonej tabeli, użyj następującej składni:
Aby zebrać statystyki dla określonego schematu
exec fnd_stats.gather_schema_statistics('AP');
Aby zebrać statystyki dla WSZYSTKICH schematów w bazie danych
exec fnd_stats.gather_schema_statistics('ALL');
Aby zebrać statystyki dla określonej tabeli
exec fnd_stats.gather_table_stats('GL','GL_JE_LINES');
Więcej poleceń
exec apps.fnd_stats.GATHER_TABLE_STATS('GL','GL_POSTING');
Aby zebrać statystyki na poziomie 10%
exec apps.fnd_stats.GATHER_TABLE_STATS('QP','QP_LIST_HEADERS_TL',10);
Aby zebrać statystyki na 30%
exec apps.fnd_stats.GATHER_TABLE_STATS('CSM','CSM_MTL_SYSTEM_ITEMS_ACC',35);
Aby zebrać statystyki na poziomie 25% z 4 równoległymi pracownikami
exec apps.fnd_stats.GATHER_TABLE_STATS('ONT','OE_TRANSACTION_TYPES_ALL',25,4);
Aby zbierać statystyki za pomocą auto_sample_size
exec apps.fnd_stats.GATHER_TABLE_STATS('HR','PAY_RUN_BALANCES',dbms_stats.auto_sample_size);
Podobne polecenia
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);
W przypadku bazy danych 11g i 12c zaleca się rozpoczęcie używania GATHER AUTO i AUTO SAMPLE SIZE do zbierania statystyk
Można to zrobić również poprzez jednoczesne żądanie lub przez sql
Zbierz dla schematu APPLSYS:
exec apps.fnd_stats.gather_schema_statistics(schemaname=> 'APPLSYS',estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE ,options => 'GATHER AUTO');
Zbierz dla WSZYSTKICH schematów:(może chcieć lub nie)
exec apps.fnd_stats.gather_schema_statistics(schemaname=> 'ALL',estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE ,options => 'GATHER AUTO');
Działa to znacznie szybciej do innych powyższych i jest również bardzo dokładne. Jest szybszy, ponieważ generuje statystyki tylko dla starych obiektów, a także z automatycznym rozmiarem próbki
Jeśli chcesz wiedzieć, jakie statystyki zebrały czas na schemacie, możemy użyć poniższego zapytania
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 ;
Zbieranie statystyk systemu z 11i i R12
W przypadku E-Business Suite, dla baz danych innych niż Exadata zaleca się zbieranie statystyk systemowych za pomocą opcji NOWORKLOAD, jak w:
execute DBMS_STATS.GATHER_SYSTEM_STATS (gathering_mode => 'NOWORKLOAD');
Ale w przypadku bazy danych Exadata użyj zamiast tego następującego polecenia:
execute DBMS_STATS.GATHER_SYSTEM_STATS ('EXADATA');
Zazwyczaj wystarczy to zrobić tylko raz po jakichkolwiek większych zmianach architektonicznych wprowadzonych do bazy danych.
Zbieranie statystyk słownikowych za pomocą 11i i R12
- Aby wykonać tę procedurę, musisz mieć uprawnienia systemowe SYSDBA (lub zarówno ANALYZE ANY SICTIONARY, jak i ANALYZE ANY).
execute dbms_stats.gather_schema_stats(''SYS'', method_opt=>''for all columns size 1'', degree=>30,estimate_percent=>100,cascade=>true);
- Jeśli używasz bazy danych w wersji 10g/11g, możesz zamiast tego użyć następującej składni
execute dbms_stats.gather_dictionary_stats ();
- Ta procedura zbierze statystyki dla wszystkich schematów systemowych, w tym SYS i SYSTEM oraz innych opcjonalnych schematów, takich jak CTXSYS i DRSYS.
- Zazwyczaj wystarczy to zrobić tylko raz po jakichkolwiek większych zmianach architektonicznych wprowadzonych do DB.
Na tym kończy się etap Gathering Optimizer Statistics w środowisku Oracle EBS. Mam nadzieję, że spodoba Ci się post na temat zbierania statystyk schematu za pomocą FND_STATS w EBS 11i i R12
Też czyta
Oracle concurrent Manager
Wskazówki dotyczące Optymalizatora
https://docs.oracle.com/cd/E18727_01/doc.121/e12893/T174296T174306.htm