sql >> Database teknologi >  >> RDS >> Oracle

ORA-20001 i R12 Indsaml skemastatistik på 11g(FND_HISTOGRAM_COLS)

"Gather Schema Statistics"-programmet rapporterede følgende fejl i anmodningslogfiler:

Fejl #1:FEJL:Mens GATHER_TABLE_STATS:object_name=GL.JE_BE_LINE_TYPE_MAP***ORA-20001:ugyldigt kolonnenavn eller dublerede kolonner/kolonnegrupper/udtryk i method_opt***Fejl #2:FEJL:Mens GASTARTS_TABLE_name_name =GL.JE_BE_LOGS***ORA-20001:ugyldigt kolonnenavn eller dublerede kolonner/kolonnegrupper/udtryk i method_opt***Fejl #3:FEJL:Mens GATHER_TABLE_STATS:object_name=GL.JE_BE_VAT_REP_RULES***ORA-20001:ugyldig kolonne navn eller dublerede kolonner/kolonnegrupper/udtryk i method_opt***Fejl #4:FEJL:Mens GATHER_TABLE_STATS:object_name=FII.FII_FIN_ITEM_HIERARCHIES***ORA-20001:ugyldigt kolonnenavn eller dublerede kolonner/kolonnegrupper/udtryk** i method_opt** *

Dette skete, hvis der er dublerede eller ugyldige kolonner i FND_HISTOGRAMS_COL

(1) Der er duplikerede rækker i tabellen FND_HISTOGRAM_COLS for tabellen JE_BE_LINE_TYPE_MAP. På grund af dette problem forsøger FND_STATS at indsamle histogramoplysninger ved hjælp af den forkerte kommando, og det mislykkes med ORA-20001-fejl.

Følgende SQL skal returnere én række, ikke to:

SQL>vælg kolonnenavn, nvl(hsize,254) hsizefra FND_HISTOGRAM_COLShvor tabelnavn ='JE_BE_LINE_TYPE_MAP'ordner efter kolonnenavn;COLUMN_NAME HSIZE------------------------------ ------- ----------KILDE 254KILDE 254

Da der er to rækker i histogramtabellen, opretter FND_STATS følgende kommando til at samle statistik på tabellen 'JE_BE_LINE_TYPE_MAP':

dbms_Stats.gather_table_stats(OWNNAME => 'GL', TABNAME=>'JE_BE_LINE_TYPE_MAP',METHOD_OPT=>'FOR ALLE KOLONNER STØRRELSE 1 FOR KOLONNER KILDESTØRRELSE 254 FORKOLONNER KILDESTØRRELSE ); 

Ovenstående kommando vil virke på 9i- og 10G-databaser, men den vil mislykkes med ora-20001-fejl på 11G.

(2) Kolonne findes ikke i tabellen, men er stadig opført i tabellen FND_HISTOGRAMS_COL.

Du kan bruge følgende SQL til at identificere. SQL vil bede om tabelnavnet, brug tabelnavnet fra fejlene. I ovenstående eksempler kan du bruge FII_FIN_ITEM_HIERARCHIES.

vælg hc.table_name, hc.column_name fra FND_HISTOGRAM_COLS hc , dba_tab_columns tcwhere hc.table_name ='&TABLE_NAME'og hc.table_name=tc.table_name (+)og hc.tc.column_name is_column_name is_ null;

Find ud af alle dubletter og/eller forældede rækker i FND_HISTOGRAM_COLS og slet en af ​​dem. Husk at tage en sikkerhedskopi af FND_HISTOGRAM_COLS-tabellen, før du sletter data.
— identificer duplikerede rækker

vælg tabelnavn, kolonnenavn, antal(*) fra FND_HISTOGRAM_COLS-gruppe efter tabelnavn, kolonnenavn, der har tæller(*)> 1;

— Brug ovenstående resultater på følgende SQL til at slette dubletter

slet fra FND_HISTOGRAM_COLShvor table_name ='&TABLE_NAME'og column_name ='&COLUMN_NAME'og rownum=1;

— Brug følgende SQL til at slette forældede rækker

slet fra FND_HISTOGRAM_COLShvor (tabelnavn, kolonnenavn) i(vælg hc.table_name, hc.column_namefrom FND_HISTOGRAM_COLS hc , dba_tab_columns tcwhere hc.table_name ='&TABLE_tabel_navn.tc.tabel_navn)og hct_navn=tct.tct_navn=og hct_navn .column_name (+)og tc.column_name er null);

Læser også
ORA-00900:Ugyldig SQL-sætning
ORA-03113
ora-29283:ugyldig filoperation
ORA-29285:filskrivefejl
ORA-00054


  1. SQL Developer 4.0 udgivet

  2. Mac + virtualenv + pip + postgresql =Fejl:pg_config eksekverbar fil blev ikke fundet

  3. FORALL erklæring med VALUES-OF bundet klausul i Oracle-databasen

  4. Hvordan COS() virker i MariaDB