sql >> Databáze >  >> RDS >> Oracle

ORA-20001 v R12 Shromáždit statistiky schématu na 11g (FND_HISTOGRAM_COLS)

Program „Gather Schema Statistics“ ohlásil následující chyby v souborech protokolu požadavků:

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***

K tomu došlo, pokud jsou ve FND_HISTOGRAMS_COL

duplicitní nebo neplatné sloupce

(1) V tabulce FND_HISTOGRAM_COLS pro tabulku JE_BE_LINE_TYPE_MAP jsou duplicitní řádky. Kvůli tomuto problému se FND_STATS pokouší získat informace o histogramu pomocí nesprávného příkazu a selže s chybami ORA-20001.

Následující SQL by měl vrátit jeden řádek, nikoli dva:

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

Vzhledem k tomu, že tabulka histogramů obsahuje dva řádky, FND_STATS vytvoří následující příkaz pro shromažďování statistik v tabulce „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');

Výše uvedený příkaz bude fungovat na databázích 9i a 10G, ale selže s chybami ora-20001 na 11G.

(2) Sloupec v tabulce neexistuje, ale je stále uveden v tabulce FND_HISTOGRAMS_COL.

K identifikaci můžete použít následující SQL. SQL vás vyzve k zadání názvu tabulky, použijte název tabulky z chyb. Ve výše uvedených příkladech můžete použít 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;

Najděte všechny duplikáty a/nebo zastaralé řádky ve FND_HISTOGRAM_COLS a smažte jeden z nich. Před smazáním dat si nezapomeňte vytvořit zálohu tabulky FND_HISTOGRAM_COLS.
— identifikujte duplicitní řádky

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

— Použijte výše uvedené výsledky pro následující SQL k odstranění duplikátů

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

— K odstranění zastaralých řádků použijte následující SQL

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
);

Také čte
ORA-00900:Neplatný příkaz SQL
ORA-03113
ora-29283:neplatná operace se souborem
ORA-29285:chyba při zápisu souboru
ORA-00054


  1. Jak mohu použít spouštěče PostgreSQL k ukládání změn (příkazy SQL a změny řádků)

  2. Pochopení důležitosti nastavení paměti v SQL Server

  3. [AKTUALIZOVÁNO 2020-01-23] Microsoft Office 365 Build 1912 porušuje identitu propojených tabulek ODBC

  4. Sloupec vypočítaný z jiného sloupce?