sql >> Databasteknik >  >> RDS >> Oracle

Samla schemastatistik med FND_STATS i EBS 11i och R12

Hur man samlar statistik i EBS

  • För att kunna använda kostnadsbaserad optimerare effektivt måste schemastatistiken vara aktuell. Lyckligtvis har Oracle EBS tillhandahållit några skript och samtidiga program (samla schemastatistik och samla in tabellstatistik) för att göra denna administrativa uppgift enklare. FND_STATS är ett PL/SQL-paket för applikationerna som har många funktioner som hjälper till med denna administrativa uppgift. Det här paketet kan anropas antingen från ett seedat Concurrent Program eller direkt från SQL*Plus.
  • Det rekommenderas inte att använda DBMS_STATS med Oracle Apps Database.
  • När du använder programmet "Gather Schema Statistics" samtidigt, rekommenderas det att du bara skickar parametern schemanamn och låter de andra parametrarna standardvärdena. Schematnamnet som skickas kan vara ett specifikt schemanamn (t.ex. GL) eller "ALLA" om du föredrar att samla in CBO-statistik för Apps-moduler. Detta val använder metoden "uppskattning" med en urvalsstorlek på 10 % (standard).
  • När du använder programmet "Samla in tabellstatistik" samtidigt, skicka bara ägaren till tabellen (schemanamn) och tabellnamnet. Låt alla andra parametrar förinställas automatiskt, förutom när tabellen är en partitionerad tabell.

För att manuellt köra FND_STATS från SQL*Plus för att samla in CBO-statistik för ett eller alla scheman, eller för en viss tabell, använd följande syntax:

För att samla in statistik för ett visst schema

exec fnd_stats.gather_schema_statistics('AP');

För att samla statistik för ALLA  scheman i databasen

exec fnd_stats.gather_schema_statistics('ALL');

För att samla in statistik  för en viss tabell 

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

Några fler kommandon 

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

Att samla statistik på 10 %

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

Att samla statistik på 30 %

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

Att samla statistik på 25 % med 4 parallella arbetare

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

För att samla statistik med auto_sample_size

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

Liknande kommandon

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 och 12c Database rekommenderas det att börja använda GATHER AUTO och AUTO SAMPLE SIZE för att samla in statistik

Detta kan också göras genom samtidig begäran eller genom sql

Samla för APPLSYS-schemat:

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

Samla för ALLA scheman:(kan eller kanske inte vill göra detta)

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

Detta går ganska snabbare till andra ovanstående och det är också mycket exakt. Det är snabbare eftersom det genererar statistik endast för inaktuella objekt och det också med automatisk urvalsstorlek

Om du vill veta vilken tidsinsamlingsstatistik som användes för schemat kan vi använda nedanstående fråga

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 ;

Samlar in systemstatistik med 11i och R12

För E-Business Suite, för icke-Exadata-databaser, rekommenderas att samla systemstatistik med alternativet NOWORKLOAD, som i:

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

Men för Exadata-databasen använd följande kommando istället:

execute DBMS_STATS.GATHER_SYSTEM_STATS ('EXADATA');

Vanligtvis behöver detta bara göras en gång efter några större arkitektoniska ändringar som gjorts i DB.

Samla in ordboksstatistik med 11i och R12

  • Du måste ha systembehörigheten SYSDBA (eller både ANALYSE NÅGON ORDBOK och ANALYSE NÅGON) systembehörighet för att utföra denna procedur.
execute dbms_stats.gather_schema_stats(''SYS'', method_opt=>''for all columns size 1'', degree=>30,estimate_percent=>100,cascade=>true);
  • Om du använder databasversion 10g/11g kan du använda följande syntax istället
execute dbms_stats.gather_dictionary_stats ();
  • Denna procedur samlar in statistik för alla systemscheman, inklusive SYS och SYSTEM, och andra valfria scheman, såsom CTXSYS och DRSYS.
  • Vanligtvis behöver detta bara göras en gång efter några större arkitektoniska ändringar som gjorts i DB.

Detta avslutar stegen för att samla in optimeringsstatistik i Oracle EBS-miljö. Hoppas du gillar inlägg om Samla schemastatistik med FND_STATS i EBS 11i och R12

Läser också
Oracle Concurrent Manager
Optimizertips
https://docs.oracle.com/cd/E18727_01/doc.121/e12893/T174296T174306.htm


  1. SQL räknar alla rader istället för att räkna enskilda rader

  2. Hur man avgör om talet är flytande eller heltal

  3. Hur man installerar MySQL på CentOS 7

  4. Arbeta kring arkitekturfel vid användning av Microsoft Access