Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zbierz statystyki schematu za pomocą FND_STATS w EBS 11i i R12

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:jak pogrupować według zakresu?

  2. Twórz i konfiguruj Oracle Linked Server w SQL Server

  3. Wstępnie zbudowana baza danych Oracle do nauki i testowania przy użyciu Oracle Developer VM

  4. TRUNC(liczba) Funkcja w Oracle

  5. Jak korzystać z wirtualnego indeksu w bazie danych Oracle