sql >> Databasteknik >  >> RDS >> Oracle

ORA-20001 i R12 Samla schemastatistik på 11g(FND_HISTOGRAM_COLS)

"Gather Schema Statistics"-programmet rapporterade följande fel i förfrågningsloggfiler:

Fel #1:FEL:Medan GATHER_TABLE_STATS:object_name=GL.JE_BE_LINE_TYPE_MAP***ORA-20001:ogiltigt kolumnnamn eller dubbletter av kolumner/kolumngrupper/uttryck i method_opt***Fel #2:FEL:Medan GASTARS_TABLE_name_name =GL.JE_BE_LOGS***ORA-20001:ogiltigt kolumnnamn eller dubbletter av kolumner/kolumngrupper/uttryck i method_opt***Fel #3:FEL:Medan GATHER_TABLE_STATS:object_name=GL.JE_BE_VAT_REP_RULES***ORA-20001:ogiltig kolumn namn eller dubbletter av kolumner/kolumngrupper/uttryck i method_opt***Fel #4:FEL:Medan GATHER_TABLE_STATS:object_name=FII.FII_FIN_ITEM_HIERARCHIES***ORA-20001:ogiltigt kolumnnamn eller dubbletter av kolumner/kolumngrupper/uttryck** i method_opt** *

Detta inträffade om det finns dubbletter eller ogiltiga kolumner i FND_HISTOGRAMS_COL

(1 ) Det finns dubbletter av rader i tabellen FND_HISTOGRAM_COLS för tabellen JE_BE_LINE_TYPE_MAP. På grund av detta problem försöker FND_STATS samla in histograminformation med fel kommando och det misslyckas med ORA-20001-fel.

Följande SQL bör returnera en rad, inte två:

SQL>välj kolumnnamn, nvl(hsize,254) hsizefrån FND_HISTOGRAM_COLSdär tabellnamn ='JE_BE_LINE_TYPE_MAP'ordning efter kolumnnamn;COLUMN_NAME HSIZE------------------------------ ------- ----------KÄLLA 254KÄLLA 254

Eftersom det finns två rader i histogramtabellen, skapar FND_STATS följande kommando för att samla statistik om tabellen 'JE_BE_LINE_TYPE_MAP':

dbms_Stats.gather_table_stats(OWNNAME => 'GL', TABNAME=>'JE_BE_LINE_TYPE_MAP',METHOD_OPT=>'FÖR ALLA KOLUMNER STORLEK 1 FÖR KOLUMNER KÄLLSTORLEK 254 FORCOLUMNS KÄLLA STORLEK ); 

Kommandot ovan fungerar på 9i- och 10G-databaser men det kommer att misslyckas med ora-20001-fel på 11G.

(2) Kolumnen finns inte i tabellen men är fortfarande listad i tabellen FND_HISTOGRAMS_COL.

Du kan använda följande SQL för att identifiera. SQL kommer att fråga efter tabellnamnet, använd tabellnamnet från felen. I exemplen ovan kan du använda FII_FIN_ITEM_HIERARCHIES.

välj hc.table_name, hc.column_namefrom FND_HISTOGRAM_COLS hc , dba_tab_columns tcwhere hc.table_name ='&TABLE_NAME'och hc.table_name=tc.table_name (+)och hc.tc.column_name is_column_name is_ null;

Ta reda på alla dubbletter och/eller föråldrade rader i FND_HISTOGRAM_COLS och ta bort en av dem. Kom ihåg att ta en säkerhetskopia av tabellen FND_HISTOGRAM_COLS innan du raderar data.
— identifiera dubbletter av rader

välj tabellnamn, kolumnnamn, count(*) från FND_HISTOGRAM_COLSgrupp efter tabellnamn, kolumnnamn som har count(*)> 1;

— Använd ovanstående resultat på följande SQL för att ta bort dubbletter

ta bort från FND_HISTOGRAM_COLSdär table_name ='&TABLE_NAME'och column_name ='&COLUMN_NAME'och rownum=1;

— Använd följande SQL för att ta bort föråldrade rader

ta bort från FND_HISTOGRAM_COLSdär (tabellnamn, kolumnnamn) i(välj hc.tabellnamn, hc.kolumnnamnfrån FND_HISTOGRAM_COLS hc , dba_tab_kolumner tcdär hc.tabell_namn ='&TABLE_able_um_name.tc.tabel_namn)och hct_name=tc.tct_name .column_name (+) och tc.column_name är null);

Läser också
ORA-00900 :Ogiltig SQL-sats
ORA-03113
ora-29283:ogiltig filoperation
ORA-29285:filskrivfel
ORA-00054


  1. Eftersom SQL Server inte har paket, vad gör programmerare för att komma runt det?

  2. psql:FATAL:Identifiering misslyckades för användarens postgres

  3. Vad är nytt i SQL Server 2019?

  4. Identifiera materialstycksstrukturen (BOM) i databaser