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

ORA-20001 in R12 Raccogli le statistiche dello schema su 11g(FND_HISTOGRAM_COLS)

Il programma "Gather Schema Statistics" ha segnalato i seguenti errori nei file di registro delle richieste:

Error #1: ERROR: While GATHER_TABLE_STATS:
object_name=GL.JE_BE_LINE_TYPE_MAP***ORA-20001: invalid column name or duplicate columns/column groups/expressions in method_opt***
Error #2: ERROR: While GATHER_TABLE_STATS:
object_name=GL.JE_BE_LOGS***ORA-20001: invalid column name or duplicate columns/column groups/expressions in method_opt***
Error #3: ERROR: While GATHER_TABLE_STATS:
object_name=GL.JE_BE_VAT_REP_RULES***ORA-20001: invalid column name or duplicate columns/column groups/expressions in method_opt***

Error #4: ERROR: While GATHER_TABLE_STATS: object_name=FII.FII_FIN_ITEM_HIERARCHIES***ORA-20001: invalid column name or duplicate columns/column groups/expressions in method_opt***

Ciò si è verificato se sono presenti colonne duplicate o non valide in FND_HISTOGRAMS_COL

(1 ) Sono presenti righe duplicate nella tabella FND_HISTOGRAM_COLS per la tabella JE_BE_LINE_TYPE_MAP. A causa di questo problema, FND_STATS tenta di raccogliere informazioni sull'istogramma utilizzando il comando sbagliato e non riesce con errori ORA-20001.

Il seguente SQL dovrebbe restituire una riga, non due:

SQL>select column_name, nvl(hsize,254) hsize
from FND_HISTOGRAM_COLS
where table_name = 'JE_BE_LINE_TYPE_MAP'
order by column_name;

COLUMN_NAME HSIZE
------------------------------ ----------
SOURCE 254
SOURCE 254

Poiché nella tabella degli istogrammi sono presenti due righe, FND_STATS crea il seguente comando per raccogliere le statistiche sulla tabella "JE_BE_LINE_TYPE_MAP":

dbms_Stats.gather_table_stats(OWNNAME => 'GL', TABNAME
=>'JE_BE_LINE_TYPE_MAP',METHOD_OPT=>'FOR ALL COLUMNS SIZE 1 FOR COLUMNS SOURCE SIZE 254 FOR
COLUMNS SOURCE SIZE 254');

Il comando precedente funzionerà su database 9i e 10G ma fallirà con errori ora-20001 su 11G.

(2) La colonna non esiste nella tabella ma è ancora elencata nella tabella FND_HISTOGRAMS_COL.

È possibile utilizzare il seguente SQL per identificare. SQL richiederà il nome della tabella, utilizzare il nome della tabella dagli errori. Negli esempi precedenti, puoi utilizzare FII_FIN_ITEM_HIERARCHIES.

select hc.table_name, hc.column_name
from FND_HISTOGRAM_COLS hc , dba_tab_columns tc
where hc.table_name ='&TABLE_NAME'
and hc.table_name= tc.table_name (+)
and hc.column_name = tc.column_name (+)
and tc.column_name is null;

Scopri tutte le righe duplicate e/o obsolete in FND_HISTOGRAM_COLS ed eliminane una. Ricorda di eseguire un backup della tabella FND_HISTOGRAM_COLS prima di eliminare qualsiasi dato.
— identifica le righe duplicate

select table_name, column_name, count(*)
from FND_HISTOGRAM_COLS
group by table_name, column_name
having count(*) > 1;

— Usa i risultati precedenti sul seguente SQL per eliminare i duplicati

delete from FND_HISTOGRAM_COLS
where table_name = '&TABLE_NAME'
and column_name = '&COLUMN_NAME'
and rownum=1;

— Utilizzare il seguente SQL per eliminare le righe obsolete

delete from FND_HISTOGRAM_COLS
where (table_name, column_name) in
(
select hc.table_name, hc.column_name
from FND_HISTOGRAM_COLS hc , dba_tab_columns tc
where hc.table_name ='&TABLE_NAME'
and hc.table_name= tc.table_name (+)
and hc.column_name = tc.column_name (+)
and tc.column_name is null
);

Legge anche
ORA-00900 :Istruzione Sql non valida
ORA-03113
ora-29283:operazione file non valida
ORA-29285:errore di scrittura file
ORA-00054